[CI][Docker] Move CI images to Ubuntu 24.04 (noble)#19893
Conversation
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.
There was a problem hiding this comment.
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)
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)
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)
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.
|
@tvm-bot rerun |
…(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.
…#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.
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).