script: ipkg-build: honour $SOURCE_DATE_EPOCH
authorJo-Philipp Wich <jo@mein.io>
Thu, 8 Nov 2018 10:52:33 +0000 (11:52 +0100)
committerJo-Philipp Wich <jo@mein.io>
Thu, 8 Nov 2018 10:55:45 +0000 (11:55 +0100)
When the SOURCE_DATE_EPOCH environment variable is set, use it to
override the timestamps of .ipk archive contents.

This ensures that .ipk archives built in environments without SCM
metadata (mainly the SDK) are reproducible between different runs.

Ref: https://github.com/openwrt/packages/issues/6954
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit d157a76c67bcb821d3ec8dcd4312390ef129a95a)

scripts/ipkg-build

index 845a6ed04e63293e353aa4c6b6d8188a1184fb88..d38ba20af30cee4b0843c64b40f5f101e218d411 100755 (executable)
@@ -15,8 +15,12 @@ FIND="${FIND:-$(which gfind)}"
 TAR="${TAR:-$(which tar)}"
 GZIP="$(which gzip)"
 
 TAR="${TAR:-$(which tar)}"
 GZIP="$(which gzip)"
 
+# try to use fixed source epoch
+if [ -n "$SOURCE_DATE_EPOCH" ]; then
+       TIMESTAMP=$(date --date="@$SOURCE_DATE_EPOCH")
+
 # look up date of last commit
 # look up date of last commit
-if [ -d "$TOPDIR/.git" ]; then
+elif [ -d "$TOPDIR/.git" ]; then
        GIT="$(which git)"
        TIMESTAMP=$(cd $TOPDIR; $GIT log -1 -s --format=%ci)
 elif [ -d "$TOPDIR/.svn" ]; then
        GIT="$(which git)"
        TIMESTAMP=$(cd $TOPDIR; $GIT log -1 -s --format=%ci)
 elif [ -d "$TOPDIR/.svn" ]; then