From patchwork Thu Jun 15 10:54:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alberto Planas Dominguez X-Patchwork-Id: 25668 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8BF8EEB64D9 for ; Thu, 15 Jun 2023 10:55:50 +0000 (UTC) Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by mx.groups.io with SMTP id smtpd.web10.15176.1686826547635950850 for ; Thu, 15 Jun 2023 03:55:48 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@suse.com header.s=susede1 header.b=PtO2e5hD; spf=pass (domain: suse.com, ip: 195.135.220.28, mailfrom: aplanas@suse.com) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id A14A321BBF; Thu, 15 Jun 2023 10:55:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1686826545; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=I9YH2bu77NqSTFn/liJhtqzasCM7Q+YX+xIWJtJSQho=; b=PtO2e5hDtooYw8Q47TX6+FFb1Usg+0w5xAt0dtbiOo204PapluVFh3SPAxC4QQWuWbGZ4z D1GLLLGjfMpEY4Y1yx/dXcASCyueMQ8EMXZ7flPo/576uL2SNBd20V43Kurce2oafysbQ1 CBpD8z2FBBTQgFYTMSQ0fPEFjJX/XuM= Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 5E93313467; Thu, 15 Jun 2023 10:55:45 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id dBJ7EjHuimTRfwAAMHmgww (envelope-from ); Thu, 15 Jun 2023 10:55:45 +0000 From: aplanas@suse.com To: openembedded-core@lists.openembedded.org Cc: Alberto Planas Subject: [PATCH v2 1/2] rpm2cpio.sh: update to the last 4.x version Date: Thu, 15 Jun 2023 12:54:46 +0200 Message-ID: <20230615105447.29690-1-aplanas@suse.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 15 Jun 2023 10:55:50 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/182844 From: Alberto Planas 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 --- 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 From patchwork Thu Jun 15 10:54:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alberto Planas Dominguez X-Patchwork-Id: 25669 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6BA31EB64DB for ; Thu, 15 Jun 2023 10:56:00 +0000 (UTC) Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by mx.groups.io with SMTP id smtpd.web10.15177.1686826550459660530 for ; Thu, 15 Jun 2023 03:55:50 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@suse.com header.s=susede1 header.b=nljBIaNj; spf=pass (domain: suse.com, ip: 195.135.220.28, mailfrom: aplanas@suse.com) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 2B889223E4; Thu, 15 Jun 2023 10:55:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1686826548; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Ig7D1HpCuUpLX4dr6DJ9vNULEE3YnZHhy3767qen0/I=; b=nljBIaNjR9uToo4BdnK+z8d9d+BoC4CM9njUmfd5CqL4kHoO91R3SRrtQl9Xb2mcTyradE HUoRqRhJ278H/3w/6mRL2GJbSe8Erlr8YrKbzUGBjF70m0eJMqB7tkPdP0TZQ89D9OVm8A wC2NK1iYzTlHmoV5D8iWUkzGXhF4s24= Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id DE13F13467; Thu, 15 Jun 2023 10:55:47 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id KCudMjPuimTRfwAAMHmgww (envelope-from ); Thu, 15 Jun 2023 10:55:47 +0000 From: aplanas@suse.com To: openembedded-core@lists.openembedded.org Cc: Alberto Planas Subject: [PATCH v2 2/2] bitbake.conf: add unzstd in HOSTTOOLS Date: Thu, 15 Jun 2023 12:54:47 +0200 Message-ID: <20230615105447.29690-2-aplanas@suse.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230615105447.29690-1-aplanas@suse.com> References: <20230615105447.29690-1-aplanas@suse.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 15 Jun 2023 10:56:00 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/182845 From: Alberto Planas rpm2cpio.sh can make calls to unzstd to uncompress the RPM payload that conform the cpio file. zstd is already part of HOSTTOOLS, as a link to the system installed zstd. This patch add unzstd in HOSTOOLS list as a non-optional binary, so is available to rpm2cpio.sh when it is required. Signed-off-by: Alberto Planas --- meta/conf/bitbake.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index e28df7478f..702881144e 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf @@ -524,7 +524,7 @@ HOSTTOOLS += " \ python3 pzstd ranlib readelf readlink realpath rm rmdir rpcgen sed seq sh \ sha1sum sha224sum sha256sum sha384sum sha512sum \ sleep sort split stat strings strip tail tar tee test touch tr true uname \ - uniq wc wget which xargs zstd \ + uniq unzstd wc wget which xargs zstd \ " # Tools needed to run testimage runtime image testing