Skip to content

pytestCheckHook: invoke the pytest command directly#417836

Draft
ShamrockLee wants to merge 3 commits intoNixOS:stagingfrom
ShamrockLee:pytest-execute-directly
Draft

pytestCheckHook: invoke the pytest command directly#417836
ShamrockLee wants to merge 3 commits intoNixOS:stagingfrom
ShamrockLee:pytest-execute-directly

Conversation

@ShamrockLee
Copy link
Contributor

@ShamrockLee ShamrockLee commented Jun 18, 2025

This PR make pytestCheckHook invoke the pytest executable as pytest instead of python -m pytest to prevent additional Python module search paths (such as CWD) from prefixing to sys.paths.1 In addition, pytestCheckHook now adds the source module into disabledTestPaths if they are right under the CWD, preventing import mismatch when using the installed modules for testing.

The installed site packages directory now becomes the first directory to search for modules, and Python packages that need to test against the built and installed package no longer need to cd to another directory or delete the source modules before testing.

Closes #255262

Cc:
@doronbehar who proposed the fix
@FRidh who introduced the original pattern

Things done

  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)
    • sandbox = relaxed
    • sandbox = true
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • Nixpkgs 25.11 Release Notes (or backporting 24.11 and 25.05 Nixpkgs Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
  • NixOS 25.11 Release Notes (or backporting 24.11 and 25.05 NixOS Release notes)
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md, pkgs/README.md, maintainers/README.md and other contributing documentation in corresponding paths.

Add a 👍 reaction to pull requests you find important.

Invoke the pytest executable as `pytest` instead of `python -m pytest`
to prevent additional Python module search paths (such as CWD)
from prefixing to `sys.paths`.[1]

[1]: https://docs.python.org/3/library/sys.html#sys.path
@ShamrockLee
Copy link
Contributor Author

ShamrockLee commented Jun 18, 2025

Tested on the master branch by overriding the dtw-python minus the cd $out workaround to use the changed pytestCheckHook on x86_64-linux NixOS.

This works:

nix build --no-link --print-out-paths -L --impure --expr '
let
  urlNixpkgs = "github:NixOS/nixpkgs";
  nixpkgsBase = builtins.getFlake "${urlNixpkgs}/nixos-unstable";
  lib = nixpkgsBase.lib;
  pkgs = nixpkgsBase.legacyPackages.${builtins.currentSystem};
  nixpkgsChanged = builtins.getFlake "${urlNixpkgs}/refs/pull/417836/head";
  python3PackagesHooks = (
    pkgs.python3.override {
      packageOverrides = import "${nixpkgsChanged}/pkgs/development/interpreters/python/hooks/default.nix";
    }
  ).pkgs;
in (
  pkgs.python3Packages.dtw-python.override {
    inherit (python3PackagesHooks) pytestCheckHook;
  }
).overridePythonAttrs (_: {
  preCheck = "";
})
'

This fails:

nix build --no-link --print-out-paths -L --impure --expr '
let
  urlNixpkgs = "github:NixOS/nixpkgs";
  nixpkgsBase = builtins.getFlake "${urlNixpkgs}/nixos-unstable";
  lib = nixpkgsBase.lib;
  pkgs = nixpkgsBase.legacyPackages.${builtins.currentSystem};
in
pkgs.python3Packages.dtw-python.overridePythonAttrs (_: {
  preCheck = "";
})
'

@github-actions github-actions bot added 10.rebuild-darwin: 501+ This PR causes many rebuilds on Darwin and should normally target the staging branches. 10.rebuild-darwin: 5001+ This PR causes many rebuilds on Darwin and must target the staging branches. 10.rebuild-linux: 501+ This PR causes many rebuilds on Linux and should normally target the staging branches. 10.rebuild-linux: 5001+ This PR causes many rebuilds on Linux and must target the staging branches. 6.topic: python Python is a high-level, general-purpose programming language. 8.has: documentation This PR adds or changes documentation labels Jun 18, 2025
@ShamrockLee ShamrockLee marked this pull request as ready for review June 18, 2025 13:14
@nix-owners nix-owners bot requested review from mweinelt and natsukium June 18, 2025 13:16
@SuperSandro2000
Copy link
Member

Is the plan to do a cleanup of the workaround afterwards?

@ShamrockLee
Copy link
Contributor Author

Is the plan to do a cleanup of the workaround afterwards?

Sure.

@ShamrockLee
Copy link
Contributor Author

ShamrockLee commented Jun 18, 2025

The following is a list of potentially affected expressions found via find -type f -name "*.nix" -exec grep -q pytestCheckHook {} \; -exec grep -q "preCheck" {} \; -exec grep -q "\\(cd\\|pushd\\)" {} \; -print. If the cd is to workaround the issue this PR is addressing, this PR should make it build without the workaround. If the cd is to utilize files in that directory, we need to make sure that this PR doesn't break its build.

./pkgs/by-name/ap/apache-airflow/python-package.nix
./pkgs/by-name/vo/voicevox-engine/package.nix
./pkgs/by-name/du/duplicity/package.nix
./pkgs/by-name/pa/paperless-ngx/package.nix
./pkgs/by-name/pr/pretalx/package.nix
./pkgs/by-name/gd/gdal/package.nix
./pkgs/by-name/cl/cloudsmith-cli/package.nix
./pkgs/by-name/nb/nbstripout/package.nix
./pkgs/by-name/ki/kikit/default.nix
./pkgs/by-name/fa/faraday-agent-dispatcher/package.nix
./pkgs/by-name/ch/checkov/package.nix
./pkgs/by-name/wh/whipper/package.nix
./pkgs/by-name/ad/adafruit-nrfutil/package.nix
./pkgs/by-name/ca/castero/package.nix
./pkgs/by-name/co/cockpit/package.nix
./pkgs/by-name/py/pymol/package.nix
./pkgs/by-name/es/esptool/package.nix
./pkgs/development/tools/hotdoc/default.nix
./pkgs/development/libraries/science/chemistry/simple-dftd3/python.nix
./pkgs/development/python-modules/symbolic/default.nix
./pkgs/development/python-modules/qcs-api-client-common/default.nix
./pkgs/development/python-modules/gymnasium/default.nix
./pkgs/development/python-modules/imagededup/default.nix
./pkgs/development/python-modules/deltalake/default.nix
./pkgs/development/python-modules/mdtraj/default.nix
./pkgs/development/python-modules/pygsl/default.nix
./pkgs/development/python-modules/naked/default.nix
./pkgs/development/python-modules/pyshark/default.nix
./pkgs/development/python-modules/jupyter-packaging/default.nix
./pkgs/development/python-modules/sphinx/default.nix
./pkgs/development/python-modules/django-tree-queries/default.nix
./pkgs/development/python-modules/paramz/default.nix
./pkgs/development/python-modules/pyxnat/default.nix
./pkgs/development/python-modules/sanic/default.nix
./pkgs/development/python-modules/numcodecs/default.nix
./pkgs/development/python-modules/fenics-dolfinx/default.nix
./pkgs/development/python-modules/drf-yasg/default.nix
./pkgs/development/python-modules/airly/default.nix
./pkgs/development/python-modules/pydicom/default.nix
./pkgs/development/python-modules/notebook-shim/default.nix
./pkgs/development/python-modules/pcapy-ng/default.nix
./pkgs/development/python-modules/highdicom/default.nix
./pkgs/development/python-modules/spectral-cube/default.nix
./pkgs/development/python-modules/astropy/default.nix
./pkgs/development/python-modules/dask-yarn/default.nix
./pkgs/development/python-modules/psycopg/default.nix
./pkgs/development/python-modules/astroquery/default.nix
./pkgs/development/python-modules/pyatem/default.nix
./pkgs/development/python-modules/accelerate/default.nix
./pkgs/development/python-modules/clifford/default.nix
./pkgs/development/python-modules/bottle/default.nix
./pkgs/development/python-modules/ascii-magic/default.nix
./pkgs/development/python-modules/graspologic-native/default.nix
./pkgs/development/python-modules/gpuctypes/default.nix
./pkgs/development/python-modules/lap/default.nix
./pkgs/development/python-modules/freetype-py/default.nix
./pkgs/development/python-modules/python-digitalocean/default.nix
./pkgs/development/python-modules/tree-sitter-languages/default.nix
./pkgs/development/python-modules/gssapi/default.nix
./pkgs/development/python-modules/ndindex/default.nix
./pkgs/development/python-modules/plotnine/default.nix
./pkgs/development/python-modules/scikit-misc/default.nix
./pkgs/development/python-modules/scikit-learn/default.nix
./pkgs/development/python-modules/yarl/default.nix
./pkgs/development/python-modules/django-filingcabinet/default.nix
./pkgs/development/python-modules/py-stringmatching/default.nix
./pkgs/development/python-modules/python-redis-lock/default.nix
./pkgs/development/python-modules/qiskit-aer/default.nix
./pkgs/development/python-modules/ffcv/default.nix
./pkgs/development/python-modules/lancedb/default.nix
./pkgs/development/python-modules/intervaltree/default.nix
./pkgs/development/python-modules/tess/default.nix
./pkgs/development/python-modules/pandas/default.nix
./pkgs/development/python-modules/rchitect/default.nix
./pkgs/development/python-modules/starkbank-ecdsa/default.nix
./pkgs/development/python-modules/uarray/default.nix
./pkgs/development/python-modules/pillow-jpls/default.nix
./pkgs/development/python-modules/qutip/default.nix
./pkgs/development/python-modules/cytoolz/default.nix
./pkgs/development/python-modules/ziafont/default.nix
./pkgs/development/python-modules/pymoo/default.nix
./pkgs/development/python-modules/pytest-xdist/default.nix
./pkgs/development/python-modules/freud/default.nix
./pkgs/development/python-modules/h5py/default.nix
./pkgs/development/python-modules/mkl-service/default.nix
./pkgs/development/python-modules/boiboite-opener-framework/default.nix
./pkgs/development/python-modules/debugpy/default.nix
./pkgs/development/python-modules/imbalanced-learn/default.nix
./pkgs/development/python-modules/libpcap/default.nix
./pkgs/development/python-modules/triton/default.nix
./pkgs/development/python-modules/miss-hit/default.nix
./pkgs/development/python-modules/fugashi/default.nix
./pkgs/development/python-modules/miss-hit-core/default.nix
./pkgs/development/python-modules/pygltflib/default.nix
./pkgs/development/python-modules/sunpy/default.nix
./pkgs/development/python-modules/pot/default.nix
./pkgs/development/python-modules/astropy-healpix/default.nix
./pkgs/development/python-modules/pyedflib/default.nix
./pkgs/development/python-modules/tuf/default.nix
./pkgs/development/python-modules/hdmedians/default.nix
./pkgs/development/python-modules/shimmy/default.nix
./pkgs/development/python-modules/heudiconv/default.nix
./pkgs/development/python-modules/dtw-python/default.nix
./pkgs/development/python-modules/wfuzz/default.nix
./pkgs/development/python-modules/rapidfuzz/default.nix
./pkgs/development/python-modules/pyradiomics/default.nix
./pkgs/development/python-modules/datafusion/default.nix
./pkgs/development/python-modules/numexpr/default.nix
./pkgs/development/python-modules/shapely/default.nix
./pkgs/development/python-modules/django-simple-captcha/default.nix
./pkgs/development/python-modules/pyerfa/default.nix
./pkgs/development/python-modules/mitmproxy/default.nix
./pkgs/development/python-modules/skytemple-files/default.nix
./pkgs/development/python-modules/jupytext/default.nix
./pkgs/development/python-modules/fastdtw/default.nix
./pkgs/development/python-modules/numpy/2.nix
./pkgs/development/python-modules/numpy/1.nix
./pkgs/development/python-modules/pyregion/default.nix
./pkgs/development/python-modules/schemdraw/default.nix
./pkgs/development/python-modules/ifcopenshell/default.nix
./pkgs/development/python-modules/bottleneck/default.nix
./pkgs/development/python-modules/cocotb/default.nix
./pkgs/development/python-modules/pytomlpp/default.nix
./pkgs/development/python-modules/cmsis-pack-manager/default.nix
./pkgs/development/python-modules/fairseq/default.nix
./pkgs/development/python-modules/scikit-survival/default.nix
./pkgs/development/python-modules/openslide/default.nix
./pkgs/development/python-modules/python-magic/default.nix
./pkgs/development/python-modules/icdiff/default.nix
./pkgs/development/python-modules/wordcloud/default.nix
./pkgs/development/python-modules/hdbscan/default.nix
./pkgs/development/python-modules/gluonts/default.nix
./pkgs/development/python-modules/redbaron/default.nix
./pkgs/development/python-modules/mahotas/default.nix
./pkgs/development/python-modules/python-etcd/default.nix
./pkgs/development/python-modules/etcd3/default.nix
./pkgs/development/python-modules/mir-eval/default.nix
./pkgs/development/python-modules/nbconvert/default.nix
./pkgs/development/python-modules/pymatgen/default.nix
./pkgs/development/python-modules/duecredit/default.nix
./pkgs/development/python-modules/pytorch-metric-learning/default.nix
./pkgs/development/python-modules/semgrep/default.nix
./pkgs/development/python-modules/pylance/default.nix
./pkgs/development/python-modules/matplotlib/default.nix
./pkgs/development/python-modules/llvmlite/default.nix
./pkgs/development/python-modules/pytensor/default.nix
./pkgs/development/python-modules/gsd/default.nix
./pkgs/development/python-modules/qiskit-terra/default.nix
./pkgs/development/python-modules/spacy/default.nix
./pkgs/development/python-modules/ziamath/default.nix
./pkgs/development/python-modules/pyglet/default.nix
./pkgs/development/python-modules/pymodbus/default.nix
./pkgs/development/python-modules/duckdb/default.nix
./pkgs/development/python-modules/plotpy/default.nix
./pkgs/development/python-modules/pyopencl/default.nix
./pkgs/development/python-modules/mne/default.nix
./pkgs/development/python-modules/scipy/default.nix
./pkgs/development/python-modules/latexify-py/default.nix
./pkgs/development/python-modules/ndspy/default.nix
./pkgs/development/python-modules/schemainspect/default.nix
./pkgs/development/python-modules/jsonfield/default.nix
./pkgs/development/python-modules/numba/default.nix
./pkgs/development/python-modules/python-mapnik/default.nix
./pkgs/development/python-modules/imread/default.nix
./pkgs/development/python-modules/flask-security/default.nix

@doronbehar
Copy link
Contributor

Tested on the master branch by overriding the dtw-python minus the cd $out workaround to use the changed pytestCheckHook on x86_64-linux NixOS.

Could you please also perform a few tests of packages that don't use cd $out? Just to make sure we are not breaking these...

@ShamrockLee
Copy link
Contributor Author

Tested on the master branch by overriding the dtw-python minus the cd $out workaround to use the changed pytestCheckHook on x86_64-linux NixOS.

Could you please also perform a few tests of packages that don't use cd $out? Just to make sure we are not breaking these...

pytest.tests contains one of them. I'll test some others.

@ofborg build python3Packages.pip
@pfborg build python3Packages.build
@ofborg build python3Packages.hatchling
@ofborg build python3Packages.uv
@ofborg build python3Packages.six
@ofborg build python3Packages.numpy

@ShamrockLee
Copy link
Contributor Author

If the cd is to utilize files in that directory, we need to make sure that this PR doesn't break its build.

pretalx and gdal are two of these packages.
@ofborg build pretalx
@ofborg build gdal

@ShamrockLee
Copy link
Contributor Author

This change causes python3Packages.purl to fail during pytestCheckPhase. Here's the (partial) build log:

python3.12-purl> Running phase: pytestCheckPhase
python3.12-purl> Executing pytestCheckPhase
python3.12-purl> pytest flags: ''
python3.12-purl> ============================= test session starts ==============================
python3.12-purl> platform linux -- Python 3.12.10, pytest-8.3.5, pluggy-1.5.0 -- /nix/store/8w718rm43x7z73xhw9d6vh8s4snrq67h-python3-3.12.10/bin/python3.12
python3.12-purl> cachedir: .pytest_cache
python3.12-purl> rootdir: /build/source
python3.12-purl> configfile: pytest.ini
python3.12-purl> collected 169 items / 2 errors
python3.12-purl> ==================================== ERRORS ====================================
python3.12-purl> ______________________ ERROR collecting purl/template.py _______________________
python3.12-purl> import file mismatch:
python3.12-purl> imported module 'purl.template' has this __file__ attribute:
python3.12-purl>   /nix/store/rbl9a5g6i2qdd29wk6cdbkrlal9m3109-python3.12-purl-1.6/lib/python3.12/site-packages/purl/template.py
python3.12-purl> which is not the same as the test file we want to collect:
python3.12-purl>   /build/source/purl/template.py
python3.12-purl> HINT: remove __pycache__ / .pyc files and/or use a unique basename for your test file modules
python3.12-purl> _________________________ ERROR collecting purl/url.py _________________________
python3.12-purl> import file mismatch:
python3.12-purl> imported module 'purl.url' has this __file__ attribute:
python3.12-purl>   /nix/store/rbl9a5g6i2qdd29wk6cdbkrlal9m3109-python3.12-purl-1.6/lib/python3.12/site-packages/purl/url.py
python3.12-purl> which is not the same as the test file we want to collect:
python3.12-purl>   /build/source/purl/url.py
python3.12-purl> HINT: remove __pycache__ / .pyc files and/or use a unique basename for your test file modules
python3.12-purl> =========================== short test summary info ============================
python3.12-purl> ERROR purl/template.py
python3.12-purl> ERROR purl/url.py
python3.12-purl> !!!!!!!!!!!!!!!!!!! Interrupted: 2 errors during collection !!!!!!!!!!!!!!!!!!!!
python3.12-purl> ============================== 2 errors in 0.22s ===============================

The directory layout of the purl project is:

/nix/store/jndlv70z4957bsvxzd3q65x3g9b51cx8-source
├── AUTHORS
├── docs
│   ├── build_docs.sh
│   ├── conf.py
│   ├── index.rst
│   └── Makefile
├── .gitignore
├── LICENSE
├── makefile
├── MANIFEST.in
├── purl
│   ├── __init__.py
│   ├── template.py
│   └── url.py
├── pytest.ini
├── README.rst
├── requirements.txt
├── setup.cfg
├── setup.py
├── tests
│   ├── __init__.py
│   ├── test_expansion.py
│   ├── test_template.py
│   ├── test_url.py
│   └── test_utils.py
├── tox.ini
└── .travis.yml

4 directories, 24 files

The purl module is placed directly under project root instead of, which might be why pytest tries to collect it.

@doronbehar
Copy link
Contributor

@ofborg build ...

You have learned something from this? Since this PR targets staging, I can't see how ofborg would be able to reach building those packages and not timeout, if there are many packages to build on the way to these because we target staging. I think you should be able to craft a nix build -L --impure --expr '' command like before, with an expression that will be evaluated to a list of derivations that get their pytestCheckHook replaced.

This change causes python3Packages.purl to fail during pytestCheckPhase.

I'm afraid that this is the kind of breakages I was afraid of. Maybe @FRidh will be able to explain this phenomena, and justify the choice of python -m pytest. @ShamrockLee Note also that you might want to revert 2f7f71e in this PR too. I'm marking this PR as a draft in the meantime until we have the necessary knowledge to decide what to do.

@doronbehar doronbehar marked this pull request as draft June 20, 2025 14:16
@TomaSajt
Copy link
Contributor

TomaSajt commented Jul 7, 2025

Just wanted to add some extra info:
there are quite a few packages that do not use cd or pushd to go into the $out directory. Instead they delete/move the conflicting package from the cwd.

Also, here's my take on the script to search for potential files (needs ripgrep installed):

rg "pytestCheckHook" -l | xargs rg "preCheck" -l | xargs rg " cd | pushd | rm | mv " -l

Swap out the last -l for -C2 to see the matches and the lines around them

@ShamrockLee
Copy link
Contributor Author

Just wanted to add some extra info:
there are quite a few packages that do not use cd or pushd to go into the $out directory. Instead they delete/move the conflicting package from the cwd.

This inspires me to automatically add "source modules" right under CWD matching the installed modules to disabledTestPaths. This prevents the import-mismatched error and is cleaner than removing the source modules.

This change causes python3Packages.purl to fail during pytestCheckPhase.

I'm afraid that this is the kind of breakages I was afraid of.

python3Packages.purl now builds with the automatic path exclusion by default.

@nixpkgs-ci nixpkgs-ci bot added the 8.has: changelog This PR adds or changes release notes label Jul 15, 2025
@ShamrockLee ShamrockLee force-pushed the pytest-execute-directly branch from a5a9d60 to 1329f42 Compare July 15, 2025 20:30
Copy link
Contributor

@doronbehar doronbehar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Main changes look pretty good, but this needs thorough testing.


: To append additional command-line arguments to `pytest`.

`dontDisableSourceMoudleTestPaths`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe:

Suggested change
`dontDisableSourceMoudleTestPaths`
enableSourceMoudleTestPaths

Comment on lines +37 to +40
- `pytestCheckHook` now invokes the `pytest` command directly instead of using `python3 -m pytest`, preventing the current working directory of the `pytestCheckPhase` (usually the build directory) from becoming the first directory to search for modules.
The installed site packages directory now becomes the first directory to search for modules, and Python packages that need to test against the built and installed package no longer need to `cd` to another directory before testing.

In addition, `pytestCheckHook` now adds the source module into `disabledTestPaths` if they are right under the current working directory, preventing import mismatch when using the installed modules for testing.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd couple these 2 changes to a single commit, and also join the paragraphs.

The installed site packages directory now becomes the first directory to search for modules, and Python packages that need to test against the built and installed package no longer need to `cd` to another directory before testing.

In addition, `pytestCheckHook` now adds the source module into `disabledTestPaths` if they are right under the current working directory, preventing import mismatch when using the installed modules for testing.
Python packages no longer need to delete the source modules before running `pytest`.
Copy link
Contributor

@doronbehar doronbehar Jul 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cd $out is a more common workaround, so I'd mention it too, and before mentioning the deletion.

@ShamrockLee
Copy link
Contributor Author

Bad news: Further tests shows that pytest somehow prepend the absolute path of CWD to the sys.path of the test modules it runs.

By swapping the source module with a stub (a directory with the same name containing nothing but an empty __init__.py)) after installation, the error indicates that the test modules are still using the source module instead of the installed module.

By inserting the line import sys; print(sys.path) dynamically into one of the test modules and disabling pytest capturing with pytestFlags = [ "-s" ], we can see that the first element happen to be '/build/source'.

@nixpkgs-ci nixpkgs-ci bot added the 2.status: merge conflict This PR has merge conflicts with the target branch label Jul 22, 2025
@qbisi
Copy link
Contributor

qbisi commented Oct 4, 2025

By inserting the line import sys; print(sys.path) dynamically into one of the test modules and disabling pytest capturing with pytestFlags = [ "-s" ], we can see that the first element happen to be '/build/source'.

which tests are you running. Maybe there exists tests right under /build/source, hence pytest will append the directory
containing test file to sys.path ?

@ShamrockLee
Copy link
Contributor Author

By inserting the line import sys; print(sys.path) dynamically into one of the test modules and disabling pytest capturing with pytestFlags = [ "-s" ], we can see that the first element happen to be '/build/source'.

which tests are you running. Maybe there exists tests right under /build/source, hence pytest will append the directory
containing test file to sys.path ?

This comment slipped under my radar. I'll prepare a reproducer later.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2.status: merge conflict This PR has merge conflicts with the target branch 6.topic: python Python is a high-level, general-purpose programming language. 8.has: changelog This PR adds or changes release notes 8.has: documentation This PR adds or changes documentation 10.rebuild-darwin: 501+ This PR causes many rebuilds on Darwin and should normally target the staging branches. 10.rebuild-darwin: 5001+ This PR causes many rebuilds on Darwin and must target the staging branches. 10.rebuild-linux: 501+ This PR causes many rebuilds on Linux and should normally target the staging branches. 10.rebuild-linux: 5001+ This PR causes many rebuilds on Linux and must target the staging branches.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants