Skip to content

ci: build wheel_base on the ubi8 base (public manylinux + NG… (#1991) - #2009

Merged
nv-nmailhot merged 1 commit into
release/1.4.0from
nmailhto-cp-ubi8
Jul 29, 2026
Merged

nv-nmailhot merged 1 commit into
release/1.4.0from
nmailhto-cp-ubi8

Conversation

@nv-nmailhot

Copy link
Copy Markdown
Contributor

…C CUDA)

Incorporates the "ubi8" base image discussed on #1968: the wheel_base deps stage now builds on the public PyPA manylinux_2_28 image and COPYs CUDA from an el8/ubi8 NGC CUDA devel image
(nvcr.io/nvidia/cuda:*-devel-ubi8), instead of a combined internal manylinux+CUDA base.

  • Dockerfile.manylinux: add the Option-B header (cuda donor stage + quay manylinux wheel_base + COPY --from=cuda + gcc-toolset-14 + CMake 4.x policy). Keeps build/ci: backport wheel-build CI and UCX spcx + Infinia plugin bundling to release/1.4.0 #1968's two-stage wheel_base/wheel caching split and the opt-in --build-infinia / --build-ucx-spcx-plugin blocks untouched. INFINIA stays opt-in (host-pull COPY) — not the bundled-default FROM stage.
  • build-container.sh: restore --cuda-version (MAJOR.MINOR) so local/release full builds drive the torch cuXXX index + cu12/cu13 meta-wheel split.
  • build-wheel-matrix.yaml: point BASE_IMAGE/BASE_TAG at the ubi8 CUDA image, add CUDA_VERSION + MANYLINUX_VERSION, pass --cuda-version, and forward CUDA_VERSION/MANYLINUX_VERSION to the wheel_base cache build.
  • Bump CI_IMAGE_TAG in all six matrix YAMLs (cidemo-init.sh requires it when a CI file such as Dockerfile.manylinux changes).

Note: only the ci-demo wheel_base cache build pulls nvcr.io/quay.io; per-PR wheel builds pull the cached wheel_base from Artifactory. If the blossom runner cannot reach nvcr.io/quay.io, repoint BASE_IMAGE at an Artifactory ubi8 mirror (same ubi8 tag).

What?

Describe what this PR is doing.

Why?

Justification for the PR. If there is an existing issue/bug, please reference it. For
bug fixes, the 'Why?' and 'What?' can be merged into a single item.

How?

It is optional, but for complex PRs, please provide information about the design,
architecture, approach, etc.

Summary by CodeRabbit

  • Chores
  • Updated wheel builds to use pinned CUDA and manylinux versions for more consistent, repeatable packaging.
  • Added a selectable CUDA version option for containerized wheel builds (defaulting to CUDA 13.0).
  • Improved build compatibility by aligning the toolchain/CMake behavior with newer environments.
  • Refreshed the wheel build base image approach while preserving CUDA support for the build.

What?

Describe what this PR is doing.

Why?

Justification for the PR. If there is an existing issue/bug, please reference it. For
bug fixes, the 'Why?' and 'What?' can be merged into a single item.

How?

It is optional, but for complex PRs, please provide information about the design,
architecture, approach, etc.

…C CUDA)

Incorporates the "ubi8" base image discussed on #1968: the wheel_base
deps stage now builds on the public PyPA manylinux_2_28 image and COPYs
CUDA from an el8/ubi8 NGC CUDA devel image
(nvcr.io/nvidia/cuda:*-devel-ubi8), instead of a combined internal
manylinux+CUDA base.

- Dockerfile.manylinux: add the Option-B header (cuda donor stage + quay
manylinux wheel_base + COPY --from=cuda + gcc-toolset-14 + CMake 4.x
policy). Keeps #1968's two-stage wheel_base/wheel caching split and the
opt-in --build-infinia / --build-ucx-spcx-plugin blocks untouched.
INFINIA stays opt-in (host-pull COPY) — not the bundled-default FROM
stage.
- build-container.sh: restore --cuda-version (MAJOR.MINOR) so
local/release full builds drive the torch cuXXX index + cu12/cu13
meta-wheel split.
- build-wheel-matrix.yaml: point BASE_IMAGE/BASE_TAG at the ubi8 CUDA
image, add CUDA_VERSION + MANYLINUX_VERSION, pass --cuda-version, and
forward CUDA_VERSION/MANYLINUX_VERSION to the wheel_base cache build.
- Bump CI_IMAGE_TAG in all six matrix YAMLs (cidemo-init.sh requires it
when a CI file such as Dockerfile.manylinux changes).

Note: only the ci-demo wheel_base cache build pulls nvcr.io/quay.io;
per-PR wheel builds pull the cached wheel_base from Artifactory. If the
blossom runner cannot reach nvcr.io/quay.io, repoint BASE_IMAGE at an
Artifactory ubi8 mirror (same ubi8 tag).

## What?
_Describe what this PR is doing._

## Why?
_Justification for the PR. If there is an existing issue/bug, please
reference it. For
bug fixes, the 'Why?' and 'What?' can be merged into a single item._

## How?
_It is optional, but for complex PRs, please provide information about
the design,
architecture, approach, etc._


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Chores**
* Updated wheel builds to use pinned CUDA and manylinux versions for
more consistent, repeatable packaging.
* Added a selectable CUDA version option for containerized wheel builds
(defaulting to CUDA 13.0).
* Improved build compatibility by aligning the toolchain/CMake behavior
with newer environments.
* Refreshed the wheel build base image approach while preserving CUDA
support for the build.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
@nv-nmailhot
nv-nmailhot requested review from a team as code owners July 29, 2026 22:56
@nv-nmailhot
nv-nmailhot merged commit 5f39b78 into release/1.4.0 Jul 29, 2026
13 of 14 checks passed
@nv-nmailhot
nv-nmailhot deleted the nmailhto-cp-ubi8 branch July 29, 2026 22:56
NirWolfer added a commit that referenced this pull request Jul 30, 2026
## Summary

The release wheel build fails in the `--build-ucx-spcx-plugin` step with
`dpacc error : Unknown option '-std=gnu23'` (exit 255), breaking every
python/arch cell.

Since #2009 pinned `gcc-toolset-14` ahead of the system gcc on `PATH`,
the plugin's `AC_PROG_CC` detects C23 support and resolves `CC` to `gcc
-std=gnu23`. The plugin's `src/gdp/Makefile.am` forwards the compiler
unsplit as `-hostcc=$(CC)`, so dpacc receives a bare `-std=gnu23`
argument and rejects it.

- Preset `ac_cv_prog_cc_c23=no` before the plugin's `configure`, so
autoconf falls back to C11 — already covered by gcc 14's default gnu17 —
and `CC` stays plain `gcc`.

This is a workaround on the nixl side. The underlying bug is in the
plugin, which should split the compiler from its flags
(`-hostcc=$(firstword $(CC))`, remainder into `--hostcc-options`); the
comment notes the revert condition.

Signed-off-by: NirWolfer <nwolfer@nvidia.com>
copy-pr-bot Bot pushed a commit that referenced this pull request Aug 2, 2026
Since #2009 CUDA_VERSION is a Dockerfile ARG defaulting to 13.0, not an ENV
from the old combined base image. The nightly never passes it, so the cu12
run builds as cu13: no nixl meta wheel published, torch +cu130 in a 12.9
build. Builds stay green, so the missing artifact goes unnoticed.

Derive it from BASE_TAG and move the nightly + release poller to the same
nvcr.io ubi8 CUDA base the per-PR wheel job already uses.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant