Source
FROM scratch AS build-libunwind
ARG VERSION
COPY --from=stagex/core-busybox . /
COPY --from=stagex/core-gcc . /
COPY --from=stagex/core-make . /
COPY --from=stagex/core-musl . /
COPY --from=stagex/core-binutils . /
COPY --from=stagex/core-autoconf . /
COPY --from=stagex/core-automake . /
COPY --from=stagex/core-libtool . /
ADD fetch/libunwind-${VERSION}.tar.gz .
WORKDIR /libunwind-${VERSION}
RUN --network=none <<-EOF
set -eux
./configure \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
--localstatedir=/usr/share/man \
--enable-cxx-exceptions \
--disable-tests \
--infodir=/usr/share/info || cat config.log
make -j "$(nproc)"
make DESTDIR=/rootfs install
EOF
FROM stagex/core-filesystem AS package-libunwind
COPY --from=build-libunwind /rootfs/ /
FROM scratch AS build-cross-x86_64-gnu-libunwind
ARG VERSION
COPY --from=stagex/core-busybox . /
COPY --from=stagex/core-cross-x86_64-gnu-gcc . /
COPY --from=stagex/core-gcc . /
COPY --from=stagex/core-make . /
COPY --from=stagex/core-musl . /
COPY --from=stagex/core-binutils . /
COPY --from=stagex/core-autoconf . /
COPY --from=stagex/core-automake . /
COPY --from=stagex/core-libtool . /
COPY --from=stagex/core-libfaketime . /
ENV LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1
ENV FAKETIME="1970-01-01 00:00:01 GMT"
ADD fetch/libunwind-${VERSION}.tar.gz .
WORKDIR /libunwind-${VERSION}
RUN --network=none <<-EOF
set -eux
# TODO: how to fix getting gcc version?
CC=/opt/cross/bin/x86_64-linux-gnu-gcc \
CFLAGS="-mtune=generic" \
CPPFLAGS="-nostdinc -isystem /opt/cross/x86_64-linux-gnu/include -isystem /opt/cross/lib/gcc/x86_64-linux-gnu/13.1.0/include/" \
./configure \
--build=x86_64-linux-musl \
--host=x86_64-linux-gnu \
--prefix=/opt/cross/x86_64-linux-gnu \
--sysconfdir=/etc \
--enable-cxx-exceptions \
--disable-tests || (cat config.log; exit 1)
make -j "$(nproc)" || (cat config.log; exit 1)
make DESTDIR=/rootfs install
EOF
FROM stagex/core-filesystem AS package-cross-x86_64-gnu-libunwind
COPY --from=build-cross-x86_64-gnu-libunwind /rootfs/ /