Merge pull request #1086 from pauldmccarthy/bf/allow-empty
fix: Don't error if no new wheels were built
This commit is contained in:
@@ -275,6 +275,9 @@ def build(options: Options, tmp_path: Path) -> None:
|
|||||||
options.globals.build_selector, options.globals.architectures
|
options.globals.build_selector, options.globals.architectures
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if len(python_configurations) == 0:
|
||||||
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
before_all_options_identifier = python_configurations[0].identifier
|
before_all_options_identifier = python_configurations[0].identifier
|
||||||
before_all_options = options.build_options(before_all_options_identifier)
|
before_all_options = options.build_options(before_all_options_identifier)
|
||||||
|
|||||||
@@ -435,6 +435,10 @@ def print_new_wheels(msg: str, output_dir: Path) -> Iterator[None]:
|
|||||||
FileReport(wheel.name, f"{(wheel.stat().st_size + 1023) // 1024:,d}")
|
FileReport(wheel.name, f"{(wheel.stat().st_size + 1023) // 1024:,d}")
|
||||||
for wheel in final_contents - existing_contents
|
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_name_len = max(len(f.name) for f in new_contents)
|
||||||
max_size_len = max(len(f.size) for f in new_contents)
|
max_size_len = max(len(f.size) for f in new_contents)
|
||||||
n = len(new_contents)
|
n = len(new_contents)
|
||||||
|
|||||||
@@ -234,6 +234,9 @@ def build(options: Options, tmp_path: Path) -> None:
|
|||||||
options.globals.build_selector, options.globals.architectures
|
options.globals.build_selector, options.globals.architectures
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if len(python_configurations) == 0:
|
||||||
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
before_all_options_identifier = python_configurations[0].identifier
|
before_all_options_identifier = python_configurations[0].identifier
|
||||||
before_all_options = options.build_options(before_all_options_identifier)
|
before_all_options = options.build_options(before_all_options_identifier)
|
||||||
|
|||||||
@@ -59,3 +59,19 @@ def test_build_identifiers(tmp_path):
|
|||||||
assert len(expected_wheels) == len(
|
assert len(expected_wheels) == len(
|
||||||
build_identifiers
|
build_identifiers
|
||||||
), f"{expected_wheels} vs {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
|
||||||
|
|||||||
+8
-1
@@ -44,7 +44,9 @@ def cibuildwheel_get_build_identifiers(project_path, env=None, *, prerelease_pyt
|
|||||||
return cmd_output.strip().split("\n")
|
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.
|
Runs cibuildwheel as a subprocess, building the project at project_path.
|
||||||
|
|
||||||
@@ -57,6 +59,7 @@ def cibuildwheel_run(project_path, package_dir=".", env=None, add_env=None, outp
|
|||||||
:param add_env: environment used to update env
|
:param add_env: environment used to update env
|
||||||
:param output_dir: directory where wheels are saved. If None, a temporary
|
:param output_dir: directory where wheels are saved. If None, a temporary
|
||||||
directory will be used for the duration of the command.
|
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).
|
:return: list of built wheels (file names).
|
||||||
"""
|
"""
|
||||||
if env is None:
|
if env is None:
|
||||||
@@ -64,6 +67,9 @@ def cibuildwheel_run(project_path, package_dir=".", env=None, add_env=None, outp
|
|||||||
# If present in the host environment, remove the MACOSX_DEPLOYMENT_TARGET for consistency
|
# If present in the host environment, remove the MACOSX_DEPLOYMENT_TARGET for consistency
|
||||||
env.pop("MACOSX_DEPLOYMENT_TARGET", None)
|
env.pop("MACOSX_DEPLOYMENT_TARGET", None)
|
||||||
|
|
||||||
|
if add_args is None:
|
||||||
|
add_args = []
|
||||||
|
|
||||||
if add_env is not None:
|
if add_env is not None:
|
||||||
env.update(add_env)
|
env.update(add_env)
|
||||||
|
|
||||||
@@ -77,6 +83,7 @@ def cibuildwheel_run(project_path, package_dir=".", env=None, add_env=None, outp
|
|||||||
"--output-dir",
|
"--output-dir",
|
||||||
str(output_dir or tmp_output_dir),
|
str(output_dir or tmp_output_dir),
|
||||||
str(package_dir),
|
str(package_dir),
|
||||||
|
*add_args,
|
||||||
],
|
],
|
||||||
env=env,
|
env=env,
|
||||||
cwd=project_path,
|
cwd=project_path,
|
||||||
|
|||||||
Reference in New Issue
Block a user