mirror of
https://github.com/containers/fuse-overlayfs.git
synced 2025-08-03 09:55:57 -04:00

The binaries are now bit-for-bit reproducible (<https://reproducible-builds.org/>): ```bash 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 . ``` This ensures that the binaries are not built from any unpublished source. - Implementation is similar to <https://github.com/rootless-containers/slirp4netns/compare/v1.2.1...v1.2.2> - `/etc/apt/sources.list` is modified to use <http://snapshot.ubuntu.com> using <https://github.com/reproducible-containers/repro-sources-list.sh>. - As <http://snapshot.ubuntu.com> is slow, `/var/cache/apt` is cached on GHA using <https://github.com/reproducible-containers/buildkit-cache-dance>. - For testing sake, `.github/workflows/release.yaml` is now executed for every push events. The release artifacts are published only on a push event with a `v*` tag. Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
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
|