[OpenWrt-Devel] [PATCH 1/2] ipkg-build: use deterministic timestamps in ipk tarballs

John Crispin blogic at openwrt.org
Tue Jul 14 05:09:05 EDT 2015



On 12/07/2015 18:41, Reiner Herrmann wrote:
> 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 at reiner-h.de>

i just pulled this series into my local tree and will do some test
images just to double check everything works.

thanks for the patch !




> ---
>  scripts/ipkg-build | 17 ++++++++++++++---
>  1 file changed, 14 insertions(+), 3 deletions(-)
> 
> diff --git a/scripts/ipkg-build b/scripts/ipkg-build
> index 6787ed4..2d41076 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
> 
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list