summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2019-11-23 08:18:39 -0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-11-25 21:34:50 +0000
commit1c0a93e1be46e486eb0950e5cb90d16e466a0b39 (patch)
treebd7c267aaaba45f7e4ea70abb3fb3ce66c2cffba
parent26f62a423db22cb256c083dd77ca16e4686cf477 (diff)
downloadpoky-1c0a93e1be46e486eb0950e5cb90d16e466a0b39.tar.gz
opkg-utils: Fix silent empty/broken opkg package creation
opkg-build was failing on hosts where tar < 1.28 and reproducibile builds were enabled but it was doing this silently and generating corrupted (empty) ipk files. Add a fix for this (submitted upstream). The fix requires bash but if you're building ipk files this shoudn't be a problem. (From OE-Core rev: 5d774331226f967a2d00c9594c4811ee378cd572) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-devtools/opkg-utils/opkg-utils/pipefail.patch31
-rw-r--r--meta/recipes-devtools/opkg-utils/opkg-utils_0.4.1.bb3
2 files changed, 34 insertions, 0 deletions
diff --git a/meta/recipes-devtools/opkg-utils/opkg-utils/pipefail.patch b/meta/recipes-devtools/opkg-utils/opkg-utils/pipefail.patch
new file mode 100644
index 0000000000..55ddcc1fd2
--- /dev/null
+++ b/meta/recipes-devtools/opkg-utils/opkg-utils/pipefail.patch
@@ -0,0 +1,31 @@
1We need opkg-build to fail if for example the tar command is passed invalid
2options. Without this, we see silently created empty packaged where data.tar
3is zero bytes in size. This creates hard to debug problems.
4
5An example is when reproducible builds are enabled and run on old hosts like
6centos7 which has tar < 1.28:
7
8Subprocess output:tar: unrecognized option '--clamp-mtime'
9Try `tar --help' or `tar --usage' for more information.
10
11Upstream-Status: Pending
12Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
13
14Index: opkg-utils-0.4.1/opkg-build
15===================================================================
16--- opkg-utils-0.4.1.orig/opkg-build
17+++ opkg-utils-0.4.1/opkg-build
18@@ -1,4 +1,4 @@
19-#!/bin/sh
20+#!/bin/bash
21
22 : <<=cut
23 =head1 NAME
24@@ -12,6 +12,7 @@ opkg-build - construct an .opk from a di
25 # Updated to work on Familiar Pre0.7rc1, with busybox tar.
26 # Note it Requires: binutils-ar (since the busybox ar can't create)
27 set -e
28+set -o pipefail
29
30 version=1.0
31
diff --git a/meta/recipes-devtools/opkg-utils/opkg-utils_0.4.1.bb b/meta/recipes-devtools/opkg-utils/opkg-utils_0.4.1.bb
index cf1e4670c6..eb6c7a3a6a 100644
--- a/meta/recipes-devtools/opkg-utils/opkg-utils_0.4.1.bb
+++ b/meta/recipes-devtools/opkg-utils/opkg-utils_0.4.1.bb
@@ -10,6 +10,7 @@ PROVIDES += "${@bb.utils.contains('PACKAGECONFIG', 'update-alternatives', 'virtu
10SRC_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/${BPN}/snapshot/${BPN}-${PV}.tar.gz \ 10SRC_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/${BPN}/snapshot/${BPN}-${PV}.tar.gz \
11 file://0001-Switch-all-scripts-to-use-Python-3.x.patch \ 11 file://0001-Switch-all-scripts-to-use-Python-3.x.patch \
12 file://0001-opkg-build-clamp-mtimes-to-SOURCE_DATE_EPOCH.patch \ 12 file://0001-opkg-build-clamp-mtimes-to-SOURCE_DATE_EPOCH.patch \
13 file://pipefail.patch \
13" 14"
14UPSTREAM_CHECK_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/refs/" 15UPSTREAM_CHECK_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/refs/"
15 16
@@ -19,6 +20,8 @@ SRC_URI[sha256sum] = "9ea9efdd9fe13661ad251e3a2860c1c93045adcfaa6659c3e86d9748ec
19 20
20TARGET_CC_ARCH += "${LDFLAGS}" 21TARGET_CC_ARCH += "${LDFLAGS}"
21 22
23RDEPENDS_${PN} += "bash"
24
22# For native builds we use the host Python 25# For native builds we use the host Python
23PYTHONRDEPS = "python3 python3-shell python3-io python3-math python3-crypt python3-logging python3-fcntl python3-pickle python3-compression python3-stringold" 26PYTHONRDEPS = "python3 python3-shell python3-io python3-math python3-crypt python3-logging python3-fcntl python3-pickle python3-compression python3-stringold"
24PYTHONRDEPS_class-native = "" 27PYTHONRDEPS_class-native = ""