FROM archlinux:latest AS base COPY mirrorlist /etc/pacman.d/mirrolist RUN pacman-key --refresh-keys RUN pacman -Syu --noconfirm RUN pacman -S --noconfirm --needed curl rustup RUN mkdir downloads RUN curl --retry 3 https://gitea.woggioni.net/api/packages/woggioni/generic/aarch64-unknown-linux-musl-gcc/13.2.0/aarch64-unknown-linux-musl-gcc-13.2.0-1-x86_64.pkg.tar.zst \ -o downloads/aarch64-unknown-linux-musl-gcc-13.2.0-1-x86_64.pkg.tar.zst RUN ln -s /opt/x-tools/aarch64-unknown-linux-musl/bin/aarch64-unknown-linux-musl-gcc /usr/local/bin/aarch64-linux-musl-gcc RUN curl --retry 3 https://gitea.woggioni.net/api/packages/woggioni/generic/x86_64-unknown-linux-musl-gcc/13.2.0/x86_64-unknown-linux-musl-gcc-13.2.0-1-x86_64.pkg.tar.zst \ -o downloads/x86_64-unknown-linux-musl-gcc-13.2.0-1-x86_64.pkg.tar.zst RUN ln -s /opt/x-tools/x86_64-woggioni-linux-musl/bin/x86_64-woggioni-linux-musl-gcc /usr/local/bin/x86_64-linux-musl-gcc RUN curl --retry 3 https://gitea.woggioni.net/api/packages/woggioni/generic/arm-unknown-linux-musleabihf-gcc/13.2.0/arm-unknown-linux-musleabihf-gcc-13.2.0-1-x86_64.pkg.tar.zst \ -o downloads/arm-unknown-linux-musleabihf-gcc-13.2.0-1-x86_64.pkg.tar.zst RUN ln -s /opt/x-tools/arm-unknown-linux-musleabihf/bin/arm-unknown-linux-musleabihf-gcc /usr/local/bin/arm-linux-musleabihf-gcc RUN curl --retry 3 https://gitea.woggioni.net/api/packages/woggioni/generic/arm-unknown-linux-musleabi-gcc/13.2.0/arm-unknown-linux-musleabi-gcc-13.2.0-1-x86_64.pkg.tar.zst \ -o downloads/arm-unknown-linux-musleabi-gcc-13.2.0-1-x86_64.pkg.tar.zst RUN ln -s /opt/x-tools/arm-unknown-linux-musleabihf/bin/arm-unknown-linux-musleabi-gcc /usr/local/bin/arm-linux-musleabi-gcc RUN curl --retry 3 https://gitea.woggioni.net/api/packages/woggioni/generic/x86_64-w64-mingw32-gcc/13.2.0/x86_64-w64-mingw32-gcc-13.2.0-1-x86_64.pkg.tar.zst \ -o downloads/x86_64-w64-mingw32-gcc-13.2.0-1-x86_64.pkg.tar.zst RUN ln -s /opt/x-tools/x86_64-w64-mingw32/bin/x86_64-w64-mingw32-gcc /usr/local/bin/x86_64-pc-windows-gnu-gcc RUN pacman -U downloads/*.pkg.tar.* --noconfirm RUN rm -rf downloads COPY makepkg/* /etc/ RUN useradd luser -G users -u 1000 -s /bin/bash -m -d /home/luser RUN pacman -S --noconfirm --needed \ git \ cmake \ base-devel \ meson \ tar \ xz \ ccache \ lzop \ lz4 \ bzip2 \ gzip \ upx FROM base AS kernel RUN pacman -S --noconfirm --needed \ jre21-openjdk \ bc \ cpio \ gettext \ libelf \ pahole \ perl \ python \ python-pip \ python-build \ python-wheel \ graphviz \ imagemagick \ python-sphinx \ python-yaml \ openssh \ texlive-latexextra USER luser WORKDIR /home/luser FROM base AS rust RUN mkdir -p /etc/cargo COPY config.toml /.cargo/ RUN pacman -S --noconfirm --needed \ rustup \ sccache \ llvm \ clang FROM rust AS rust-full RUN pacman -S --noconfirm --needed \ hidapi \ protobuf FROM rust-full AS rust-full-rootless USER luser WORKDIR /home/luser RUN mkdir .cargo RUN rustup toolchain install stable-x86_64-unknown-linux-gnu RUN rustup target add \ x86_64-unknown-linux-musl \ x86_64-unknown-linux-gnu \ wasm32-wasi \ armv7-unknown-linux-musleabihf \ arm-unknown-linux-musleabi \ aarch64-unknown-linux-musl \ aarch64-unknown-linux-gnu