Skip to content

test(e2e): move the pycross suites into an isolated e2e/crossbuild workspace - #1431

Merged
xangcastle merged 1 commit into
mainfrom
xangcastle/crossbuild-tests
Aug 13, 2026
Merged

xangcastle merged 1 commit into
mainfrom
xangcastle/crossbuild-tests

Conversation

@xangcastle

Copy link
Copy Markdown
Member

Groundwork for the upcoming cross-compilation support, split out to slim down #1363.

The rules_pycross ports (pycross-distutils-probe, pycross-patches,
pycross-pure-python, pycross-setuptools) landed in e2e/cases, but they are
sdist-crossbuild suites: their hubs carry package-specific overrides
(default_build_dependencies, pre/post-install patches, resource_set) that
shouldn't share a module with unrelated cases. This PR moves them into their own
e2e/crossbuild workspace — a minimal MODULE.bazel (rules_py via
local_path_override, bazel_lib, the LLVM toolchain, PBS interpreters
3.12/3.13, uv) — which is where the cross-build test matrix from #1363 will land
next.

Everything moves as pure renames; the wheel-collection tooling
(collect_wheels, check_wheel_tags) comes along since pycross-pure-python
was its last consumer under e2e/cases. CI gets the new workspace in the test
matrix and the macOS smoke job, which previously covered these suites through
e2e/cases. No rule code changes.

🤖 Generated with Claude Code

…rkspace

The rules_pycross ports (pycross-distutils-probe, pycross-patches,
pycross-pure-python, pycross-setuptools) landed in e2e/cases, but they are
sdist-crossbuild suites: their hubs carry package-specific overrides
(default_build_dependencies, pre/post-install patches, resource_set) that
shouldn't share a module with unrelated cases, and the cross-compilation
test matrix will grow around them. Give them their own e2e/crossbuild
workspace with a minimal MODULE.bazel (rules_py via local_path_override,
bazel_lib for collect_wheels, the LLVM toolchain for the native sdist
builds, PBS interpreters 3.12/3.13, uv).

The wheel-collection tooling (collect_wheels.bzl/.py, check_wheel_tags.py)
moves along with them: pycross-pure-python was its last consumer under
e2e/cases. The linux_x86_64 platform and the assert_* helpers stay, they
still have consumers there.

CI gets the new workspace in the test matrix and in the macOS smoke job,
which previously covered these suites through e2e/cases.
@coderabbitai

coderabbitai Bot commented Aug 13, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 4f0b5045-4447-4e66-b0da-3c79590a7c12

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@aspect-workflows

aspect-workflows Bot commented Aug 13, 2026

Copy link
Copy Markdown

✨ Aspect Workflows Tasks

📅 Thu Aug 13 22:28:13 UTC 2026

✅ 44 successful tasks

  • ✅ buildifier · ⏱ 18.7s · 🐙 GitHub Actions · ☑️ Check
    💬 Format complete (clean)
  • ✅ gazelle · ⏱ 17.9s · 🐙 GitHub Actions · ☑️ Check
    💬 Gazelle complete (clean)
  • ✅ test-e2e-bazel-8 [test] · ⏱ 4m 44s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (272/272 passed · 229 cached)
  • ✅ test-e2e-bazel-9 [test] · ⏱ 5m 31s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (266/266 passed)
  • ✅ test-e2e-crossbuild-bazel-8 [test] · ⏱ 1m 12s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (10/10 passed)
  • ✅ test-e2e-crossbuild-bazel-9 [test] · ⏱ 1m 20s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (10/10 passed)
  • ✅ test-e2e-interpreter-build-config-bazel-8 [test] · ⏱ 24.9s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-e2e-interpreter-build-config-bazel-9 [test] · ⏱ 46.3s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-e2e-interpreter-input-validation-bazel-8 [test] · ⏱ 18s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-e2e-interpreter-input-validation-bazel-9 [test] · ⏱ 56.4s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-e2e-interpreter-runtime-metadata-bazel-8 [test] · ⏱ 27.1s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (2/2 passed)
  • ✅ test-e2e-interpreter-runtime-metadata-bazel-9 [test] · ⏱ 1m 37s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (2/2 passed)
  • ✅ test-e2e-interpreter-toolchain-settings-bazel-8 [test] · ⏱ 19.7s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-e2e-interpreter-toolchain-settings-bazel-9 [test] · ⏱ 51.4s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-e2e-rules-proto-grpc-python-bazel-8 [test] · ⏱ 1m 56s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-e2e-rules-proto-grpc-python-bazel-9 [test] · ⏱ 1m 17s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-e2e-rules-python-interop-bazel-8 [test] · ⏱ 51.3s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (15/15 passed)
  • ✅ test-e2e-rules-python-interop-bazel-9 [test] · ⏱ 1m 6s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (15/15 passed)
  • ✅ test-e2e-rules-python-provider-compat-bazel-8 [test] · ⏱ 21.7s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (3/3 passed)
  • ✅ test-e2e-rules-python-provider-compat-bazel-9 [test] · ⏱ 47.4s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (3/3 passed)
  • ✅ test-examples-debugger-bazel-8 [test] · ⏱ 26.3s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-examples-debugger-bazel-9 [test] · ⏱ 38.2s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-examples-dev_deps-bazel-8 [test] · ⏱ 33.9s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-examples-dev_deps-bazel-9 [test] · ⏱ 1m 5s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-examples-django-bazel-8 [test] · ⏱ 29.4s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed · 1 cached)
  • ✅ test-examples-django-bazel-9 [test] · ⏱ 47.1s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed · 1 cached)
  • ✅ test-examples-multi_version-bazel-8 [test] · ⏱ 26.6s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (2/2 passed)
  • ✅ test-examples-multi_version-bazel-9 [test] · ⏱ 43.6s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (2/2 passed)
  • ✅ test-examples-protobuf-bazel-8 [test] · ⏱ 1m 13s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-examples-protobuf-bazel-9 [test] · ⏱ 1m 59s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-examples-py_binary-bazel-8 [test] · ⏱ 20.3s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed · 1 cached)
  • ✅ test-examples-py_binary-bazel-9 [test] · ⏱ 35s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed · 1 cached)
  • ✅ test-examples-py_pex_binary-bazel-8 [test] · ⏱ 22.3s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed · 1 cached)
  • ✅ test-examples-py_pex_binary-bazel-9 [test] · ⏱ 41.7s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed · 1 cached)
  • ✅ test-examples-py_venv-bazel-8 [test] · ⏱ 21s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (3/3 passed · 3 cached)
  • ✅ test-examples-py_venv-bazel-9 [test] · ⏱ 1m 10s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (3/3 passed)
  • ✅ test-examples-pytest-bazel-8 [test] · ⏱ 43.6s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (11/11 passed)
  • ✅ test-examples-pytest-bazel-9 [test] · ⏱ 56.7s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (11/11 passed)
  • ✅ test-examples-uv_pip_compile-bazel-8 [test] · ⏱ 24.2s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-examples-uv_pip_compile-bazel-9 [test] · ⏱ 1m · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-examples-virtual_deps-bazel-8 [test] · ⏱ 25.9s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-examples-virtual_deps-bazel-9 [test] · ⏱ 38.7s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (1/1 passed)
  • ✅ test-root-bazel-8 [test] · ⏱ 2m 30s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (298/298 passed)
  • ✅ test-root-bazel-9 [test] · ⏱ 3m 22s · 🐙 GitHub Actions · ☑️ Check
    💬 Bazel test complete (297/297 passed)

⏱ Last updated Thu Aug 13 22:33:44 UTC 2026 · 📊 GitHub API quota 1,322/15,000 (9% used, resets in 41m)
🚀 Powered by Aspect CLI (v2026.28.2)  |  Aspect Build · X · LinkedIn · YouTube

@github-actions

Copy link
Copy Markdown

py_binary startup benchmark

Version Mean (ms) Median (ms) ± stddev vs BCR vs main Build (s)
BCR 1.11.7 (baseline) 179.059 178.872 ±1.241 46.00
HEAD main 57.594 57.625 ±0.614 -67.8% 10.45
This PR 57.964 57.922 ±0.700 -67.6% +0.6% 7.57

Measured with hyperfine --warmup 5 --runs 50 on Linux
Gate: PR vs HEAD main (threshold: 10%). BCR is shown only as a historical baseline.
Build time: cold bazel build //:bench with isolated output base, no disk cache.

sys.path quality

Version sys.path entries distinct site-packages roots duplicate realpaths
BCR 1.11.7 (baseline) 6 1 0
HEAD main 7 2 0
This PR 7 2 0

sys.path quality measured by bench_syspath inside the assembled venv. Duplicate realpaths indicate symlink redundancy; many distinct site-packages roots suggest an inefficient venv layout.

Bazel analysis benchmark

Version Mean (ms) Median (ms) ± stddev vs BCR vs main Targets Actions
BCR 2.0.0-alpha.5 (baseline) 10710.110 10707.170 ±148.722 301 13672
HEAD main 9469.241 9434.061 ±166.652 -11.6% 301 13540
This PR 9408.412 9394.847 ±107.766 -12.2% -0.6% 301 13540

Measured with hyperfine --warmup 1 --runs 10 on Linux
Gate: PR vs HEAD main (threshold: 10%). BCR is shown only as a historical baseline.
Command: cold bazel build --nobuild //workspace/... with isolated output base, no disk cache.

@xangcastle
xangcastle requested a review from jbedard August 13, 2026 22:47
@xangcastle
xangcastle enabled auto-merge (squash) August 13, 2026 22:48
@xangcastle
xangcastle merged commit bdefa9d into main Aug 13, 2026
97 checks passed
@xangcastle
xangcastle deleted the xangcastle/crossbuild-tests branch August 13, 2026 22:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants