Set SOURCE_DATE_EPOCH to latest source file
This provides a timestamp that's more useful than 1970-01-01 yet still deterministic.
This commit is contained in:
parent
2b5ed58099
commit
81e530a749
@ -0,0 +1,37 @@
|
|||||||
|
updateSourceDateEpoch() {
|
||||||
|
local path="$1"
|
||||||
|
|
||||||
|
# FIXME: Support Darwin.
|
||||||
|
if ! [[ $system =~ linux ]]; then
|
||||||
|
exit 1
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get the last modification time of all regular files, sort them,
|
||||||
|
# and get the most recent. Maybe we should use
|
||||||
|
# https://github.com/0-wiz-0/findnewest here.
|
||||||
|
local -a res=($(find "$path" -type f -print0 | xargs -0 -r stat -c '%Y %n' | sort -n | tail -n1))
|
||||||
|
local time="${res[0]}"
|
||||||
|
local newestFile="${res[1]}"
|
||||||
|
|
||||||
|
# Update $SOURCE_DATE_EPOCH if the most recent file we found is newer.
|
||||||
|
if [ "$time" -gt "$SOURCE_DATE_EPOCH" ]; then
|
||||||
|
echo "setting SOURCE_DATE_EPOCH to timestamp $time of file $newestFile"
|
||||||
|
export SOURCE_DATE_EPOCH="$time"
|
||||||
|
|
||||||
|
# Warn if the new timestamp is too close to the present. This
|
||||||
|
# may indicate that we were being applied to a file generated
|
||||||
|
# during the build, or that an unpacker didn't restore
|
||||||
|
# timestamps properly.
|
||||||
|
local now="$(date +%s)"
|
||||||
|
if [ "$time" -gt $((now - 60)) ]; then
|
||||||
|
echo "warning: file $newestFile may be generated; SOURCE_DATE_EPOCH may be non-deterministic"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
postUnpackHooks+=(_updateSourceDateEpochFromSourceRoot)
|
||||||
|
|
||||||
|
_updateSourceDateEpochFromSourceRoot() {
|
||||||
|
updateSourceDateEpoch "$sourceRoot"
|
||||||
|
}
|
@ -84,6 +84,7 @@ let
|
|||||||
../../build-support/setup-hooks/patch-shebangs.sh
|
../../build-support/setup-hooks/patch-shebangs.sh
|
||||||
../../build-support/setup-hooks/move-sbin.sh
|
../../build-support/setup-hooks/move-sbin.sh
|
||||||
../../build-support/setup-hooks/move-lib64.sh
|
../../build-support/setup-hooks/move-lib64.sh
|
||||||
|
../../build-support/setup-hooks/set-source-date-epoch-to-latest.sh
|
||||||
cc
|
cc
|
||||||
];
|
];
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user