Skip to content

[CI][Docker] Move CI images to Ubuntu 24.04 (noble)#19893

Merged
MasterJH5574 merged 1 commit into
apache:mainfrom
tlopex:docker-base-ubuntu2404
Jun 29, 2026
Merged

[CI][Docker] Move CI images to Ubuntu 24.04 (noble)#19893
MasterJH5574 merged 1 commit into
apache:mainfrom
tlopex:docker-base-ubuntu2404

Conversation

@tlopex

@tlopex tlopex commented Jun 26, 2026

Copy link
Copy Markdown
Member

Bump ci_cpu, ci_arm, ci_wasm and ci_gpu from Ubuntu 22.04 (jammy) to 24.04 (noble) so the default g++ is gcc-13, which fully implements C++20 (TVM builds with CMAKE_CXX_STANDARD 20).

  • ci_gpu: nvidia/cuda 12.8.1-cudnn-devel base to ubuntu24.04 and CUDA apt GPG key path ubuntu2204 -> ubuntu2404.
  • ubuntu_install_core.sh: libtinfo-dev -> libncurses-dev and lsb-core -> lsb-release (both removed on noble).
  • ubuntu_install_llvm.sh: install llvm/clang 15/16/17 from the distro repos (noble universe ships them); drop the apt.llvm.org source (no noble debs for 15/16).
  • ubuntu_install_rocm.sh: ROCm apt 5.3/jammy -> 6.4.4/noble (5.3 has no noble pool); keep lld-15 to match the LLVM 15 TVM is built with on the GPU image.
  • ubuntu_install_vulkan.sh: LunarG SDK list jammy -> noble.

Bump ci_cpu, ci_arm, ci_wasm and ci_gpu from Ubuntu 22.04 (jammy)
to 24.04 (noble) so the default g++ is gcc-13, which fully
implements C++20 (TVM builds with CMAKE_CXX_STANDARD 20).

- ci_gpu: nvidia/cuda 12.8.1-cudnn-devel base to ubuntu24.04 and
  CUDA apt GPG key path ubuntu2204 -> ubuntu2404.
- ubuntu_install_core.sh: libtinfo-dev -> libncurses-dev and
  lsb-core -> lsb-release (both removed on noble).
- ubuntu_install_llvm.sh: install llvm/clang 15/16/17 from the
  distro repos (noble universe ships them); drop the apt.llvm.org
  source (no noble debs for 15/16).
- ubuntu_install_rocm.sh: ROCm apt 5.3/jammy -> 6.4.4/noble
  (5.3 has no noble pool); keep lld-15 to match the LLVM 15 TVM
  is built with on the GPU image.
- ubuntu_install_vulkan.sh: LunarG SDK list jammy -> noble.

@gemini-code-assist gemini-code-assist Bot 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.

Code Review

This pull request upgrades the CI Docker environment base images from Ubuntu 22.04 (Jammy) to Ubuntu 24.04 (Noble), along with updating associated dependencies such as ROCm, Vulkan, and core packages. Feedback highlights several issues introduced by this upgrade: Ubuntu 24.04 does not package LLVM 15 or LLD 15 in its default repositories, which will cause the LLVM and ROCm installation scripts to fail. Additionally, the use of apt-key in the GPU Dockerfile is deprecated in Ubuntu 24.04 and redundant since the CUDA base image already pre-configures the repository keys.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

I am having trouble creating individual review comments. Click here to see my feedback.

docker/install/ubuntu_install_llvm.sh (23-35)

critical

Removing the LLVM apt repository source while keeping llvm-15 and clang-15 in the installation list (lines 38-39 on the LEFT side / lines 24-25 on the RIGHT side) will cause the build to fail. Ubuntu 24.04 (noble) does not package LLVM 15 in its official repositories (it only packages LLVM 16, 17, and 18). Since the apt.llvm.org repository for jammy is removed and there are no official noble packages for LLVM 15, llvm-15 and clang-15 cannot be installed. Please either upgrade the minimum supported LLVM version to 16 or find an alternative way to install LLVM 15.

docker/install/ubuntu_install_rocm.sh (29)

high

Since Ubuntu 24.04 (noble) does not package LLVM 15, lld-15 (on line 30) is not available in the default repositories. This will cause the installation to fail. Consider upgrading to lld-16 or another available version to match the LLVM version used.

docker/Dockerfile.ci_gpu (28)

medium

Using apt-key is deprecated in Ubuntu 24.04 and will trigger warnings or fail. Since the base image is nvidia/cuda:12.8.1-cudnn-devel-ubuntu24.04, the CUDA repository and its GPG keys are already pre-configured and up-to-date. This line is redundant and can be safely removed.

@tlopex

tlopex commented Jun 27, 2026

Copy link
Copy Markdown
Member Author

@tvm-bot rerun

@MasterJH5574 MasterJH5574 merged commit 24bbfd2 into apache:main Jun 29, 2026
11 checks passed
tlopex added a commit to tlopex/tvm that referenced this pull request Jun 30, 2026
…(AUTO)

Two related changes, batched because the new CI image is what makes Z3
usable again:

1. Switch CI to the Ubuntu 24.04 (noble) images. Bump ci_tag in
   ci/jenkins/docker-images.ini to 20260629-192919-24bbfd2e -- the images
   built from apache#19893 (ci_cpu/ci_arm/ci_wasm/ci_gpu on Ubuntu 24.04, whose
   default g++ is gcc-13, giving full C++20 support).

2. Re-enable Z3 (AUTO). apache#19828 temporarily set USE_Z3=OFF (in CMakeLists.txt
   and the pyproject wheel build) to dodge a z3-static build failure. The CI
   image now ships z3-static (apache#19835), so this restores USE_Z3=AUTO: the
   Z3-backed Analyzer proving is enabled when z3-static is available and
   silently skipped otherwise.

   While Z3 stayed disabled, PrimExprNode::ty became a method, leaving two
   stale field accesses in z3_prover.cc's IsZ3SupportedExpr (only compiled
   under TVM_USE_Z3). Fixed expr->ty -> expr->ty().

Verification:
- The Ubuntu 24.04 images (apache#19893) built successfully for ci_cpu/ci_arm/
  ci_wasm/ci_gpu (the GPU image includes ROCm 6.4.4 and the CUDA 24.04 base).
- Re-enabling Z3 was validated with a build-only wheel run: all four wheels
  (Linux x86_64/aarch64 manylinux_2_28, macOS arm64, Windows) build green with
  z3-static compiled and linked, confirming the earlier z3-static link concern
  is resolved on the current toolchain.
tqchen pushed a commit that referenced this pull request Jun 30, 2026
…#19913)

#19893 switched the LLVM install from apt.llvm.org to noble's own repos.
Unlike apt.llvm.org, noble splits Polly's static libs into a per-version
libpolly-<N>-dev package. The install list added libpolly-16-dev and
libpolly-17-dev but not libpolly-15-dev, so `llvm-config-15
--link-static` (used by the GPU build) cannot find libPolly.a /
libPollyISL.a, breaking the libtvm_compiler.so link. Add
libpolly-15-dev.
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