49 lines
1.3 KiB
Bash
Executable File
49 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Help create a deterministic distribution tarball with timestamps
|
|
# based on the time of the latest git commit.
|
|
|
|
set -eu
|
|
|
|
distdir="$1"
|
|
|
|
# This will work for git or for tarball
|
|
#
|
|
# Note: we give the .tarball file the exact same timestamp as the git commit,
|
|
# so producing a tarball from a tarball should also create the exact same
|
|
# output.
|
|
|
|
stamp="$(cd "${0%/*}/.." && git show --format=%ct --no-patch 2>/dev/null || stat -c %Y version.m4)"
|
|
|
|
test -n "${stamp}"
|
|
|
|
timestamp() {
|
|
find "$@" -exec touch -d "@${stamp}" '{}' '+'
|
|
stamp="$((stamp + 1))"
|
|
}
|
|
|
|
# we add the date of the release to the Cockpit Client metainfo
|
|
sed -i "s/@DATE@/$(date -d@${stamp} +'%Y-%m-%d')/" \
|
|
"${distdir}/src/client/org.cockpit_project.CockpitClient.metainfo.xml"
|
|
|
|
# all files get the same timestamp as the commit date
|
|
timestamp "${distdir}"
|
|
|
|
# aclocal.m4 comes next
|
|
timestamp "${distdir}/aclocal.m4"
|
|
|
|
# then the other automake generated files
|
|
timestamp \
|
|
"${distdir}/config.h.in" \
|
|
"${distdir}/configure" \
|
|
"${distdir}/Makefile.in"
|
|
|
|
# package-lock.json needs to be newer than package.json
|
|
timestamp "${distdir}/package-lock.json"
|
|
|
|
# and dist/ needs to be newer than that
|
|
timestamp "${distdir}/dist"
|
|
|
|
# finally, the directories should be newer than everything else
|
|
timestamp "${distdir}" -type d
|