diff --git a/newsfragments/4217.bugfix.rst b/newsfragments/4217.bugfix.rst new file mode 100644 index 00000000000..7b9146dd50f --- /dev/null +++ b/newsfragments/4217.bugfix.rst @@ -0,0 +1,2 @@ +Fix argument order of ``--config-settings["--build-option"]`` arguments. +This was broken by `. \ No newline at end of file diff --git a/setuptools/build_meta.py b/setuptools/build_meta.py index 0a0abfdae0d..83196aed4b6 100644 --- a/setuptools/build_meta.py +++ b/setuptools/build_meta.py @@ -369,7 +369,7 @@ def prepare_metadata_for_build_wheel( return self._bubble_up_info_directory(metadata_directory, ".dist-info") def _build_with_temp_dir( - self, setup_command, result_extension, result_directory, config_settings + self, setup_command, result_extension, result_directory, config_settings, arbitrary_args=False ): result_directory = os.path.abspath(result_directory) @@ -385,6 +385,8 @@ def _build_with_temp_dir( "--dist-dir", tmp_dist_dir, ] + if arbitrary_args: + sys.argv += self._arbitrary_args(config_settings) with no_install_setup_requires(): self.run_setup() @@ -402,10 +404,11 @@ def build_wheel( ): with suppress_known_deprecation(): return self._build_with_temp_dir( - ['bdist_wheel', *self._arbitrary_args(config_settings)], + ['bdist_wheel'], '.whl', wheel_directory, config_settings, + True, ) def build_sdist(self, sdist_directory, config_settings=None): diff --git a/setuptools/tests/test_build_meta.py b/setuptools/tests/test_build_meta.py index b912194805f..3d957e751ac 100644 --- a/setuptools/tests/test_build_meta.py +++ b/setuptools/tests/test_build_meta.py @@ -720,7 +720,13 @@ def test_editable_without_config_settings(self, tmpdir_cwd): build_backend.build_editable("temp") assert not Path("build").exists() - @pytest.mark.parametrize("config_settings", [{"editable-mode": "strict"}]) + @pytest.mark.parametrize( + "config_settings", + [ + {"--build-option": ["build_ext", "--inplace"]}, + {"editable-mode": "strict"}, + ], + ) def test_editable_with_config_settings(self, tmpdir_cwd, config_settings): path.build({**self._simple_pyproject_example, '_meta': {}}) assert not Path("build").exists()