All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] rpm2cpio.sh: update to the last 4.x version
@ 2023-05-26 14:06 aplanas
  2023-05-30 19:09 ` [OE-core] " Khem Raj
  0 siblings, 1 reply; 3+ messages in thread
From: aplanas @ 2023-05-26 14:06 UTC (permalink / raw)
  To: openembedded-core; +Cc: Alberto Planas

From: Alberto Planas <aplanas@suse.com>

openSUSE RPMs are compressing the RPM payload using zstd, that
correspond to the magic ID 0x28, 0xb5, 0x2f.

This patch update the script to the last version from the rpm project,
and add support to this compression format, and extract the cpio payload
using the "unzstd" binary.

Signed-off-by: Alberto Planas <aplanas@suse.com>
---
 scripts/rpm2cpio.sh | 30 ++++++++++++++++++++----------
 1 file changed, 20 insertions(+), 10 deletions(-)
 mode change 100755 => 100644 scripts/rpm2cpio.sh

diff --git a/scripts/rpm2cpio.sh b/scripts/rpm2cpio.sh
old mode 100755
new mode 100644
index 2034373fe4..8199b43784
--- a/scripts/rpm2cpio.sh
+++ b/scripts/rpm2cpio.sh
@@ -7,7 +7,7 @@ fatal() {
 }
 
 pkg="$1"
-[ -n "$pkg" -a -e "$pkg" ] ||
+[ -n "$pkg" ] && [ -e "$pkg" ] ||
 	fatal "No package supplied"
 
 _dd() {
@@ -16,14 +16,23 @@ _dd() {
 }
 
 calcsize() {
+
+	case "$(_dd $1 bs=4 count=1 | tr -d '\0')" in
+		"$(printf '\216\255\350')"*) ;; # '\x8e\xad\xe8'
+		*) fatal "File doesn't look like rpm: $pkg" ;;
+	esac
+
 	offset=$(($1 + 8))
 
 	local i b b0 b1 b2 b3 b4 b5 b6 b7
 
 	i=0
 	while [ $i -lt 8 ]; do
- 		b=$(_dd $(($offset + $i)) bs=1 count=1; echo X)
- 		b=${b%X}
+		# add . to not loose \n
+		# strip \0 as it gets dropped with warning otherwise
+		b="$(_dd $(($offset + $i)) bs=1 count=1 | tr -d '\0' ; echo .)"
+		b=${b%.}    # strip . again
+
 		[ -z "$b" ] &&
 			b="0" ||
 			b="$(exec printf '%u\n' "'$b")"
@@ -35,7 +44,7 @@ calcsize() {
 	offset=$(($offset + $rsize))
 }
 
-case "$(_dd 0 bs=8 count=1)" in
+case "$(_dd 0 bs=4 count=1 | tr -d '\0')" in
 	"$(printf '\355\253\356\333')"*) ;; # '\xed\xab\xee\xdb'
 	*) fatal "File doesn't look like rpm: $pkg" ;;
 esac
@@ -46,10 +55,11 @@ sigsize=$rsize
 calcsize $(($offset + (8 - ($sigsize % 8)) % 8))
 hdrsize=$rsize
 
-case "$(_dd $offset bs=3 count=1)" in
-	"$(printf '\102\132')"*) _dd $offset | bzip2 -d ;; # '\x42\x5a'
-	"$(printf '\037\213')"*) _dd $offset | gunzip  ;; # '\x1f\x8b'
-	"$(printf '\375\067')"*) _dd $offset | xzcat   ;; # '\xfd\x37'
-	"$(printf '\135\000')"*) _dd $offset | unlzma  ;; # '\x5d\x00'
-	*) fatal "Unrecognized rpm file: $pkg" ;;
+case "$(_dd $offset bs=2 count=1 | tr -d '\0')" in
+	"$(printf '\102\132')") _dd $offset | bunzip2 ;; # '\x42\x5a'
+	"$(printf '\037\213')") _dd $offset | gunzip  ;; # '\x1f\x8b'
+	"$(printf '\375\067')") _dd $offset | xzcat   ;; # '\xfd\x37'
+	"$(printf '\135')") _dd $offset | unlzma      ;; # '\x5d\x00'
+	"$(printf '\050\265')") _dd $offset | unzstd  ;; # '\x28\xb5'
+	*) fatal "Unrecognized payload compression format in rpm file: $pkg" ;;
 esac
-- 
2.40.1



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [OE-core] [PATCH] rpm2cpio.sh: update to the last 4.x version
  2023-05-26 14:06 [PATCH] rpm2cpio.sh: update to the last 4.x version aplanas
@ 2023-05-30 19:09 ` Khem Raj
  2023-05-31  4:15   ` Alberto Planas Dominguez
  0 siblings, 1 reply; 3+ messages in thread
From: Khem Raj @ 2023-05-30 19:09 UTC (permalink / raw)
  To: aplanas; +Cc: openembedded-core

This seems to regress building ctapi-common recipe from meta-oe

https://errors.yoctoproject.org/Errors/Details/705227/

On Fri, May 26, 2023 at 7:06 AM Alberto Planas via
lists.openembedded.org <aplanas=suse.com@lists.openembedded.org>
wrote:
>
> From: Alberto Planas <aplanas@suse.com>
>
> openSUSE RPMs are compressing the RPM payload using zstd, that
> correspond to the magic ID 0x28, 0xb5, 0x2f.
>
> This patch update the script to the last version from the rpm project,
> and add support to this compression format, and extract the cpio payload
> using the "unzstd" binary.
>
> Signed-off-by: Alberto Planas <aplanas@suse.com>
> ---
>  scripts/rpm2cpio.sh | 30 ++++++++++++++++++++----------
>  1 file changed, 20 insertions(+), 10 deletions(-)
>  mode change 100755 => 100644 scripts/rpm2cpio.sh
>
> diff --git a/scripts/rpm2cpio.sh b/scripts/rpm2cpio.sh
> old mode 100755
> new mode 100644
> index 2034373fe4..8199b43784
> --- a/scripts/rpm2cpio.sh
> +++ b/scripts/rpm2cpio.sh
> @@ -7,7 +7,7 @@ fatal() {
>  }
>
>  pkg="$1"
> -[ -n "$pkg" -a -e "$pkg" ] ||
> +[ -n "$pkg" ] && [ -e "$pkg" ] ||
>         fatal "No package supplied"
>
>  _dd() {
> @@ -16,14 +16,23 @@ _dd() {
>  }
>
>  calcsize() {
> +
> +       case "$(_dd $1 bs=4 count=1 | tr -d '\0')" in
> +               "$(printf '\216\255\350')"*) ;; # '\x8e\xad\xe8'
> +               *) fatal "File doesn't look like rpm: $pkg" ;;
> +       esac
> +
>         offset=$(($1 + 8))
>
>         local i b b0 b1 b2 b3 b4 b5 b6 b7
>
>         i=0
>         while [ $i -lt 8 ]; do
> -               b=$(_dd $(($offset + $i)) bs=1 count=1; echo X)
> -               b=${b%X}
> +               # add . to not loose \n
> +               # strip \0 as it gets dropped with warning otherwise
> +               b="$(_dd $(($offset + $i)) bs=1 count=1 | tr -d '\0' ; echo .)"
> +               b=${b%.}    # strip . again
> +
>                 [ -z "$b" ] &&
>                         b="0" ||
>                         b="$(exec printf '%u\n' "'$b")"
> @@ -35,7 +44,7 @@ calcsize() {
>         offset=$(($offset + $rsize))
>  }
>
> -case "$(_dd 0 bs=8 count=1)" in
> +case "$(_dd 0 bs=4 count=1 | tr -d '\0')" in
>         "$(printf '\355\253\356\333')"*) ;; # '\xed\xab\xee\xdb'
>         *) fatal "File doesn't look like rpm: $pkg" ;;
>  esac
> @@ -46,10 +55,11 @@ sigsize=$rsize
>  calcsize $(($offset + (8 - ($sigsize % 8)) % 8))
>  hdrsize=$rsize
>
> -case "$(_dd $offset bs=3 count=1)" in
> -       "$(printf '\102\132')"*) _dd $offset | bzip2 -d ;; # '\x42\x5a'
> -       "$(printf '\037\213')"*) _dd $offset | gunzip  ;; # '\x1f\x8b'
> -       "$(printf '\375\067')"*) _dd $offset | xzcat   ;; # '\xfd\x37'
> -       "$(printf '\135\000')"*) _dd $offset | unlzma  ;; # '\x5d\x00'
> -       *) fatal "Unrecognized rpm file: $pkg" ;;
> +case "$(_dd $offset bs=2 count=1 | tr -d '\0')" in
> +       "$(printf '\102\132')") _dd $offset | bunzip2 ;; # '\x42\x5a'
> +       "$(printf '\037\213')") _dd $offset | gunzip  ;; # '\x1f\x8b'
> +       "$(printf '\375\067')") _dd $offset | xzcat   ;; # '\xfd\x37'
> +       "$(printf '\135')") _dd $offset | unlzma      ;; # '\x5d\x00'
> +       "$(printf '\050\265')") _dd $offset | unzstd  ;; # '\x28\xb5'
> +       *) fatal "Unrecognized payload compression format in rpm file: $pkg" ;;
>  esac
> --
> 2.40.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#181772): https://lists.openembedded.org/g/openembedded-core/message/181772
> Mute This Topic: https://lists.openembedded.org/mt/99150379/1997914
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [OE-core] [PATCH] rpm2cpio.sh: update to the last 4.x version
  2023-05-30 19:09 ` [OE-core] " Khem Raj
@ 2023-05-31  4:15   ` Alberto Planas Dominguez
  0 siblings, 0 replies; 3+ messages in thread
From: Alberto Planas Dominguez @ 2023-05-31  4:15 UTC (permalink / raw)
  To: Khem Raj; +Cc: openembedded-core

> From: Khem Raj <raj.khem@gmail.com>
 > This seems to regress building ctapi-common recipe from meta-oe
> https://errors.yoctoproject.org/Errors/Details/705227/

/bin/sh: line 1: TOPDIR/sources/poky/scripts/rpm2cpio.sh: Permission denied

>>  mode change 100755 => 100644 scripts/rpm2cpio.sh

Indeed. Thanks, good catch. I will update it.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-05-31  4:15 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-26 14:06 [PATCH] rpm2cpio.sh: update to the last 4.x version aplanas
2023-05-30 19:09 ` [OE-core] " Khem Raj
2023-05-31  4:15   ` Alberto Planas Dominguez

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.