glibc

Details
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/ /