Skip to content

Commit

Permalink
Merge pull request #1086 from pauldmccarthy/bf/allow-empty
Browse files Browse the repository at this point in the history
fix: Don't error if no new wheels were built
  • Loading branch information
joerick committed Apr 22, 2022
2 parents 496ea9b + f08f08c commit dff6925
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 1 deletion.
3 changes: 3 additions & 0 deletions cibuildwheel/macos.py
Expand Up @@ -275,6 +275,9 @@ def build(options: Options, tmp_path: Path) -> None:
options.globals.build_selector, options.globals.architectures
)

if len(python_configurations) == 0:
return

try:
before_all_options_identifier = python_configurations[0].identifier
before_all_options = options.build_options(before_all_options_identifier)
Expand Down
4 changes: 4 additions & 0 deletions cibuildwheel/util.py
Expand Up @@ -435,6 +435,10 @@ class FileReport(NamedTuple):
FileReport(wheel.name, f"{(wheel.stat().st_size + 1023) // 1024:,d}")
for wheel in final_contents - existing_contents
]

if len(new_contents) == 0:
return

max_name_len = max(len(f.name) for f in new_contents)
max_size_len = max(len(f.size) for f in new_contents)
n = len(new_contents)
Expand Down
3 changes: 3 additions & 0 deletions cibuildwheel/windows.py
Expand Up @@ -234,6 +234,9 @@ def build(options: Options, tmp_path: Path) -> None:
options.globals.build_selector, options.globals.architectures
)

if len(python_configurations) == 0:
return

try:
before_all_options_identifier = python_configurations[0].identifier
before_all_options = options.build_options(before_all_options_identifier)
Expand Down
16 changes: 16 additions & 0 deletions test/test_0_basic.py
Expand Up @@ -59,3 +59,19 @@ def test_build_identifiers(tmp_path):
assert len(expected_wheels) == len(
build_identifiers
), f"{expected_wheels} vs {build_identifiers}"


def test_allow_empty(tmp_path):
project_dir = tmp_path / "project"
basic_project.generate(project_dir)

# Sanity check - --allow-empty should cause a no-op build to complete
# without error
actual_wheels = utils.cibuildwheel_run(
project_dir,
add_env={"CIBW_BUILD": "BUILD_NOTHING_AT_ALL"},
add_args=["--allow-empty"],
)

# check that nothing was built
assert len(actual_wheels) == 0
9 changes: 8 additions & 1 deletion test/utils.py
Expand Up @@ -44,7 +44,9 @@ def cibuildwheel_get_build_identifiers(project_path, env=None, *, prerelease_pyt
return cmd_output.strip().split("\n")


def cibuildwheel_run(project_path, package_dir=".", env=None, add_env=None, output_dir=None):
def cibuildwheel_run(
project_path, package_dir=".", env=None, add_env=None, output_dir=None, add_args=None
):
"""
Runs cibuildwheel as a subprocess, building the project at project_path.
Expand All @@ -57,13 +59,17 @@ def cibuildwheel_run(project_path, package_dir=".", env=None, add_env=None, outp
:param add_env: environment used to update env
:param output_dir: directory where wheels are saved. If None, a temporary
directory will be used for the duration of the command.
:param add_args: Additional command-line arguments to pass to cibuildwheel.
:return: list of built wheels (file names).
"""
if env is None:
env = os.environ.copy()
# If present in the host environment, remove the MACOSX_DEPLOYMENT_TARGET for consistency
env.pop("MACOSX_DEPLOYMENT_TARGET", None)

if add_args is None:
add_args = []

if add_env is not None:
env.update(add_env)

Expand All @@ -77,6 +83,7 @@ def cibuildwheel_run(project_path, package_dir=".", env=None, add_env=None, outp
"--output-dir",
str(output_dir or tmp_output_dir),
str(package_dir),
*add_args,
],
env=env,
cwd=project_path,
Expand Down

0 comments on commit dff6925

Please sign in to comment.