diff --git a/newsfragments/4217.bugfix.rst b/newsfragments/4217.bugfix.rst new file mode 100644 index 0000000000..7b9146dd50 --- /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 0a0abfdae0..2decd2d214 100644 --- a/setuptools/build_meta.py +++ b/setuptools/build_meta.py @@ -369,7 +369,12 @@ 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=(), ): result_directory = os.path.abspath(result_directory) @@ -384,6 +389,7 @@ def _build_with_temp_dir( *setup_command, "--dist-dir", tmp_dist_dir, + *arbitrary_args, ] with no_install_setup_requires(): self.run_setup() @@ -402,10 +408,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, + self._arbitrary_args(config_settings), ) 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 b912194805..9332781764 100644 --- a/setuptools/tests/test_build_meta.py +++ b/setuptools/tests/test_build_meta.py @@ -720,6 +720,16 @@ def test_editable_without_config_settings(self, tmpdir_cwd): build_backend.build_editable("temp") assert not Path("build").exists() + def test_build_wheel_inplace(self, tmpdir_cwd): + config_settings = {"--build-option": ["build_ext", "--inplace"]} + path.build(self._simple_pyproject_example) + build_backend = self.get_build_backend() + assert not Path("build").exists() + Path("build").mkdir() + build_backend.prepare_metadata_for_build_wheel("build", config_settings) + build_backend.build_wheel("build", config_settings) + assert Path("build/proj-42-py3-none-any.whl").exists() + @pytest.mark.parametrize("config_settings", [{"editable-mode": "strict"}]) def test_editable_with_config_settings(self, tmpdir_cwd, config_settings): path.build({**self._simple_pyproject_example, '_meta': {}})