Skip to content

CI: build both bindings majors from main - #3175

Draft
rwgk wants to merge 8 commits into
rwgk/cb12-on-main-03-package-selectionfrom
rwgk/cb12-on-main-04-ci-builds
Draft

rwgk wants to merge 8 commits into
rwgk/cb12-on-main-03-package-selectionfrom
rwgk/cb12-on-main-04-ci-builds

Conversation

@rwgk

@rwgk rwgk commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Build CUDA 12 and CUDA 13 bindings from their source roots on main, replacing branch-sourced maintenance artifacts.

  • For ordinary PRs, reuse unaffected artifacts only from a successful push CI run on the PR base branch at the exact merge-base commit, with the complete required artifact set; otherwise build and test everything. Bindings release tags deliberately select only their matching bindings/metapackage line, without a reusable baseline.
  • For a bindings-only change, rebuild its bindings and matching metapackage, reuse the unchanged merged Core wheel, and retain Core tests against the affected bindings major. Core source changes rebuild both ABI variants.
  • Build both bindings lines and matching metapackages when required; route artifact downloads and source-distribution checks through the selected root.
  • Write each line's build paths and artifact names through the Python bindings_config write-build-env command, with a small shell wrapper for platform setup.
  • Keep concise component/major names in the PR checks view, including meta12 and meta13. The workplan summary exposes its JSON, including exact baseline identity and build/test decisions.
  • Test meaningful outcomes: selected coverage, correct release artifacts, complete merged Core wheels, and SCM milestones. Remove tests tied to Markdown wording, workflow text, or the exact shape of gh commands.

Version Bootstrap and Platform Boundary

Copying maintenance sources does not make their later branch tags ancestors of main. Package versions still follow standard setuptools-scm progression from the selected line's reachable tags. When suitable history is absent, bindings_scm_version.py creates a local preview tag at a validated ancestor in a disposable build checkout. Existing suitable tags take precedence; the helper never pushes or moves tags.

A plain maintenance checkout is not guaranteed to derive the intended next patch version before an appropriate milestone is reachable. The local preview instructions use an independent disposable clone because linked worktrees share tags. Preview targets are coordinated across release branches: if another branch consumes the intended version, reserve the next unused target before building again. Minor-selector changes likewise need a matching milestone. A retained milestone on validated main history, followed by removal of temporary bootstrap calls, remains a separate follow-up; no retained tag is created by this PR.

Windows ARM64 builds omit CUDA 12 because that toolkit has no Windows ARM64 build. Linux and Windows x86-64 retain both registered majors. The next layer supplies the matching test-workflow interfaces.

Stack / Review Boundary

Previous: #3174. Next: #3176. The stack overview lists all six open PRs and the intended workflow.

#3174 through #3176 are intended to land together, with separate review scopes and cumulative CI at #3176; the first two are incomplete intermediate states. Release routing (#3177), maintenance policy (#3178), and the runtime fixes (#3182) follow that group. The complete proposed source tree is at #3182.

Baseline: main b4a5e5513a1f.

Suggested Review Order

  1. ci/tools/compute_ci_plan.py - build/test selection and exact-baseline reuse.
  2. ci/tools/env-vars and bindings_config.py - the small shell wrapper and Python build-environment writer.
  3. .github/workflows/build-wheel.yml - builds, baseline downloads, and Core wheel merging.
  4. ci/tools/bindings_scm_version.py and the Linux / Windows sdist workflows - temporary local version bootstrap and source-package checks.
  5. ci/tools/download-wheels - keep unrelated toolkit lines and test artifacts out of release staging.

Counterpart Review

Inspected both bindings build paths and SCM selectors, their metapackage selection, the merged Core wheel and its two ABI variants, and the Linux/Windows sdist consumers. Both majors use the same planner and environment writer; Windows ARM64 deliberately excludes CUDA 12. The shared backend helper and synchronized test-bootstrap invariants remain intact.

Validation

Cumulative local checks pass in full Git checkouts: 328 CI-tool tests at #3176 and 341 at #3182, with full pre-commit at both heads, including actionlint and Lychee. Git-based workspace discovery is part of that tooling suite.

Planner regressions cover bindings-only Core reuse, matching-major testing, and full rebuilds when an exact baseline is unavailable. Local Git tests cover SCM bootstrap/progression and preservation of existing tags. A direct comparison matched all 26 build-environment values on Linux x86_64 and aarch64.

Full hosted CI passed for the combined #3174-#3176 state: run 40426114619, at feb25b1b3d3c. This intermediate layer is not independently actionlint-clean: callers pass bindings-config, while reusable test workflows still require build-ctk-ver; #3176 completes those interfaces.

Hosted artifact-reuse rehearsals. Two temporary draft PRs use the production resolver unchanged against successful baseline run 40426114619, at feb25b1b3d3c1744b680bf54ff10986ed4e59953. Both actual workplans exactly match the expected selective plans; neither fell back to a full rebuild.

  • CUDA 12 source-change case, #3237: run 40456909677 rebuilt CUDA 12 bindings/metapackage wheels while reusing Core, Pathfinder, and CUDA 13 wheels. All 28 build jobs passed, including bindings and Core Cython test-extension builds on Linux x86-64, Linux ARM64, and Windows. A re-uploaded Linux CPython 3.12 Core wheel is byte-identical to its baseline wheel. All 20 selected GPU tests (13 Linux and 7 Windows) and the final aggregate passed on the first attempt. The workflow is fully green; no fixes or retries were needed.
  • Linux test-workflow case, #3238: run 40460578171 skipped every package-wheel build, downloaded and re-uploaded the baseline packages, and successfully built all selected Cython test extensions and Core test binaries. All 45 expected reused package artifacts exist in the new run. All 42 selected GPU tests (24 x86-64 plus 18 ARM64 Linux rows, covering both CUDA majors) and the final aggregate passed on the first attempt. The seven planned Windows, sdist, and Core API skips were accepted.

Both complete hosted workflows passed on their first attempts, including documentation/link checks and their final aggregates. No fixes or retries were needed. These probes cover the two scenarios above; no separate Core-only or metapackage-only hosted probe is claimed.

Checklist

  • Focused tests protect selection, packaging, and release outcomes that could fail silently.
  • This description identifies the layer's scope and validation boundary.

@rwgk rwgk added this to the cuda.bindings next milestone Oct 21, 2026
@rwgk rwgk added enhancement Any code-related improvements CI/CD CI/CD infrastructure cuda.bindings Everything related to the cuda.bindings module labels Oct 21, 2026
@copy-pr-bot

copy-pr-bot Bot commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@rwgk rwgk self-assigned this Oct 21, 2026
@rwgk
rwgk added this pull request to stack #3179 October 21, 2026 04:48
@rwgk
rwgk force-pushed the rwgk/cb12-on-main-04-ci-builds branch 2 times, most recently from 3feda76 to 0c4765b Compare October 21, 2026 13:57
@rwgk
rwgk force-pushed the rwgk/cb12-on-main-04-ci-builds branch from 0c4765b to 044ddc6 Compare October 21, 2026 14:09
@rwgk
rwgk force-pushed the rwgk/cb12-on-main-04-ci-builds branch from 044ddc6 to 171b820 Compare October 21, 2026 16:51
@rwgk
rwgk force-pushed the rwgk/cb12-on-main-04-ci-builds branch 2 times, most recently from 4deddeb to ccb12ed Compare October 21, 2026 18:22
@rwgk
rwgk force-pushed the rwgk/cb12-on-main-04-ci-builds branch 2 times, most recently from 820c4ca to 560ff7d Compare October 22, 2026 03:52
@mdboom
mdboom force-pushed the rwgk/cb12-on-main-04-ci-builds branch from 560ff7d to 7a269e9 Compare October 23, 2026 15:04
@rwgk
rwgk force-pushed the rwgk/cb12-on-main-04-ci-builds branch from 7a269e9 to 595c0fd Compare October 25, 2026 23:56

@mdboom mdboom left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The most important thing here is to fix the cuda-core rebinding logic.

Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/workflows/ci.yml Outdated
Comment thread ci/tools/compute_ci_plan.py Outdated
Comment thread ci/tools/compute_ci_plan.py Outdated
Comment thread .github/workflows/ci.yml
@rwgk
rwgk force-pushed the rwgk/cb12-on-main-04-ci-builds branch from 595c0fd to ec1fc8a Compare October 26, 2026 21:35
rwgk added 8 commits October 26, 2026 17:21
Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com>
Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com>
Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com>
Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com>
Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com>
Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com>
Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com>
Signed-off-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI/CD CI/CD infrastructure cuda.bindings Everything related to the cuda.bindings module enhancement Any code-related improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants