Source
FROM scratch AS build
ARG VERSION
COPY --from=stagex/core-busybox . /
COPY --from=stagex/core-musl . /
COPY --from=stagex/core-binutils . /
COPY --from=stagex/core-bison . /
COPY --from=stagex/core-gawk . /
COPY --from=stagex/core-grep . /
COPY --from=stagex/core-gcc . /
COPY --from=stagex/core-m4 . /
COPY --from=stagex/core-make . /
COPY --from=stagex/core-python . /
COPY --from=stagex/core-linux-headers . /
COPY --from=stagex/core-linux-headers /usr/include /linux-headers
ADD fetch/glibc-${VERSION}.tar.gz .
WORKDIR glibc-${VERSION}
RUN --network=none <<-EOF
set -eux
CFLAGS="-Os -fstack-clash-protection -Wformat -Werror=format-security"
CXXFLAGS="-Os -fstack-clash-protection -Wformat -Werror=format-security -D_GLIBCXX_ASSERTIONS=1 -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -D_LIBCPP_ENABLE_HARDENED_MODE=1"
ARCH="$(uname -m)"
TRIPLE="${ARCH}-linux-gnu"
LIBDIR="/usr/lib/${TRIPLE}"
INCDIR="/usr/include/${TRIPLE}"
mkdir -p ${INCDIR}
cp -R /linux-headers/* ${INCDIR}/
sed -i 's/--yacc //' intl/Makefile
mkdir build
cd build
echo "slibdir=${LIBDIR}" >> configparams
echo "rtlddir=${LIBDIR}" >> configparams
../configure \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--libdir=${LIBDIR} \
--libexecdir=${LIBDIR} \
--includedir=${INCDIR} \
--localstatedir=/var \
--with-headers=${INCDIR} \
--disable-nls \
--disable-werror \
--enable-debug
make -j "$(nproc)"
make DESTDIR=/rootfs install
mkdir -p /rootfs/usr/lib/
mv /rootfs/lib64/* /rootfs/usr/lib/
rmdir /rootfs/lib64
mv /rootfs/sbin/* /rootfs/usr/bin
rmdir /rootfs/sbin
ln -s ${TRIPLE}/libc.so /rootfs/usr/lib/ld-gnu-${ARCH}.so.1
EOF
FROM stagex/core-filesystem AS package
COPY --from=stagex/core-filesystem . /
COPY --from=build /rootfs/ /