Skip to content
2 changes: 1 addition & 1 deletion ci/docker/aarch64-linux-android/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

RUN dpkg --add-architecture i386
RUN apt-get update && apt-get install -y --no-install-recommends \
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/aarch64-unknown-linux-gnu/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
Expand Down
8 changes: 4 additions & 4 deletions ci/docker/aarch64-unknown-linux-musl/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
Expand All @@ -9,13 +9,13 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
libc6-dev \
make \
patch \
qemu-user \
rsync \
qemu-user \
xz-utils

ARG MUSL_VERSION
COPY install-musl.sh /
RUN /install-musl.sh aarch64 "$MUSL_VERSION"
COPY . /ci
RUN ci/install-musl.sh aarch64 "$MUSL_VERSION"

# FIXME: shouldn't need the `-lgcc` here, shouldn't that be in std?
ENV PATH=$PATH:/musl-aarch64/bin:/rust/bin \
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/arm-linux-androideabi/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

RUN dpkg --add-architecture i386
RUN apt-get update && apt-get install -y --no-install-recommends \
Expand Down
6 changes: 3 additions & 3 deletions ci/docker/arm-unknown-linux-musleabihf/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@ RUN sed -i -E 's/(archive|security)\.ubuntu\.com/old-releases.ubuntu.com/g' \
libc6-dev \
make \
patch \
qemu-user \
rsync \
qemu-user \
xz-utils

ARG MUSL_VERSION
COPY install-musl.sh /
RUN /install-musl.sh arm "$MUSL_VERSION"
COPY . /ci
RUN ci/install-musl.sh arm "$MUSL_VERSION"

ENV PATH=$PATH:/musl-arm/bin:/rust/bin \
CC_arm_unknown_linux_musleabihf=musl-gcc \
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/asmjs-unknown-emscripten/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

# This is a workaround to avoid the interaction with tzdata.
ENV DEBIAN_FRONTEND=noninteractive
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/i686-linux-android/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

RUN dpkg --add-architecture i386
RUN apt-get update && apt-get install -y --no-install-recommends \
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/i686-unknown-linux-gnu/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
Expand Down
7 changes: 3 additions & 4 deletions ci/docker/i686-unknown-linux-musl/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

RUN dpkg --add-architecture i386 && \
apt-get update && apt-get install -y --no-install-recommends \
Expand All @@ -7,15 +7,14 @@ RUN dpkg --add-architecture i386 && \
gcc-multilib \
git \
libc6-dev \
libc6-i386 \
make \
patch \
rsync \
xz-utils

ARG MUSL_VERSION
COPY install-musl.sh /
RUN /install-musl.sh i686 "$MUSL_VERSION"
COPY . /ci
RUN ci/install-musl.sh i686 "$MUSL_VERSION"

ENV PATH=$PATH:/musl-i686/bin:/rust/bin \
CC_i686_unknown_linux_musl=musl-gcc \
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/loongarch64-unknown-linux-gnu/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
Expand Down
8 changes: 4 additions & 4 deletions ci/docker/loongarch64-unknown-linux-musl/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
Expand All @@ -9,13 +9,13 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
libc6-dev \
make \
patch \
qemu-user \
rsync \
qemu-user \
xz-utils

ARG MUSL_VERSION
COPY install-musl.sh /
RUN /install-musl.sh loongarch64 "$MUSL_VERSION"
COPY . /ci
RUN ci/install-musl.sh loongarch64 "$MUSL_VERSION"

ENV CC_loongarch64_unknown_linux_musl=musl-gcc \
CFLAGS_loongarch64_unknown_linux_musl="-mabi=lp64d -fPIC" \
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/powerpc64-unknown-linux-gnu/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
Expand Down
8 changes: 4 additions & 4 deletions ci/docker/powerpc64le-unknown-linux-musl/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
Expand All @@ -9,13 +9,13 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
libc6-dev \
make \
patch \
qemu-user \
rsync \
qemu-user \
xz-utils

ARG MUSL_VERSION
COPY install-musl.sh /
RUN /install-musl.sh powerpc64le "$MUSL_VERSION"
COPY . /ci
RUN ci/install-musl.sh powerpc64le "$MUSL_VERSION"

# FIXME: shouldn't need the `-lgcc` here, shouldn't that be in std?
ENV PATH=$PATH:/musl-powerpc64/bin:/rust/bin \
Expand Down
4 changes: 2 additions & 2 deletions ci/docker/riscv64gc-unknown-linux-gnu/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
gcc \
gcc-riscv64-linux-gnu \
libc6-dev \
libc6-dev-riscv64-cross \
qemu-system-riscv64 \
qemu-system-riscv \
qemu-user

ENV CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_GNU_LINKER=riscv64-linux-gnu-gcc \
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/s390x-unknown-linux-gnu/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
Expand Down
17 changes: 10 additions & 7 deletions ci/docker/s390x-unknown-linux-musl/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
ca-certificates \
curl \
gcc \
gcc-s390x-linux-gnu \
qemu-user \
xz-utils \
git \
libc6-dev \
make \
patch \
rsync
rsync \
qemu-user \
xz-utils

ARG MUSL_VERSION
COPY install-musl.sh /
RUN /install-musl.sh s390x "$MUSL_VERSION"
COPY . /ci
RUN ci/install-musl.sh s390x "$MUSL_VERSION"

# FIXME: shouldn't need the `-lgcc` here, shouldn't that be in std?
ENV CC_s390x_unknown_linux_gnu=musl-gcc \
Expand Down
4 changes: 2 additions & 2 deletions ci/docker/sparc64-unknown-linux-gnu/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
gcc \
gcc-sparc64-linux-gnu \
libc6-dev \
libc6-dev-sparc64-cross \
qemu-system-sparc64 \
qemu-system-sparc \
qemu-user

ENV CARGO_TARGET_SPARC64_UNKNOWN_LINUX_GNU_LINKER=sparc64-linux-gnu-gcc \
Expand Down
3 changes: 1 addition & 2 deletions ci/docker/wasm32-unknown-emscripten/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

# This is a workaround to avoid the interaction with tzdata.
ENV DEBIAN_FRONTEND=noninteractive
Expand All @@ -15,7 +15,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
gdb \
git \
libc6-dev \
libxml2 \
make \
python3 \
tzdata \
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/wasm32-wasip1/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

COPY wasi.sh /
RUN /wasi.sh
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/wasm32-wasip2/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

COPY wasi.sh /
RUN /wasi.sh
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/x86_64-linux-android/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/x86_64-unknown-linux-gnu/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/x86_64-unknown-linux-gnux32/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
Expand Down
6 changes: 3 additions & 3 deletions ci/docker/x86_64-unknown-linux-musl/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:25.04
FROM ubuntu:26.04

RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
Expand All @@ -12,8 +12,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
xz-utils

ARG MUSL_VERSION
COPY install-musl.sh /
RUN /install-musl.sh x86_64 "$MUSL_VERSION"
COPY . /ci
RUN ci/install-musl.sh x86_64 "$MUSL_VERSION"

ENV PATH=$PATH:/musl-x86_64/bin:/rust/bin \
EXTRA_RUSTFLAGS="-L /musl-x86_64/lib"
23 changes: 17 additions & 6 deletions ci/install-musl.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ set -eux
arch="$1"
version="$2"
old_musl=1.1.24
new_musl=1.2.5
new_musl=1.2.6

case "$arch" in
loongarch64) musl_version="$new_musl" ;;
Expand All @@ -30,8 +30,17 @@ musl="musl-${musl_version}"
# first. See https://github.com/rust-lang/ci-mirrors/blob/main/files/libc.toml.
curl --retry 5 "https://ci-mirrors.rust-lang.org/libc/${musl}.tar.gz" | tar xzf -

# Configure, build, and install musl:
cd "$musl"

# Apply patches
if [ "$musl_version" = "$old_musl" ]; then
patch_dir="$(realpath ../ci/musl-patches-1.1.x)"
for patchfile in "$patch_dir"/*; do
cat "$patchfile" | patch -p1
done
fi

# Configure, build, and install musl:
case ${1} in
aarch64)
musl_arch=aarch64
Expand Down Expand Up @@ -99,18 +108,20 @@ rm -rf "$musl"

# Download, configure, build, and install musl-sanitized kernel headers.

# Alpine follows stable kernel releases, 3.20 uses Linux 6.6 headers.
alpine_version=3.20
# Alpine follows stable kernel releases, 3.24 uses Linux 7.0 headers.
alpine_version=3.24
alpine_git=https://git.alpinelinux.org/aports

# This routine piggybacks on: https://git.alpinelinux.org/aports/tree/main/linux-headers?h=3.20-stable
# This routine piggybacks on: https://git.alpinelinux.org/aports/tree/main/linux-headers?h=3.24-stable
git clone -n --depth=1 --filter=tree:0 -b "${alpine_version}-stable" "$alpine_git"
(
cd aports
git sparse-checkout set --no-cone main/linux-headers
git checkout

cd main/linux-headers

# Create a version of APKBUILD that dumps the variables we're interested
# in. This file doesn't retrieve or build anything on its own.
cp APKBUILD APKBUILD.vars
cat <<- EOF >> APKBUILD.vars
echo "\$source" > alpine-source
Expand Down
Loading