142 lines
3.3 KiB
Docker
142 lines
3.3 KiB
Docker
FROM scratch as base
|
|
ENV VERSION=1.5.5
|
|
ENV SRC_FILE=v${VERSION}.tar.gz
|
|
ENV SRC_SITE=https://github.com/facebook/zstd/archive/${SRC_FILE}
|
|
ENV SRC_HASH=98e9c3d949d1b924e28e01eccb7deed865eefebf25c2f21c702e5cd5b63b85e1
|
|
|
|
FROM base as fetch
|
|
ADD --checksum=sha256:${SRC_HASH} ${SRC_SITE} .
|
|
|
|
FROM fetch as prep
|
|
COPY --from=stagex/busybox . /
|
|
COPY --from=stagex/python . /
|
|
COPY --from=stagex/gcc . /
|
|
COPY --from=stagex/musl . /
|
|
COPY --from=stagex/meson . /
|
|
COPY --from=stagex/ninja . /
|
|
COPY --from=stagex/binutils . /
|
|
COPY --from=stagex/pkgconf . /
|
|
COPY --from=stagex/zlib . /
|
|
RUN tar -xf ${SRC_FILE}
|
|
WORKDIR zstd-${VERSION}
|
|
RUN --network=none <<-EOF
|
|
set -eux
|
|
meson env2mfile \
|
|
--native \
|
|
--system=linux \
|
|
--cpu-family=x86_64 \
|
|
--cpu=x86_64 \
|
|
--endian=little \
|
|
-o meson.cross
|
|
EOF
|
|
|
|
FROM prep AS build
|
|
RUN --network=none <<-EOF
|
|
meson setup \
|
|
--prefix=/usr \
|
|
--libdir=/usr/lib \
|
|
--libexecdir=/usr/libexec \
|
|
--bindir=/usr/bin \
|
|
--sbindir=/usr/sbin \
|
|
--includedir=/usr/include \
|
|
--datadir=/usr/share \
|
|
--mandir=/usr/share/man \
|
|
--infodir=/usr/share/info \
|
|
--localedir=/usr/share/locale \
|
|
--sysconfdir=/etc \
|
|
--localstatedir=/var \
|
|
--sharedstatedir=/var/lib \
|
|
--buildtype=plain \
|
|
--auto-features=auto \
|
|
--wrap-mode=nodownload \
|
|
--default-library=both \
|
|
--cross-file=meson.cross \
|
|
-Dbacktrace=disabled \
|
|
-Db_lto=false \
|
|
-Db_staticpic=true \
|
|
-Db_pie=true \
|
|
-Dpython.bytecompile=0 \
|
|
-Dwerror=false \
|
|
-Db_ndebug=true \
|
|
-Dbin_tests=false \
|
|
-Dbin_contrib=false \
|
|
-Dbin_programs=true \
|
|
-Dbacktrace=disabled \
|
|
-Dmulti_thread=enabled \
|
|
-Dlz4=disabled \
|
|
-Dlzma=disabled \
|
|
-Dzlib=disabled \
|
|
build/meson \
|
|
output
|
|
meson compile -C output
|
|
EOF
|
|
|
|
FROM prep AS build-static
|
|
RUN --network=none <<-EOF
|
|
meson setup \
|
|
--prefix=/usr \
|
|
--libdir=/usr/lib \
|
|
--libexecdir=/usr/libexec \
|
|
--bindir=/usr/bin \
|
|
--sbindir=/usr/sbin \
|
|
--includedir=/usr/include \
|
|
--datadir=/usr/share \
|
|
--mandir=/usr/share/man \
|
|
--infodir=/usr/share/info \
|
|
--localedir=/usr/share/locale \
|
|
--sysconfdir=/etc \
|
|
--localstatedir=/var \
|
|
--sharedstatedir=/var/lib \
|
|
--buildtype=plain \
|
|
--auto-features=auto \
|
|
--wrap-mode=nodownload \
|
|
--default-library=static \
|
|
--cross-file=meson.cross \
|
|
-Dbacktrace=disabled \
|
|
-Db_lto=false \
|
|
-Db_staticpic=true \
|
|
-Db_pie=true \
|
|
-Dpython.bytecompile=0 \
|
|
-Dwerror=false \
|
|
-Db_ndebug=true \
|
|
-Dbin_tests=false \
|
|
-Dbin_contrib=false \
|
|
-Dbin_programs=true \
|
|
-Dbacktrace=disabled \
|
|
-Dmulti_thread=enabled \
|
|
-Dlz4=disabled \
|
|
-Dlzma=disabled \
|
|
-Dzlib=disabled \
|
|
build/meson \
|
|
output
|
|
meson compile -C output
|
|
EOF
|
|
|
|
FROM build as install
|
|
RUN --network=none DESTDIR=/rootfs meson install --no-rebuild -C output
|
|
|
|
FROM build-static as install-static
|
|
RUN --network=none DESTDIR=/rootfs meson install --no-rebuild -C output
|
|
|
|
# lib target
|
|
FROM scratch as install-lib
|
|
COPY --from=install /rootfs/usr/lib /usr/lib
|
|
COPY --from=install /rootfs/usr/include /usr/include
|
|
COPY --from=install /rootfs/usr/share /usr/share
|
|
|
|
FROM stagex/filesystem as package-lib
|
|
COPY --from=install-lib / /
|
|
|
|
# bin target
|
|
FROM scratch as install-bin
|
|
COPY --from=install /rootfs/usr/bin /usr/bin
|
|
|
|
FROM stagex/filesystem as package-bin
|
|
COPY --from=install-bin / /
|
|
|
|
# bin-static target
|
|
FROM scratch as install-static-bin
|
|
COPY --from=install-static /rootfs/usr/bin /usr/bin
|
|
|
|
FROM stagex/filesystem as package-static-bin
|
|
COPY --from=install-static-bin / /
|