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: ff9ec19b02650a3ae230e4d1bdc99ec686cc4c81)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2019-11-21 14:50:18 +00:00
parent 7b299db80f
commit 95bf5c0bba
2 changed files with 34 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
We need opkg-build to fail if for example the tar command is passed invalid
options. Without this, we see silently created empty packaged where data.tar
is zero bytes in size. This creates hard to debug problems.
An example is when reproducible builds are enabled and run on old hosts like
centos7 which has tar < 1.28:
Subprocess output:tar: unrecognized option '--clamp-mtime'
Try `tar --help' or `tar --usage' for more information.
Upstream-Status: Pending
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Index: opkg-utils-0.4.1/opkg-build
===================================================================
--- opkg-utils-0.4.1.orig/opkg-build
+++ opkg-utils-0.4.1/opkg-build
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
: <<=cut
=head1 NAME
@@ -12,6 +12,7 @@ opkg-build - construct an .opk from a di
# Updated to work on Familiar Pre0.7rc1, with busybox tar.
# Note it Requires: binutils-ar (since the busybox ar can't create)
set -e
+set -o pipefail
version=1.0

View File

@@ -10,6 +10,7 @@ PROVIDES += "${@bb.utils.contains('PACKAGECONFIG', 'update-alternatives', 'virtu
SRC_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/${BPN}/snapshot/${BPN}-${PV}.tar.gz \
file://0001-Switch-all-scripts-to-use-Python-3.x.patch \
file://0001-opkg-build-clamp-mtimes-to-SOURCE_DATE_EPOCH.patch \
file://pipefail.patch \
"
UPSTREAM_CHECK_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/refs/"
@@ -19,6 +20,8 @@ SRC_URI[sha256sum] = "9ea9efdd9fe13661ad251e3a2860c1c93045adcfaa6659c3e86d9748ec
TARGET_CC_ARCH += "${LDFLAGS}"
RDEPENDS_${PN} += "bash"
# For native builds we use the host Python
PYTHONRDEPS = "python3 python3-shell python3-io python3-math python3-crypt python3-logging python3-fcntl python3-pickle python3-compression python3-stringold"
PYTHONRDEPS_class-native = ""