Brad Bishop | a34c030 | 2019-09-23 22:34:48 -0400 | [diff] [blame^] | 1 | Upstream-Status: Backport |
| 2 | Signed-off-by: Ross Burton <ross.burton@intel.com> |
| 3 | |
| 4 | From 59da5577bf8df441c6ca958e50fcb83228702764 Mon Sep 17 00:00:00 2001 |
| 5 | From: Alejandro del Castillo <alejandro.delcastillo@ni.com> |
| 6 | Date: Thu, 12 Sep 2019 10:24:58 -0500 |
| 7 | Subject: [PATCH] opkg-build: clamp mtimes to SOURCE_DATE_EPOCH |
| 8 | |
| 9 | For reproducible builds, clamp mtimes bigger than SOURCE_DATE_EPOCH to |
| 10 | SOURCE_DATE_EPOCH (build generated files, usually). |
| 11 | |
| 12 | Fixes bugzilla 13450 |
| 13 | |
| 14 | Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com> |
| 15 | Signed-off-by: Ross Burton <ross.burton@intel.com> |
| 16 | --- |
| 17 | opkg-build | 9 ++++++++- |
| 18 | 1 file changed, 8 insertions(+), 1 deletion(-) |
| 19 | |
| 20 | diff --git a/opkg-build b/opkg-build |
| 21 | index dcd2d68..2517a2b 100755 |
| 22 | --- a/opkg-build |
| 23 | +++ b/opkg-build |
| 24 | @@ -297,9 +297,16 @@ mkdir $tmp_dir |
| 25 | |
| 26 | build_date="${SOURCE_DATE_EPOCH:-$(date +%s)}" |
| 27 | |
| 28 | +mtime_args="" |
| 29 | +# --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. |
| 30 | +# this setting will make sure files generated at build time have consistent mtimes, for reproducible builds. |
| 31 | +if [ ! -z "$SOURCE_DATE_EPOCH" ]; then |
| 32 | + mtime_args="--mtime=@$build_date --clamp-mtime" |
| 33 | +fi |
| 34 | + |
| 35 | ( cd $pkg_dir/$CONTROL && find . -type f > $tmp_dir/control_list ) |
| 36 | ( cd $pkg_dir && find . -path ./$CONTROL -prune -o -print > $tmp_dir/file_list ) |
| 37 | -( cd $pkg_dir && tar $ogargs $tsortargs --no-recursion -c $tarformat -T $tmp_dir/file_list | $compressor $compressorargs > $tmp_dir/data.tar.$cext ) |
| 38 | +( cd $pkg_dir && tar $ogargs $tsortargs --no-recursion $mtime_args -c $tarformat -T $tmp_dir/file_list | $compressor $compressorargs > $tmp_dir/data.tar.$cext ) |
| 39 | ( 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 ) |
| 40 | rm $tmp_dir/file_list |
| 41 | rm $tmp_dir/control_list |
| 42 | -- |
| 43 | 2.20.1 |
| 44 | |