ruby

Details
Source
FROM stagex/pallet-gcc-gnu-busybox AS build
ARG VERSION
COPY --from=stagex/core-rust . /
COPY --from=stagex/core-gdbm . /
COPY --from=stagex/core-readline . /
COPY --from=stagex/core-libucontext . /
COPY --from=stagex/core-llvm . /
COPY --from=stagex/core-binutils . /
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 . /
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
        set -eux
				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

        # 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
EOF
FROM stagex/core-filesystem AS package
COPY --from=build /rootfs/ /