diff --git a/cibuildwheel/windows.py b/cibuildwheel/windows.py index f793acf4..bca658c0 100644 --- a/cibuildwheel/windows.py +++ b/cibuildwheel/windows.py @@ -177,8 +177,14 @@ def pep_518_cp35_workaround(package_dir: Path, env: Dict[str, str]) -> None: if 'build-system' in data else [] ) + if requirements: - shell(['pip', 'install'] + requirements, env=env) + with tempfile.TemporaryDirectory() as d: + reqfile = Path(d) / "requirements.txt" + with reqfile.open("w") as f: + for r in requirements: + print(r, file=f) + call(['pip', 'install', '-r', reqfile], env=env) def build(options: BuildOptions) -> None: diff --git a/test/test_pep518.py b/test/test_pep518.py index 9257f7db..77482f93 100644 --- a/test/test_pep518.py +++ b/test/test_pep518.py @@ -1,6 +1,7 @@ import textwrap from . import test_projects from . import utils +import os basic_project = test_projects.new_c_project( setup_py_add=textwrap.dedent( @@ -27,6 +28,7 @@ basic_project.files[ [build-system] requires = [ "setuptools >= 42", + "setuptools_scm[toml]>=4.1.2", "wheel", "requests==2.22.0; python_version<'3.6'", "requests==2.23.0; python_version>='3.6'" @@ -47,3 +49,10 @@ def test_pep518(tmp_path): # check that the expected wheels are produced expected_wheels = utils.expected_wheels("spam", "0.1.0") assert set(actual_wheels) == set(expected_wheels) + + # These checks ensure an extra file is not created when using custom + # workaround; see https://github.com/joerick/cibuildwheel/issues/421 + assert not (project_dir / "42").exists() + assert not (project_dir / "4.1.2").exists() + + assert len(os.listdir(project_dir)) == len(basic_project.files)