From ff31fa7ae18cffb1618c3859c5dff7eb3c587692 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Mon, 3 Feb 2020 20:39:14 +0000 Subject: opkg-utils: Fix reproducibility issues in opkg-build There is a sorting problem with opkg-build where the ipk generated is depending upon the order of files on disk. The reason is the --sort option to tar only influences the orders of files tar reads, not those passed by the -T option. Add in a sort call to resolve this issue. To ensure consistent sorting we also need to force to a specific locale (C) else the results are still not deterministic. (From OE-Core rev: a9b8287984c63420e10329a69f7ac5125f1687f8) (From OE-Core rev: b577a6d923042cfc04e67d470e0987488ea61412) Signed-off-by: Richard Purdie Signed-off-by: Armin Kuster --- .../opkg-utils/fix-reproducibility.patch | 32 ++++++++++++++++++++++ .../opkg-utils/opkg-utils_0.4.2.bb | 1 + 2 files changed, 33 insertions(+) create mode 100644 meta/recipes-devtools/opkg-utils/opkg-utils/fix-reproducibility.patch diff --git a/meta/recipes-devtools/opkg-utils/opkg-utils/fix-reproducibility.patch b/meta/recipes-devtools/opkg-utils/opkg-utils/fix-reproducibility.patch new file mode 100644 index 0000000000..945979bc8a --- /dev/null +++ b/meta/recipes-devtools/opkg-utils/opkg-utils/fix-reproducibility.patch @@ -0,0 +1,32 @@ +Fix reproducibility issues in opkg-build + +There is a sorting problem with opkg-build where the ipk generated is depending +upon the order of files on disk. The reason is the --sort option to tar only +influences the orders of files tar reads, not those passed by the -T option. + +Add in a sort call to resolve this issue. To ensure consistent sorting we +also need to force to a specific locale (C) else the results are still not +deterministic. + +RP 2020/2/5 + +Upstream-Status: Submitted [https://groups.google.com/forum/#!topic/opkg-devel/YttZ73NLrYQ] +Signed-off-by: Richard Purdie + +Index: opkg-utils-0.4.2/opkg-build +=================================================================== +--- opkg-utils-0.4.2.orig/opkg-build ++++ opkg-utils-0.4.2/opkg-build +@@ -305,8 +305,10 @@ 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 -path . -o -print > $tmp_dir/file_list ) ++export LANG=C ++export LC_ALL=C ++( cd $pkg_dir/$CONTROL && find . -type f | sort > $tmp_dir/control_list ) ++( cd $pkg_dir && find . -path ./$CONTROL -prune -o -path . -o -print | sort > $tmp_dir/file_list ) + ( 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 diff --git a/meta/recipes-devtools/opkg-utils/opkg-utils_0.4.2.bb b/meta/recipes-devtools/opkg-utils/opkg-utils_0.4.2.bb index 6495726500..042eec7e0e 100644 --- a/meta/recipes-devtools/opkg-utils/opkg-utils_0.4.2.bb +++ b/meta/recipes-devtools/opkg-utils/opkg-utils_0.4.2.bb @@ -8,6 +8,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \ PROVIDES += "${@bb.utils.contains('PACKAGECONFIG', 'update-alternatives', 'virtual/update-alternatives', '', d)}" SRC_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/${BPN}/snapshot/${BPN}-${PV}.tar.gz \ + file://fix-reproducibility.patch \ " UPSTREAM_CHECK_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/refs/" -- cgit 1.2.3-korg