Source
FROM stagex/pallet-gcc-gnu-gnu AS base
ARG VERSION
COPY --from=stagex/core-openssl . /
COPY --from=stagex/core-libzstd . /
COPY --from=stagex/user-elfutils . /
ADD fetch/linux-${VERSION}.tar.xz .
ENV SOURCE_DATE_EPOCH=1
ENV KBUILD_BUILD_HOST=stagex
ENV KBUILD_BUILD_USER=user
ENV KBUILD_BUILD_TIMESTAMP="Thu Jan 1 12:00:00 AM GMT 1970"
COPY --chmod=775 <<-EOF /usr/bin/build-static
#!/bin/sh
set -eux
make -j "$(nproc)" bzImage
mkdir /rootfs
cp .config /rootfs/linux.config
cp "arch/$(uname -m)/boot/bzImage" /rootfs
EOF
COPY --chmod=775 <<-EOF /usr/bin/build-dynamic
#!/bin/sh
set -eux
ARCH="$(uname -m)"
make defconfig
make -j "$(nproc)" bzImage
make -j "$(nproc)" modules INSTALL_MOD_PATH=/rootfs
mkdir -p /rootfs/usr/lib/modules
make INSTALL_MOD_PATH=/rootfs/usr modules_install
cp .config /rootfs/linux.config
cp "arch/$(uname -m)/boot/bzImage" /rootfs
EOF
WORKDIR /linux-${VERSION}
FROM base AS build-linux-generic
RUN build-dynamic
FROM base AS build-linux-airgap
ADD airgap.config .config
RUN build-static
FROM base AS build-linux-server
ADD server.config .config
RUN build-static
FROM base AS build-linux-guest
ADD guest.config .config
RUN build-static
FROM base AS build-linux-guest-net
ADD guest-net.config .config
RUN build-static
FROM base AS build-linux-nitro
ADD nitro.config .config
RUN build-static
FROM base AS build-gen_initramfs
RUN --network=none <<-EOF
set -eux
gcc usr/gen_init_cpio.c -o usr/gen_init_cpio
mkdir -p /rootfs/usr/bin
cat usr/gen_initramfs.sh \
| sed 's:usr/gen_init_cpio:gen_init_cpio:g' \
> /rootfs/usr/bin/gen_initramfs
chmod +x /rootfs/usr/bin/gen_initramfs
cp -a usr/gen_init_cpio /rootfs/usr/bin
EOF
FROM stagex/core-filesystem AS package-linux-generic
COPY --from=build-linux-generic /rootfs/ /
FROM stagex/core-filesystem AS package-linux-airgap
COPY --from=build-linux-airgap /rootfs/ /
FROM stagex/core-filesystem AS package-linux-server
COPY --from=build-linux-server /rootfs/ /
FROM stagex/core-filesystem AS package-linux-guest
COPY --from=build-linux-guest /rootfs/ /
FROM stagex/core-filesystem AS package-linux-guest-net
COPY --from=build-linux-guest-net /rootfs/ /
FROM stagex/core-filesystem AS package-linux-nitro
COPY --from=build-linux-nitro /rootfs/ /
FROM stagex/core-filesystem AS package-gen_initramfs
COPY --from=build-gen_initramfs /rootfs/ /