Skip to content

ci: Switch to ubuntu:26.04 images#5175

Merged
tgross35 merged 6 commits into
rust-lang:mainfrom
tgross35:docker-image-updates
Jun 29, 2026
Merged

ci: Switch to ubuntu:26.04 images#5175
tgross35 merged 6 commits into
rust-lang:mainfrom
tgross35:docker-image-updates

Conversation

@tgross35

@tgross35 tgross35 commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Where possible, change to the latest Ubuntu release. The 32-bit images still aren't bumped because of the time64 mismatch.

There are a handful of supporting changes needed, see individual commit messages for more details. The first two commits are #5188.

@rustbot

rustbot commented Jun 17, 2026

Copy link
Copy Markdown
Collaborator

Some changes occurred in an Android module

cc @maurer

@rustbot

This comment has been minimized.

@tgross35
tgross35 marked this pull request as draft June 23, 2026 00:45
@tgross35
tgross35 force-pushed the docker-image-updates branch 4 times, most recently from 58e90cc to 2df722a Compare June 23, 2026 23:13
@rustbot

This comment has been minimized.

@tgross35
tgross35 force-pushed the docker-image-updates branch 10 times, most recently from 48101b5 to da91ee5 Compare June 24, 2026 19:19
@tgross35
tgross35 marked this pull request as ready for review June 24, 2026 19:22
@tgross35

Copy link
Copy Markdown
Contributor Author

🎉 that took some effort

@tgross35
tgross35 requested a review from JohnTitor June 24, 2026 19:24
@tgross35 tgross35 changed the title ci: Switch to ubuntu:26.04 images ci: Switch to ubuntu:26.04 images Jun 24, 2026
@rustbot

This comment has been minimized.

@tgross35
tgross35 force-pushed the docker-image-updates branch from da91ee5 to 1d9ef30 Compare June 25, 2026 19:30
@rustbot

This comment has been minimized.

@rustbot

This comment has been minimized.

@tgross35
tgross35 force-pushed the docker-image-updates branch from 1d9ef30 to e922061 Compare June 26, 2026 06:08
@rustbot

This comment has been minimized.

@tgross35
tgross35 force-pushed the docker-image-updates branch from e922061 to 1ec51ca Compare June 26, 2026 09:11
@rustbot

This comment has been minimized.

@rustbot

This comment has been minimized.

tgross35 and others added 4 commits June 29, 2026 18:58
Where possible, change to the latest Ubuntu release. The 32-bit images
still aren't bumped because of the time64 mismatch.
Glibc 2.42 updated this definition to an unsigned integer so it no
longer overflows.

Source: https://sourceware.org/git/?p=glibc.git;a=commit;h=3263675250cbcbbcc76ede4f7c660418bd345a11
@tgross35
tgross35 force-pushed the docker-image-updates branch from 1ec51ca to be23981 Compare June 29, 2026 18:58
@rustbot

rustbot commented Jun 29, 2026

Copy link
Copy Markdown
Collaborator

This PR was rebased onto a different main commit. Here's a range-diff highlighting what actually changed.

Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers.

tgross35 added 2 commits June 29, 2026 19:05
In Ubuntu 26.04, the musl build hits:

    In file included from /checkout/target/aarch64-unknown-linux-musl/debug/build/libc-test-1eed7f417ef9e9ac/out/ctest_output.c:51:
    /musl-aarch64/include/string.h:97:7: error: conflicting types for 'basename'; have 'char *(void)'
       97 | char *basename();
          |       ^~~~~~~~
    In file included from /checkout/target/aarch64-unknown-linux-musl/debug/build/libc-test-1eed7f417ef9e9ac/out/ctest_output.c:19:
    /musl-aarch64/include/libgen.h:9:7: note: previous declaration of 'basename' with type 'char *(char *)'
        9 | char *basename(char *);
          |       ^~~~~~~~
    cc1: note: unrecognized command-line option '-Wno-unknown-warning-option' may have been intended to silence earlier diagnostics

I believe this may be due to a new error in recent versions of GCC,
though I have not actually gone through the effort to verify this. In
any case, musl received a patch in 1.2.5 that resolves the issue; apply
it to our 1.1.x build to keep it working.

Link: kraj/musl@725e17e
Ubuntu 26.04 transitioned PowerPC64LE from the IBM long double format to
IEEE binary128 [1], which mean a handful of variadic functions needed to
switch to a binary128-compatible version. These were available starting
with glibc 2.32 (2020-08) per the abilist [2], which is quite a bit
newer than what we say we support at [3] (2.17, 2012-12).

This explains test failures, so skip checking the functions per now. We
should migrate to the `__<name>ieee128` functions at some point, which
need not be related to our documented minimum, but there is no reason to
do it now since Rust doesn't even stably support either IBM `long
double` or binary128.

Demo on Ubuntu 24.04:

    $ cat demo.c
    #include <stdio.h>
    #include <syslog.h>

    void demo() {
            char buf1[20] = { 0 };
            char buf2[20] = { 0 };
            printf("Hello, world! %d\n", 1);
            fprintf(stderr, "Hello, world! %d\n", 2);
            sprintf(buf1, "Hello, world! %d\n", 3);
            snprintf(buf2, 20, "Hello, world! %d\n", 4);
            syslog(0, "Hello, world! %d\n", 5);
    }
    $ powerpc64le-linux-gnu-gcc demo.c -c
    $ powerpc64le-linux-gnu-nm demo.o
                     U .TOC.
                     U __stack_chk_fail
    0000000000000000 T demo
                     U fprintf
                     U printf
                     U snprintf
                     U sprintf
                     U stderr
                     U syslog

And the same demo on Ubuntu 26.04:

    $ cat demo.c
    #include <stdio.h>
    #include <syslog.h>

    void demo() {
            char buf1[20] = { 0 };
            char buf2[20] = { 0 };
            printf("Hello, world! %d\n", 1);
            fprintf(stderr, "Hello, world! %d\n", 2);
            sprintf(buf1, "Hello, world! %d\n", 3);
            snprintf(buf2, 20, "Hello, world! %d\n", 4);
            syslog(0, "Hello, world! %d\n", 5);
    }
    $ powerpc64le-linux-gnu-gcc demo.c -c
    $ powerpc64le-linux-gnu-nm demo.o
                     U .TOC.
                     U __fprintfieee128
                     U __printfieee128
                     U __snprintfieee128
                     U __sprintfieee128
                     U __stack_chk_fail
                     U __syslogieee128
    0000000000000000 T demo
                     U stderr

[1]: https://bugs.launchpad.net/ubuntu/+bug/2132257
[2]: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist;h=65d78e50760b5d6b1a9cb39016a7bf8064224794;hb=HEAD#l2519
[3]: https://doc.rust-lang.org/1.96.0/rustc/platform-support.html
@tgross35
tgross35 force-pushed the docker-image-updates branch from be23981 to 4867a4f Compare June 29, 2026 19:06
@tgross35
tgross35 added this pull request to the merge queue Jun 29, 2026
Merged via the queue into rust-lang:main with commit b319ce3 Jun 29, 2026
56 checks passed
@tgross35
tgross35 deleted the docker-image-updates branch June 29, 2026 20:28
@tgross35 tgross35 added the stable-nominated This PR should be considered for cherry-pick to libc's stable release branch label Jul 20, 2026
@tgross35

Copy link
Copy Markdown
Contributor Author

Applied as part of #5215 backport in #5294

@tgross35 tgross35 added stable-applied This PR has been cherry-picked to libc's stable release branch and removed stable-nominated This PR should be considered for cherry-pick to libc's stable release branch labels Jul 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-CI Area: CI-related items stable-applied This PR has been cherry-picked to libc's stable release branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants