Skip to content

Commit 0900032

Browse files
authored
Merge pull request #216 from infosiftr/reproducible-i386
Fix reproducibility of non-uclibc i386 builds
2 parents 6b090fa + 90794c2 commit 0900032

File tree

7 files changed

+40
-1
lines changed

7 files changed

+40
-1
lines changed

Dockerfile-builder.template

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ RUN set -eux; \
1515
tzdata \
1616
# busybox's tar ironically does not maintain mtime of directories correctly (which we need for SOURCE_DATE_EPOCH / reproducibility)
1717
tar \
18+
# we use dpkg-architecture to pass a sane (userspace) "ARCH" to busybox's Makefile (see below)
19+
dpkg-dev dpkg \
1820
;
1921
{{ ) else ( -}}
2022
FROM debian:bookworm-slim
@@ -28,6 +30,8 @@ RUN set -eux; \
2830
gnupg \
2931
make \
3032
patch \
33+
# we use dpkg-architecture to pass a sane (userspace) "ARCH" to busybox's Makefile (see below)
34+
dpkg-dev \
3135
; \
3236
rm -rf /var/lib/apt/lists/*
3337
{{ ) end -}}
@@ -340,10 +344,15 @@ RUN set -eux; \
340344
341345
RUN set -eux; \
342346
nproc="$(nproc)"; \
347+
# https://git.busybox.net/busybox/tree/Makefile?h=1_37_stable#n145
343348
{{ if env.variant == "uclibc" then ( -}}
344349
CROSS_COMPILE="$(basename /usr/src/buildroot/output/host/usr/*-buildroot-linux-uclibc*)"; \
345350
export CROSS_COMPILE="$CROSS_COMPILE-"; \
346-
{{ ) else "" end -}}
351+
{{ ) else ( -}}
352+
# we need to override SUBARCH explicitly (via ARCH) to avoid "uname -m" which gives the wrong answer for builds like i386 on an amd64 machine because kernel architecture != userspace architecture
353+
ARCH="$(dpkg-architecture --query DEB_HOST_ARCH_CPU)"; \
354+
export ARCH; \
355+
{{ ) end -}}
347356
make -j "$nproc" busybox; \
348357
./busybox --help; \
349358
mkdir -p rootfs/bin; \

latest-1/glibc/Dockerfile.builder

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

latest-1/musl/Dockerfile.builder

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

latest-1/uclibc/Dockerfile.builder

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

latest/glibc/Dockerfile.builder

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

latest/musl/Dockerfile.builder

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

latest/uclibc/Dockerfile.builder

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)