[bitbake-devel] [PATCH 2/5] opkg-utils: Fix silent empty/broken opkg package creation

Khem Raj raj.khem at gmail.com
Fri Nov 22 00:38:16 UTC 2019


On Thu, Nov 21, 2019 at 12:54 PM Richard Purdie
<richard.purdie at linuxfoundation.org> wrote:
>
> 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.

is the problem similar to this one

http://cfajohnson.com/shell/cus-faq-2.html#Q11

does it impact build times when default shell is not bash ?

>
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
> ---
>  .../opkg-utils/opkg-utils/pipefail.patch      | 31 +++++++++++++++++++
>  .../opkg-utils/opkg-utils_0.4.1.bb            |  3 ++
>  2 files changed, 34 insertions(+)
>  create mode 100644 meta/recipes-devtools/opkg-utils/opkg-utils/pipefail.patch
>
> 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 00000000000..55ddcc1fd20
> --- /dev/null
> +++ b/meta/recipes-devtools/opkg-utils/opkg-utils/pipefail.patch
> @@ -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 at 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
> +
> 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 cf1e4670c65..eb6c7a3a6ad 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
>  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 = ""
> --
> 2.20.1
>
> --
> _______________________________________________
> bitbake-devel mailing list
> bitbake-devel at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/bitbake-devel


More information about the bitbake-devel mailing list