[v2,1/1] dpkg-prebuilt: ensure fetched packages are valid debian packages

Message ID 20240626142519.166207-1-felix.moessbauer@siemens.com
State Accepted, archived
Headers show
Series [v2,1/1] dpkg-prebuilt: ensure fetched packages are valid debian packages | expand

Commit Message

MOESSBAUER, Felix June 26, 2024, 2:25 p.m. UTC
In case of dpkg-prebuilt, we need to check if the fetched packages are
valid debian packages to only deploy valid ones into the sstate cache.
Otherwise broken packages might end up in the cache and break future
builds.

Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
---
 meta/classes/dpkg-prebuilt.bbclass | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Uladzimir Bely July 1, 2024, 3:14 a.m. UTC | #1
On Wed, 2024-06-26 at 16:25 +0200, 'Felix Moessbauer' via isar-users
wrote:
> In case of dpkg-prebuilt, we need to check if the fetched packages
> are
> valid debian packages to only deploy valid ones into the sstate
> cache.
> Otherwise broken packages might end up in the cache and break future
> builds.
> 
> Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
> ---
>  meta/classes/dpkg-prebuilt.bbclass | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/meta/classes/dpkg-prebuilt.bbclass b/meta/classes/dpkg-
> prebuilt.bbclass
> index 7092670b..a6187a07 100644
> --- a/meta/classes/dpkg-prebuilt.bbclass
> +++ b/meta/classes/dpkg-prebuilt.bbclass
> @@ -19,5 +19,8 @@ python do_unpack:prepend() {
>  # also breaks inherited (from dpkg-base) dependency on sbuild_chroot
>  do_dpkg_build[depends] = "${PN}:do_unpack"
>  do_dpkg_build() {
> -    true
> +    # ensure all packages we got are valid debian packages
> +    if [ -n "$(find ${WORKDIR} -maxdepth 1 -name '*.deb' -print -
> quit)" ]; then
> +        find ${WORKDIR} -name '*.deb' | xargs -n1 dpkg -I
> +    fi
>  }
> -- 
> 2.39.2
> 

Applied to next, thanks.

Patch

diff --git a/meta/classes/dpkg-prebuilt.bbclass b/meta/classes/dpkg-prebuilt.bbclass
index 7092670b..a6187a07 100644
--- a/meta/classes/dpkg-prebuilt.bbclass
+++ b/meta/classes/dpkg-prebuilt.bbclass
@@ -19,5 +19,8 @@  python do_unpack:prepend() {
 # also breaks inherited (from dpkg-base) dependency on sbuild_chroot
 do_dpkg_build[depends] = "${PN}:do_unpack"
 do_dpkg_build() {
-    true
+    # ensure all packages we got are valid debian packages
+    if [ -n "$(find ${WORKDIR} -maxdepth 1 -name '*.deb' -print -quit)" ]; then
+        find ${WORKDIR} -name '*.deb' | xargs -n1 dpkg -I
+    fi
 }