archlinux-s390x/Containerfile
Josephine Pfeiffer 5026da6f22
making the house a home
Signed-off-by: Josephine Pfeiffer <hi@josie.lol>
2026-01-27 23:26:31 +01:00

109 lines
No EOL
2.6 KiB
Docker

# Arch Linux s390x Build Environment
# Stage 1: Base system with package manager cache
FROM fedora:43 AS base-system
RUN sed -i 's/enabled=0/enabled=1/' /etc/yum.repos.d/fedora-updates-testing.repo
# Stage 2: Cross-compilation tools
FROM base-system AS cross-tools
RUN dnf install -y --setopt=install_weak_deps=False \
# Core cross-compilation tools
gcc-s390x-linux-gnu \
binutils-s390x-linux-gnu \
kernel-cross-headers \
kernel-headers \
glibc-devel \
glibc-headers \
glibc-static \
libstdc++-devel \
libstdc++-static \
&& dnf clean all
# Stage 3: Build dependencies
FROM cross-tools AS build-deps
RUN dnf install -y --setopt=install_weak_deps=False \
# Kernel build dependencies
make \
flex \
bison \
bc \
openssl \
openssl-devel \
elfutils-libelf-devel \
perl \
ncurses-devel \
diffutils \
findutils \
kmod \
# General utilities
git \
tar \
xz \
wget \
bzip2 \
cpio \
gzip \
rsync \
bash \
coreutils \
util-linux \
file \
busybox \
bsdtar \
&& dnf clean all
# Stage 4: mkinitcpio dependencies
FROM build-deps AS mkinitcpio-deps
RUN dnf install -y --setopt=install_weak_deps=False \
# mkinitcpio build dependencies
python3 \
python3-pip \
ninja-build \
asciidoc \
xmlto \
docbook-style-xsl \
libxslt \
pkgconfig \
systemd-devel \
systemd-libs \
systemd \
systemd-udev \
&& dnf clean all
# Upgrade meson to latest version (mkinitcpio needs >=1.4.0)
RUN pip3 install --upgrade --no-cache-dir meson
# Verify systemd pkg-config files are available
RUN pkg-config --exists systemd && echo "✓ systemd pkg-config found" || echo "✗ systemd pkg-config missing"
RUN pkg-config --modversion systemd || echo "✗ systemd version check failed"
# Stage 5: Final image
FROM mkinitcpio-deps AS final
# Add remaining language packs and optional dependencies
RUN dnf install -y --setopt=install_weak_deps=False \
glibc-common \
glibc-all-langpacks \
musl-devel \
musl-gcc \
musl-libc-static \
&& dnf clean all
# Verify meson version
RUN meson --version
# Create symlinks for cross-compilation headers
RUN ln -sf /usr/s390-linux-gnu/include /usr/s390x-linux-gnu/sys-include
# Create directories for kernel and modules
RUN mkdir -p /lib/modules /boot /etc
# Set up environment for s390x cross-compilation
ENV ARCH=s390
ENV CROSS_COMPILE=s390x-linux-gnu-
WORKDIR /work
# Label the image
LABEL description="Fedora 43 with s390x cross-compilation tools and mkinitcpio support for Arch Linux s390x port"
LABEL version="1.1"
LABEL architecture="s390x-cross"