fix(build): allow more time for native wheel builds

Give native payload dependency builds two hours without changing the normal install timeout. Allow three hours for the standalone PM bundle job so setup, cache saves, and smoke tests fit around the build.

Verified seven focused tests, Ruff, and actionlint. Full CI builds were not rerun.
This commit is contained in:
ethernet
2026-09-12 13:20:02 -04:00
parent 2a0b69858d
commit cb17e9ba72
3 changed files with 9 additions and 2 deletions

View File

@@ -55,7 +55,8 @@ jobs:
bundle:
name: bundle ${{ matrix.target.label }}
runs-on: ${{ matrix.target.runner }}
timeout-minutes: 45
# Leave time for setup, cache saves and smoke tests around the wheel build.
timeout-minutes: 180
strategy:
fail-fast: false
matrix:

View File

@@ -195,8 +195,10 @@ def _stage_native(args) -> int:
from pm.package import InstallError
try:
# Cold native wheels need a larger budget than interactive installs.
build_environment(source=repo_dir, python=python_bin, out=venv_dir,
env=env, cache=cache, all_extras=True, sealed=True, explicit=True)
env=env, cache=cache, all_extras=True, sealed=True, explicit=True,
timeout=2 * 60 * 60)
except InstallError as exc:
print(f"✗ venv: {exc}")
return 1

View File

@@ -19,6 +19,8 @@ from scripts.bundles import native
def test_bundle_stages_git_tree_and_runs_native_children_before_manifest(tmp_path, monkeypatch):
import inspect
from hermes_cli.runtime_paths import site_packages
monkeypatch.setattr(Path, "home", lambda: tmp_path / "home")
@@ -63,6 +65,7 @@ def test_bundle_stages_git_tree_and_runs_native_children_before_manifest(tmp_pat
monkeypatch.setattr("pm.extras.ANCHORS", {"payloadtest": "bundle_probe.present"})
import pm
real_build = pm.build_environment
install_timeout = inspect.signature(real_build).parameters["timeout"].default
calls = []
witness = tmp_path / "inventory-python.json"
fail_inventory = False
@@ -70,6 +73,7 @@ def test_bundle_stages_git_tree_and_runs_native_children_before_manifest(tmp_pat
def build(**kwargs):
assert "uv" not in kwargs
assert kwargs["sealed"] is True
assert kwargs.get("timeout", install_timeout) > install_timeout
calls.append(kwargs)
assert not (output / "manifest.json").exists()
marker = json.loads((output / "pm-runtime/pm-runtime.json").read_text())