Some checks failed
build / check (push) Successful in 2m40s
build / clippy (push) Successful in 2m41s
build / fmt (push) Successful in 37s
build / test (push) Successful in 2m44s
images / check-act-runner (push) Successful in 29s
images / build-fedora-44 (push) Successful in 7s
images / build-ubuntu-24.04 (push) Successful in 9s
images / build-rust-ubuntu (push) Successful in 2m10s
images / build-fedora-43 (push) Successful in 2m38s
images / build-deb (push) Successful in 1m14s
images / build-rust (push) Successful in 4m19s
images / build-rpm (push) Failing after 2s
images / build-rust-gtk3 (push) Successful in 3m6s
images / build-ffmpeg (push) Successful in 3m19s
images / build-cuda-13.0 (push) Successful in 20m29s
The partial perl-* list was incomplete: OpenSSL 3.6.2's configdata.pm also needs File::Compare (and pulls in other standard modules). Install the perl-core meta-package, which provides the full standard Perl module set OpenSSL's Configure assumes, instead of chasing individual modules. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KLzpDUMcQg8KWBdTpw61eb
64 lines
3.1 KiB
Docker
64 lines
3.1 KiB
Docker
FROM git.lair.cafe/gongfoo/runner-fedora-44:latest
|
|
|
|
ARG SCCACHE_VERSION=0.15.0
|
|
|
|
# C toolchain + dev libs. Rust is NOT installed from dnf: Fedora's distro rustc
|
|
# rejects any std it didn't build (strict-version-hash mismatch, even at the
|
|
# identical 1.96.0 commit), and Fedora packages no musl std — so a static
|
|
# x86_64-unknown-linux-musl build is impossible with the packaged toolchain.
|
|
# rustup gives a toolchain whose musl std is built by the very same rustc.
|
|
#
|
|
# perl-core is required by the openssl crate's `vendored` feature, which builds
|
|
# OpenSSL from source for static musl binaries. OpenSSL's Configure/configdata
|
|
# assumes a full standard Perl (File::Compare, File::Copy, Time::Piece,
|
|
# IPC::Cmd, FindBin, Pod::Html, ...); the minimal perl-interpreter ships none of
|
|
# these, so install the perl-core meta-package rather than chasing modules.
|
|
RUN dnf install -y --setopt=install_weak_deps=False \
|
|
gcc \
|
|
musl-gcc \
|
|
openssl-devel \
|
|
perl-core \
|
|
pkg-config \
|
|
&& dnf clean all
|
|
|
|
ENV RUSTUP_HOME=/usr/local/rustup \
|
|
CARGO_HOME=/usr/local/cargo \
|
|
PATH=/usr/local/cargo/bin:$PATH
|
|
|
|
# Force colorized cargo output so workflows get readable logs without each
|
|
# job having to set CARGO_TERM_COLOR itself.
|
|
ENV CARGO_TERM_COLOR=always
|
|
|
|
# Codegen-thread stack headroom. A pre-started sccache server (one launched
|
|
# outside a Cargo jobserver, e.g. `sccache --start-server` in a bare CI shell)
|
|
# creates its own jobserver with one slot PER CPU CORE, so rustc fans LLVM
|
|
# codegen out to every core instead of the job budget. On heavy crates
|
|
# (candle-core with cuda features) the resulting concurrent SROA passes have
|
|
# overflowed the default 8 MiB codegen-thread stack and killed rustc with
|
|
# SIGSEGV — exactly the "set RUST_MIN_STACK" case rustc prints. 32 MiB is
|
|
# virtual reservation (committed only as used), so this costs nothing on
|
|
# normal builds and protects every repo regardless of how it drives sccache.
|
|
ENV RUST_MIN_STACK=33554432
|
|
|
|
# Stable toolchain with gnu + musl targets and the usual lint components.
|
|
# Default channel "stable" matches repos pinning channel = "stable" in
|
|
# rust-toolchain.toml (no per-build re-resolution). World-writable so non-root
|
|
# CI jobs — and any rust-toolchain.toml auto-provisioning — can use it.
|
|
RUN curl --proto '=https' --tlsv1.2 -fsSL https://sh.rustup.rs \
|
|
| sh -s -- -y --no-modify-path --profile minimal \
|
|
--default-toolchain stable \
|
|
--component clippy,rustfmt \
|
|
--target x86_64-unknown-linux-musl \
|
|
&& chmod -R a+w "${RUSTUP_HOME}" "${CARGO_HOME}" \
|
|
&& printf 'fn main(){}' > /tmp/t.rs \
|
|
&& rustc --target x86_64-unknown-linux-musl /tmp/t.rs -o /tmp/t \
|
|
&& rm -f /tmp/t.rs /tmp/t
|
|
|
|
# sccache is used by cargo for caching build artifacts.
|
|
# World-writable so non-root CI jobs can use it.
|
|
RUN curl -fsSL \
|
|
"https://github.com/mozilla/sccache/releases/download/v${SCCACHE_VERSION}/sccache-v${SCCACHE_VERSION}-x86_64-unknown-linux-musl.tar.gz" \
|
|
| tar xz -C /tmp \
|
|
&& install -m 755 /tmp/sccache-v${SCCACHE_VERSION}-x86_64-unknown-linux-musl/sccache /usr/local/bin/sccache \
|
|
&& rm -rf /tmp/sccache-v${SCCACHE_VERSION}-x86_64-unknown-linux-musl
|