mirror of
https://github.com/godotengine/buildroot.git
synced 2026-01-02 21:48:20 +03:00
support/download: generate even more reproducible tarballs
When we generate the taballs off a local working copy of a VCS tree, the umask is the one that we enforce in out top-level Makefile. However, it is possible that a user manually tinkers in said working copy (e.g. to check an upstream bug fix, or regression). If the user umask is different from the one Buildroot enfirces, such tinkering can impact the mode bits of the files, even if their content is not modified. When we eventually need to create a tarball from said working copy, the VCS (e.g. git) will only be interested in checking whether the content of the files have changed before chcking them out, and will not look at, and restore/fix the mode bits. As a consequence, we may create non-reproducible archives. We fix that by enforcing the mode bits on the files before we create the tarball: we disable the write and execute bits, and only set the execute bit if the user execute bit is set. Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Cc: Vincent Fazio <vfazio@xes-inc.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> (cherry picked from commit 768f9f80f62c1da6e298c680f0f4bfa887f38c78) Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
committed by
Peter Korsgaard
parent
6bd6b4c2cf
commit
53b78df10f
@@ -53,6 +53,9 @@ mk_tar_gz() {
|
||||
tmp="$(mktemp --tmpdir="$(pwd)")"
|
||||
pushd "${in_dir}" >/dev/null
|
||||
|
||||
# Enforce group/others mode bits
|
||||
chmod -R go-wx+X .
|
||||
|
||||
# Establish list
|
||||
find . -not -type d -and -not \( -false "${find_opts[@]}" \) >"${tmp}.list"
|
||||
# Sort list for reproducibility
|
||||
|
||||
Reference in New Issue
Block a user