summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscript/update/project/release18
1 files changed, 14 insertions, 4 deletions
diff --git a/script/update/project/release b/script/update/project/release
index 426db72a..b6c0acf5 100755
--- a/script/update/project/release
+++ b/script/update/project/release
@@ -264,11 +264,21 @@ insert_version_files()
mktarball()
{
# preserve timestamps for reproducible tarballs
+ touch_implementation="$(touch --version)"
tar_implementation="$(tar --version)"
- tar_implementation="${tar_implementation% *}"
- mtime=""
- [ "${tar_implementation}" = "tar (GNU tar)" ] && \
- mtime="--mtime=${versiondate}"
+ eval "$(setvars "" mtime touch)"
+ [ "${tar_implementation% *}" = "tar (GNU tar)" ] && \
+ mtime="--mtime='@${versiondate}'"
+ [ "${touch_implementation% *}" = "touch (GNU coreutils)" ] || \
+ touch_implementation=""
+
+ (
+ x_ cd "${1}"
+ [ -z "${touch_implementation}" ] || \
+ find . -exec touch -h -a -m \
+ -d "$(date -Rd @${versiondate})" {} + || \
+ err "mktarball ${1}: can't set universal timestamps"
+ )
[ "${2%/*}" = "${2}" ] || x_ mkdir -p "${2%/*}"
x_ tar -c "${1}" ${mtime} | xz -T0 -9e > "${2}"