43 lines
1.7 KiB
Plaintext
43 lines
1.7 KiB
Plaintext
# Usage:
|
|
# docker buildx build \
|
|
# -o /tmp/fuse-overlayfs-builds \
|
|
# --build-arg SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct) \
|
|
# --platform=amd64,arm64,arm,s390x,ppc64le,riscv64 \
|
|
# -f Containerfile.cross .
|
|
FROM --platform=$BUILDPLATFORM tonistiigi/xx:1.2.1 AS xx
|
|
FROM --platform=$BUILDPLATFORM ubuntu:jammy-20230804 AS fuse-overlayfs
|
|
ADD --chmod=0755 \
|
|
https://raw.githubusercontent.com/reproducible-containers/repro-sources-list.sh/v0.1.0/repro-sources-list.sh \
|
|
/usr/local/bin/repro-sources-list.sh
|
|
RUN \
|
|
--mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
repro-sources-list.sh && \
|
|
apt-get update && \
|
|
apt-get install --no-install-recommends -y \
|
|
git make automake autoconf pkgconf file go-md2man
|
|
# Set SOURCE_DATE_EPOCH after running repro-sources-list.sh, for cache efficiency
|
|
ARG SOURCE_DATE_EPOCH
|
|
COPY . /fuse-overlayfs
|
|
WORKDIR /fuse-overlayfs
|
|
COPY --from=xx / /
|
|
ARG TARGETPLATFORM
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
# xx-apt-get cannot be used, as it clobbers /etc/apt/sources.list created by repro-sources-list.sh
|
|
RUN \
|
|
--mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
darch="$(xx-info debian-arch)" && \
|
|
dpkg --add-architecture ${darch} && \
|
|
apt-get update && \
|
|
gcc="gcc" && \
|
|
if xx-info is-cross; then gcc="gcc-$(xx-info triple)"; fi; \
|
|
apt-get install -y "${gcc}" "libfuse3-dev:${darch}"
|
|
RUN ./autogen.sh && \
|
|
LIBS="-ldl" LDFLAGS="-static" ./configure --host=$(xx-info) && \
|
|
make && mkdir /out && cp fuse-overlayfs /out && \
|
|
file /out/fuse-overlayfs | grep "statically linked"
|
|
|
|
FROM scratch
|
|
COPY --from=fuse-overlayfs /out/fuse-overlayfs /fuse-overlayfs
|