From c3cc95693048bdd57a82069bad47abbc72a1932e Mon Sep 17 00:00:00 2001 From: Alejandro del Castillo Date: Thu, 12 Sep 2019 10:21:23 -0500 Subject: [PATCH] opkg-build: clamp mtimes to SOURCE_DATE_EPOCH For reproducible builds, clamp mtimes bigger than SOURCE_DATE_EPOCH to SOURCE_DATE_EPOCH (build generated files, usually). Fixes bugzilla 13450 Tested-by: Ross Burton Signed-off-by: Alejandro del Castillo --- opkg-build | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/opkg-build b/opkg-build index dcd2d68..2517a2b 100755 --- a/opkg-build +++ b/opkg-build @@ -297,9 +297,16 @@ mkdir $tmp_dir build_date="${SOURCE_DATE_EPOCH:-$(date +%s)}" +mtime_args="" +# --clamp-mtime requires tar > 1.28. Only use it if SOURCE_DATE_EPOCH is set, to avoid having a generic case dependency on tar > 1.28. +# this setting will make sure files generated at build time have consistent mtimes, for reproducible builds. +if [ ! -z "$SOURCE_DATE_EPOCH" ]; then + mtime_args="--mtime=@$build_date --clamp-mtime" +fi + ( cd $pkg_dir/$CONTROL && find . -type f > $tmp_dir/control_list ) ( cd $pkg_dir && find . -path ./$CONTROL -prune -o -print > $tmp_dir/file_list ) -( cd $pkg_dir && tar $ogargs $tsortargs --no-recursion -c $tarformat -T $tmp_dir/file_list | $compressor $compressorargs > $tmp_dir/data.tar.$cext ) +( cd $pkg_dir && tar $ogargs $tsortargs --no-recursion $mtime_args -c $tarformat -T $tmp_dir/file_list | $compressor $compressorargs > $tmp_dir/data.tar.$cext ) ( cd $pkg_dir/$CONTROL && tar $ogargs $tsortargs --no-recursion --mtime=@$build_date -c $tarformat -T $tmp_dir/control_list | gzip $zipargs > $tmp_dir/control.tar.gz ) rm $tmp_dir/file_list rm $tmp_dir/control_list