diff --git a/news/6305.feature b/news/6305.feature new file mode 100644 index 00000000000..28637f1d5fc --- /dev/null +++ b/news/6305.feature @@ -0,0 +1,2 @@ +Using ``--build-options`` in a PEP 517 build now fails with an error, +rather than silently ignoring the option. diff --git a/src/pip/_internal/wheel.py b/src/pip/_internal/wheel.py index 0b775430098..1bdbe93ab7e 100644 --- a/src/pip/_internal/wheel.py +++ b/src/pip/_internal/wheel.py @@ -910,6 +910,11 @@ def _build_one_pep517(self, req, tempd, python_tag=None): Returns path to wheel if successfully built. Otherwise, returns None. """ assert req.metadata_directory is not None + if self.build_options: + # PEP 517 does not support --build-options + logger.error('Cannot build wheel for %s using PEP 517 when ' + '--build-options is present' % (req.name,)) + return None try: req.spin_message = 'Building wheel for %s (PEP 517)' % (req.name,) logger.debug('Destination directory: %s', tempd) diff --git a/tests/functional/test_pep517.py b/tests/functional/test_pep517.py index 6235a16e4d9..51f96ed83b8 100644 --- a/tests/functional/test_pep517.py +++ b/tests/functional/test_pep517.py @@ -198,3 +198,17 @@ def test_explicit_setuptools_backend(script, tmpdir, data, common_wheels): project_dir, ) result.assert_installed(name, editable=False) + + +def test_pep517_and_build_options(script, tmpdir, data, common_wheels): + """Backend generated requirements are installed in the build env""" + project_dir, name = make_pyproject_with_setup(tmpdir) + result = script.pip( + 'wheel', '--wheel-dir', tmpdir, + '--build-option', 'foo', + '-f', common_wheels, + project_dir, + expect_error=True + ) + assert 'Cannot build wheel' in result.stderr + assert 'when --build-options is present' in result.stderr