Source

FROM stagex/core-profile AS build
ARG VERSION
COPY --from=stagex/core-busybox . /
COPY --from=stagex/core-musl . /
COPY --from=stagex/core-make . /
COPY --from=stagex/core-gdbm . /
COPY --from=stagex/core-readline . /
COPY --from=stagex/core-libucontext . /
COPY --from=stagex/core-llvm . /
COPY --from=stagex/core-mold . /
COPY --from=stagex/core-onetbb . /
COPY --from=stagex/core-libffi . /
COPY --from=stagex/core-libzstd . /
COPY --from=stagex/core-linux-headers . /
COPY --from=stagex/core-openssl . /
COPY --from=stagex/core-yaml . /
COPY --from=stagex/core-zlib . /
COPY --from=stagex/core-perl . /
COPY --from=stagex/core-autoconf . /
COPY --from=stagex/core-m4 . /
ADD fetch/ruby-${VERSION}.tar.gz .
WORKDIR /ruby-${VERSION}
ENV LDFLAGS="-Wl,-O1 -Wl,--sort-common"
ENV CFLAGS="-march=x86-64 -mtune=generic"
ENV CXXFLAGS="$CFLAGS"
ENV CPPFLAGS="$CXXFLAGS"
ENV ARCH="$(uname -m)"
COPY *.patch .
RUN --network=none <<-EOF
	patch -p1 dont-install-bundled-gems.patch
	export CFLAGS="${CFLAGS/-Os/-O2} -fno-omit-frame-pointer -fno-strict-aliasing"
	export CPPFLAGS="${CPPFLAGS/-Os/-O2} -fno-omit-frame-pointer -fno-strict-aliasing"

	# Needed for coroutine stuff
	export LIBS="-lucontext"

	# ruby saves path to install. we want use $PATH
	export INSTALL=install

	rm ./configure
	autoconf -f

	# the configure script does not detect isnan/isinf as macros
	export ac_cv_func_isnan=yes
	export ac_cv_func_isinf=yes
	./configure \
					--prefix=/usr \
					--sysconfdir=/etc \
					--mandir=/usr/share/man \
					--infodir=/usr/share/info \
					--with-sitedir=/usr/local/lib/site_ruby \
					--with-search-path="/usr/lib/site_ruby/${VERSION}/${ARCH}" \
					--enable-pthread \
					--disable-rpath \
					--enable-shared \
					--with-mantype=man  || { cat config.log; exit 1; }
	make -j "$(nproc)"
	make DESTDIR=/rootfs install
	install -vDm644 -t /rootfs/usr/share/licenses/ruby BSDL
	find /rootfs -name mkmf.log -delete
EOF
FROM stagex/core-filesystem AS package
COPY --from=build /rootfs/ /
Copied to clipboard!