ci: bump CI base images (Ubuntu Noble, Debian Trixie) and fix build failures#11169
Open
maennchen wants to merge 12 commits into
Open
ci: bump CI base images (Ubuntu Noble, Debian Trixie) and fix build failures#11169maennchen wants to merge 12 commits into
maennchen wants to merge 12 commits into
Conversation
Contributor
CT Test Results 4 files 142 suites 50m 34s ⏱️ Results for commit 259c573. ♻️ This comment has been updated with latest results. To speed up review, make sure that you have read Contributing to Erlang/OTP and that all checks pass. See the TESTING and DEVELOPMENT HowTo guides for details about how to run test locally. Artifacts// Erlang/OTP Github Action Bot |
Member
|
The same docker files are also used in the CI machinery, so you need to update the base in https://github.com/erlang/otp/blob/master/.github/scripts/build-base-image.sh and make sure that all the tests pass with the new OS. |
a6d8c95 to
a162ce1
Compare
ce0151d to
b59b1ab
Compare
d0965ab to
652e5da
Compare
GCC 14 (cross toolchain on Debian Trixie) flags the over-read of the trailing data.ui[1] member when comparing external pids/ports, since EXTERNAL_PID/PORT_DATA_WORDS is 2 on 32-bit. Replace the element-wise comparison loops with sys_memcmp, matching erl_monitor_link.c.
clang 18 on Noble errors on -Wstrict-prototypes for functions defined with an empty parameter list. Declare them as (void).
f32_to_f16/f16_to_f32 are only used when the platform lacks native float16 conversion. On Noble, GCC 13 errors with -Werror=unused-function when native conversion is available. Guard the helpers with the same condition that selects the software path.
In garbage_collect_hibernate, heap_area points into collection_heap and is passed to the offset_* calls as an address range. Move the erts_free of collection_heap after those calls so it is freed after its last use. GCC 13 on Noble flags the previous ordering with -Werror=use-after-free.
The configure check rejected wx 3.x unless WXWIN_COMPATIBILITY_3_0 was set. Accept 3.2 (the version shipped in Noble and Trixie) directly so configure succeeds without the 3.0 compat shim.
- Update wxWidgets packages from 3.0 to 3.2 (3.0 removed in Noble) - Remove manual wx-config alternative (no longer needed with 3.2) - Use dpkg --print-architecture for java-alternatives to support non-amd64 - Update build-base-image.sh to reference ubuntu:24.04
The cross-compile job links lib_src objects pre-built by the 64-bit job, which on Noble (glibc 2.39) emits __isoc23_* symbols whenever _GNU_SOURCE is set. The Bookworm cross sysroot (glibc 2.36) lacks those symbols, so the link failed. No -std= flag suppresses the redirect; it is keyed on _GNU_SOURCE, not the C standard. - Bump Debian cross/base images from Bookworm to Trixie (glibc 2.41) - Switch libncurses5-dev to libncurses-dev (renamed in Trixie)
6e120b9 to
82c3fbf
Compare
GCC 13 on Noble no longer automatically links libubsan when -fsanitize=signed-integer-overflow is in CFLAGS. Add the flag to LDFLAGS as well so the runtime is linked in.
clang 18 on Noble selects the GCC 14 toolchain but only the GCC 13 libstdc++ headers are present, so the C++ standard headers are not found. Install libstdc++-14-dev.
Python 3.12 (shipped with Ubuntu Noble) enforces PEP 668, blocking system-wide pip installs. Add --break-system-packages to allow it in the Docker build context.
82c3fbf to
081796b
Compare
garazdawi
reviewed
Jun 5, 2026
garazdawi
previously approved these changes
Jun 5, 2026
garazdawi
reviewed
Jun 5, 2026
8bbd7ae to
62a79fb
Compare
garazdawi
reviewed
Jun 5, 2026
62a79fb to
e09143d
Compare
garazdawi
reviewed
Jun 5, 2026
Gitpod was sunset on 2025-10-15. Base the Ubuntu image on ubuntu:24.04 directly instead of gitpod/workspace-full, rename the leftover gitpod ARG defaults, and remove the now-unused .gitpod.yml and its documentation.
e09143d to
259c573
Compare
garazdawi
approved these changes
Jun 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Updates the CI and devcontainer ubuntu base image from Jammy (22.04) to Noble (24.04), bumps the Debian cross-compile base from Bookworm to Trixie, and fixes the various build failures that come with the newer toolchains.
Base images
Dockerfile.ubuntu-baseandbuild-base-image.shto Ubuntu 24.04, bump wxWidgets 3.0 → 3.2 (3.0 removed in Noble), and usedpkg --print-architecturefor java-alternatives instead of hardcodedamd64lib_srcobjects that are pre-built in the 64-bit job. On Noble (glibc 2.39) those objects emit the C23__isoc23_*variants ofstrtol/scanfwhenever_GNU_SOURCEis defined (whichlib_srcalways does — and no-std=flag suppresses this, the redirect is keyed on_GNU_SOURCE, not the C standard). Linking them against the Bookworm cross sysroot (glibc 2.36), which lacks those symbols, failed. Bump the Debian base from Bookworm to Trixie (glibc 2.41), which provides them. Trixie renamedlibncurses5-dev→libncurses-dev.CI build fixes
-fsanitize=signed-integer-overflowis inCFLAGS; add it toLDFLAGSas welllibstdc++-14-devWXWIN_COMPATIBILITY_3_0was set)pip install; add--break-system-packagesSource fixes for newer compiler warnings⚠️ AI-assisted
I'm not a C/compiler expert — the C source changes were written with AI assistance. Please review those with extra care.
erts: -Wstrict-prototypes— declare zero-argument functions with(void)(clang 18 errors on the empty parameter list)erl_bits.c— guardf32_to_f16/f16_to_f32with#ifso they aren't compiled when native_Float16conversion is available (avoids GCC 13-Werror=unused-function)erl_gc.c— move theerts_freeof the temporary GC heap after its last use (heap_areapoints into it and is passed to theoffset_*calls as an address range), fixing GCC 13-Werror=use-after-freeutils.c— replace the element-wise external pid/port comparison loops ineq()withsys_memcmp(matchingerl_monitor_link.c); the trailingdata.ui[1]member is legitimately over-read on 32-bit, which GCC 14 flags via-Werror=array-bounds