diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | binutils/README-how-to-make-a-release | 4 | ||||
-rwxr-xr-x | src-release.sh | 20 |
3 files changed, 27 insertions, 4 deletions
@@ -1,3 +1,10 @@ +2022-10-10 Nick Clifton <nickc@redhat.com> + + * src-release.sh: Add "-r <date>" option to create reproducible + tarballs based upon a fixed timestamp of <date>. + * binutils/README-how-to-make-a-release: Add a line showing how to + use -r <date> when creating a binutils release. + 2022-10-04 Nick Clifton <nickc@redhat.com> * README-maintainer-mode: Add a minimum version of dejagnu diff --git a/binutils/README-how-to-make-a-release b/binutils/README-how-to-make-a-release index 9fcebf5..3d7f6ce 100644 --- a/binutils/README-how-to-make-a-release +++ b/binutils/README-how-to-make-a-release @@ -251,6 +251,10 @@ When the time comes to actually make the release.... ./src-release.sh -b -g -l -x binutils + OR ... for a more reproducible tarball: + + ./src-release.sh -b -g -l -x -r `git log -1 --format=%cd --date=format:%F bfd/version.m4` binutils + 24. Check that the files in the tarballs have the correct permissions. diff --git a/src-release.sh b/src-release.sh index 079b545..76c355a 100755 --- a/src-release.sh +++ b/src-release.sh @@ -30,6 +30,7 @@ SHA256PROG=sha256sum MAKE=make CC=gcc CXX=g++ +release_date= # Default to avoid splitting info files by setting the threshold high. MAKEINFOFLAGS=--split-size=5000000 @@ -184,9 +185,17 @@ do_tar() ver=$2 echo "==> Making $package-$ver.tar" rm -f $package-$ver.tar - find $package-$ver -follow \( $CVS_NAMES \) -prune \ - -o -type f -print \ - | tar cTfh - $package-$ver.tar + if test x$release_date == "x" ; then + find $package-$ver -follow \( $CVS_NAMES \) -prune -o -type f -print \ + | tar cTfh - $package-$ver.tar + else + # Attempt to create a consistent, reproducible tarball using the + # specified date. + find $package-$ver -follow \( $CVS_NAMES \) -prune -o -type f -print \ + | LC_ALL=C sort \ + | tar cTfh - $package-$ver.tar \ + --mtime=$release_date --group=0 --owner=0 + fi } # Compress the output with bzip2 @@ -340,6 +349,7 @@ usage() echo " -g: Compress with gzip" echo " -l: Compress with lzip" echo " -x: Compress with xz" + echo " -r <date>: Create a reproducible tarball using <date> as the mtime" exit 1 } @@ -363,7 +373,7 @@ build_release() compressors="" -while getopts ":bglx" opt; do +while getopts ":bglr:x" opt; do case $opt in b) compressors="$compressors bz2";; @@ -371,6 +381,8 @@ while getopts ":bglx" opt; do compressors="$compressors gz";; l) compressors="$compressors lz";; + r) + release_date=$OPTARG;; x) compressors="$compressors xz";; \?) |