diff options
| author | John Crispin <john@openwrt.org> | 2015-07-14 09:57:19 +0000 |
|---|---|---|
| committer | John Crispin <john@openwrt.org> | 2015-07-14 09:57:19 +0000 |
| commit | 3846bb9ac92060669f9c798c3c128057a6d32809 (patch) | |
| tree | 1bafb7345bc62f4e67e41e512df5b030e6d1fe99 /scripts | |
| parent | 5e1c7fb0cc6de1994579abd82e60eeea5976ca65 (diff) | |
| download | upstream-3846bb9ac92060669f9c798c3c128057a6d32809.tar.gz upstream-3846bb9ac92060669f9c798c3c128057a6d32809.tar.bz2 upstream-3846bb9ac92060669f9c798c3c128057a6d32809.zip | |
ipkg-build: use deterministic timestamps in ipk tarballs
As a follow-up to r46026, this commit sets the modification
times of files inside the tarballs to deterministic values.
It uses the date of the last git or svn commit and falls
back to the old behavior if those are not available.
Signed-off-by: Reiner Herrmann <reiner@reiner-h.de>
SVN-Revision: 46360
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/ipkg-build | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/scripts/ipkg-build b/scripts/ipkg-build index 6787ed41992..2d410767f34 100755 --- a/scripts/ipkg-build +++ b/scripts/ipkg-build @@ -13,8 +13,19 @@ version=1.0 FIND="$(which find)" FIND="${FIND:-$(which gfind)}" TAR="${TAR:-$(which tar)}" +SVN="$(which svn)" +GIT="$(which git)" export GZIP="-n" +# look up date of last commit +if [ -d "$TOPDIR/.git" ]; then + TIMESTAMP=$($GIT log -1 -s --format=%ci) +elif [ -d "$TOPDIR/.svn" ]; then + TIMESTAMP=$($SVN info "$TOPDIR" | sed -n "s/^Last Changed Date: \(.*\)/\1/p") +else + TIMESTAMP=$(date) +fi + ipkg_extract_value() { sed -e "s/^[^:]*:[[:space:]]*//" } @@ -128,20 +139,20 @@ mkdir $tmp_dir echo $CONTROL > $tmp_dir/tarX # Preserve permissions (-p) when creating data.tar.gz as non-root user -( cd $pkg_dir && $TAR $ogargs -X $tmp_dir/tarX --format=gnu -czpf $tmp_dir/data.tar.gz . ) +( cd $pkg_dir && $TAR $ogargs -X $tmp_dir/tarX --format=gnu -czpf $tmp_dir/data.tar.gz --mtime="$TIMESTAMP" . ) installed_size=`stat -c "%s" $tmp_dir/data.tar.gz` sed -i -e "s/^Installed-Size: .*/Installed-Size: $installed_size/" \ $pkg_dir/$CONTROL/control -( cd $pkg_dir/$CONTROL && $TAR $ogargs --format=gnu -czf $tmp_dir/control.tar.gz . ) +( cd $pkg_dir/$CONTROL && $TAR $ogargs --format=gnu -czf $tmp_dir/control.tar.gz --mtime="$TIMESTAMP" . ) rm $tmp_dir/tarX echo "2.0" > $tmp_dir/debian-binary pkg_file=$dest_dir/${pkg}_${version}_${arch}.ipk rm -f $pkg_file -( cd $tmp_dir && $TAR --format=gnu -zcf $pkg_file ./debian-binary ./data.tar.gz ./control.tar.gz ) +( cd $tmp_dir && $TAR --format=gnu -zcf $pkg_file --mtime="$TIMESTAMP" ./debian-binary ./data.tar.gz ./control.tar.gz ) rm $tmp_dir/debian-binary $tmp_dir/data.tar.gz $tmp_dir/control.tar.gz rmdir $tmp_dir |
