pip: `pip wheel -r ...` does not pass `config_settings`
Description
pip wheel
correctly passes config_settings
when given a requirement specifier directly, but not when given a requirements file.
Works:
pip wheel --config-settings "setup-args=-Dblas=blas" scipy==1.10.1
Doesn’t work:
echo 'scipy==1.10.1' > r.txt
pip wheel --config-settings "setup-args=-Dblas=blas" -r r.txt
Expected behavior
config_settings
are passed when using pip wheel
with a requirements file
pip version
23.2.1 (also head and older versions)
Python version
3.8
OS
Linux
How to Reproduce
- in an environment with
gfortran
intentionally missing, try to build scipy withpip wheel -r ...
and settingsetup-args
- in the error output (due to missing
gfortran
), confirm whethersetup-args
propagated to themeson
command line
-r
case (broken)
pip install --upgrade pip wheel
echo 'scipy==1.10.1' > r.txt
pip wheel --config-settings "setup-args=-Dblas=blas" -r r.txt
direct specifier case
pip install --upgrade pip wheel
pip wheel --config-settings "setup-args=-Dblas=blas" scipy==1.10.1
Output
-r
case (broken)
-Dblas
is not passed to meson build
+ meson setup --prefix=/usr /tmp/pip-wheel-6j8l4ith/scipy_206aaca2ef1b4369946502a91692a4b9 /tmp/pip-wheel-6j8l4ith/scipy_206aaca2ef1b4369946502a91692a4b9/.mesonpy-oc75antm/build --native-file=/tmp/pip-wheel-6j8l4ith/scipy_206aaca2ef1b4369946502a91692a4b9/.mesonpy-native-file.ini -Ddebug=false -Doptimization=2
direct specifier case
+ meson setup --prefix=/usr /tmp/pip-wheel-jf4yjx_6/scipy_5f743564b93f4f4eaadba75a455c21b7 /tmp/pip-wheel-jf4yjx_6/scipy_5f743564b93f4f4eaadba75a455c21b7/.mesonpy-l963lj1w/build --native-file=/tmp/pip-wheel-jf4yjx_6/scipy_5f743564b93f4f4eaadba75a455c21b7/.mesonpy-native-file.ini -Ddebug=false -Doptimization=2 -Dblas=blas
Code of Conduct
- I agree to follow the PSF Code of Conduct.
About this issue
- Original URL
- State: open
- Created 9 months ago
- Reactions: 1
- Comments: 20 (6 by maintainers)
The specific one you want is https://github.com/pypa/setuptools/issues/3518
I feel that config settings should not be merged (perferrably with a warning), but if config settings are only provided from one source that should be respected instead of being “cancelled”.