mirror of https://github.com/pypa/pip
Do not attempt setup.py clean for failed pep517 builds (#7477)
This commit is contained in:
commit
08f61a9b73
|
@ -0,0 +1,2 @@
|
|||
Do not attempt to run ``setup.py clean`` after a ``pep517`` build error,
|
||||
since a ``setup.py`` may not exist in that case.
|
|
@ -231,11 +231,12 @@ def _build_one_inside_env(
|
|||
req.name, e,
|
||||
)
|
||||
# Ignore return, we can't do anything else useful.
|
||||
_clean_one(req, global_options)
|
||||
if not req.use_pep517:
|
||||
_clean_one_legacy(req, global_options)
|
||||
return None
|
||||
|
||||
|
||||
def _clean_one(req, global_options):
|
||||
def _clean_one_legacy(req, global_options):
|
||||
# type: (InstallRequirement, List[str]) -> bool
|
||||
clean_args = make_setuptools_clean_args(
|
||||
req.setup_py_path,
|
||||
|
|
|
@ -8,6 +8,9 @@ from setuptools.build_meta import (get_requires_for_build_sdist,
|
|||
|
||||
|
||||
def build_wheel(*a, **kw):
|
||||
if os.environ.get("PIP_TEST_FAIL_BUILD_WHEEL"):
|
||||
raise RuntimeError("Failing build_wheel, as requested.")
|
||||
|
||||
# Create the marker file to record that the hook was called
|
||||
with open(os.environ['PIP_TEST_MARKER_FILE'], 'wb'):
|
||||
pass
|
||||
|
|
|
@ -1256,6 +1256,7 @@ def test_cleanup_after_failed_wheel(script, with_wheel):
|
|||
shebang = open(script_py, 'r').readline().strip()
|
||||
assert shebang != '#!python', shebang
|
||||
# OK, assert that we *said* we were cleaning up:
|
||||
# /!\ if in need to change this, also change test_pep517_no_legacy_cleanup
|
||||
assert "Running setup.py clean for wheelbrokenafter" in str(res), str(res)
|
||||
|
||||
|
||||
|
|
|
@ -136,3 +136,19 @@ def test_cleanup_prevented_upon_build_dir_exception(script, data):
|
|||
assert result.returncode == PREVIOUS_BUILD_DIR_ERROR, str(result)
|
||||
assert "pip can't proceed" in result.stderr, str(result)
|
||||
assert exists(build_simple), str(result)
|
||||
|
||||
|
||||
@pytest.mark.network
|
||||
def test_pep517_no_legacy_cleanup(script, data, with_wheel):
|
||||
"""Test a PEP 517 failed build does not attempt a legacy cleanup"""
|
||||
to_install = data.packages.joinpath('pep517_wrapper_buildsys')
|
||||
script.environ["PIP_TEST_FAIL_BUILD_WHEEL"] = "1"
|
||||
res = script.pip(
|
||||
'install', '-f', data.find_links, to_install,
|
||||
expect_error=True
|
||||
)
|
||||
# Must not have built the package
|
||||
expected = "Failed building wheel for pep517-wrapper-buildsys"
|
||||
assert expected in str(res)
|
||||
# Must not have attempted legacy cleanup
|
||||
assert "setup.py clean" not in str(res)
|
||||
|
|
Loading…
Reference in New Issue