From: Viktor Szakats Date: Tue, 9 Apr 2024 06:46:35 +0000 (+0000) Subject: dist: add reproducible dir entries to tarballs X-Git-Tag: curl-8_8_0~265 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b6a4f9aa1e4d5e6246e02c60d0a5ebc5daecbff6;p=thirdparty%2Fcurl.git dist: add reproducible dir entries to tarballs In the initial implementation of reproducible tarballs, they were missing directory entries, while .zip archives had them. It meant that on extracting the tarball, on-disk directory entries got the current timestamp. This patch fixes this by including directory entries in the tarball, with reproducible timestamps. It also moves sorting inside tar, to ensure reproducible directory entry timestamps on extract (without the need of `--delay-directory-restore` option, when extracting with GNU tar. BSD tar got that right by default.) GNU tar 1.28 (2014-07-28) introduced `--sort=`. Ref: https://github.com/curl/curl/pull/13299#discussion_r1555957350 Follow-up to 860cd5fc2dc8e165fadd2c19a9b7c73b3ae5069d #13299 Closes #13322 --- diff --git a/maketgz b/maketgz index fa7e4d97be..18b717dea6 100755 --- a/maketgz +++ b/maketgz @@ -185,8 +185,8 @@ retar() { mkdir "$tempdir" cd "$tempdir" gzip -dc "../$targz" | tar -xf - - find curl-* -type f -exec touch -c -t "$filestamp" '{}' + - find curl-* -type f | sort | tar --create --format=ustar --owner=0 --group=0 --numeric-owner --files-from - | gzip --best --no-name > out.tar.gz + find curl-* -depth -exec touch -c -t "$filestamp" '{}' + + tar --create --format=ustar --owner=0 --group=0 --numeric-owner --sort=name curl-* | gzip --best --no-name > out.tar.gz mv out.tar.gz ../ cd .. rm -rf "$tempdir" @@ -223,7 +223,6 @@ makezip() { mkdir "$tempdir" cd "$tempdir" gzip -dc "../$targz" | tar -xf - - find . -depth -type d -exec touch -c -t "$filestamp" '{}' + find . | sort | zip -9 -X "$zip" -@ >/dev/null mv "$zip" ../ cd ..