Skip to contentSkip to conversation

scripts/rpm2cpio.sh fix

PATCH Applied [email protected] 2 participants 3 messages Dec 30, 2011 – Jan 4, 2012

lore
Share & tools
lore
#0 lore raw

cover scripts/rpm2cpio.sh fix

From: Tom Zanussi <[email protected]>

When running rpm2cpio.sh on an xz-compressed rpm, it failed with the error:

tmp/sysroots/x86_64-linux/usr/bin/unlzma: (stdin): File format not recognized

This is due to the script demanding lowercase in tests that might produce uppercase output, such as newer versions of 'file'.

Tom Zanussi (1):
rpm2cpio.sh: make compression tests case-insensitive

 scripts/rpm2cpio.sh |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)
#1 lore raw

PATCH 1/1 rpm2cpio.sh: make compression tests case-insensitive

From: Tom Zanussi <[email protected]>

In the rpm2cpio.sh script, the output of $COMPRESSION is tested for certain lowercase strings such as 'xz' in order to determine the decompression to use. The problem is that the output strings tested are from the output of 'file', which uses different cases in different versions e.g. file-5.09 prints:

tmp/sysroots/x86_64-linux/usr/bin$ ./file xxx.tar.xz: XZ compressed data

while file-5.03 prints:

tmp/sysroots/x86_64-linux/usr/bin$ ./file xxx.tar.xz: xz compressed data

In the former, the XZ string causes xz compressed payloads to incorrectly fall through to the catch-all lzma case.

---
 scripts/rpm2cpio.sh |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)
scripts/rpm2cpio.sh +4 -4
index 426fd77..5df8c0f 100755
@@ -27,13 +27,13 @@ o=`expr $o + $hdrsize`
 EXTRACTOR="dd if=$pkg ibs=$o skip=1"
 
 COMPRESSION=`($EXTRACTOR |file -) 2>/dev/null`
-if echo $COMPRESSION |grep -q gzip; then
+if echo $COMPRESSION |grep -iq gzip; then
 	DECOMPRESSOR=gunzip
-elif echo $COMPRESSION |grep -q bzip2; then
+elif echo $COMPRESSION |grep -iq bzip2; then
 	DECOMPRESSOR=bunzip2
-elif echo $COMPRESSION |grep -q xz; then
+elif echo $COMPRESSION |grep -iq xz; then
 	DECOMPRESSOR=unxz
-elif echo $COMPRESSION |grep -q cpio; then
+elif echo $COMPRESSION |grep -iq cpio; then
 	DECOMPRESSOR=cat
 else
 	# Most versions of file don't support LZMA, therefore we assume
Signature · 1 line
1.7.0.4
Applied
#2 lore raw
In reply to [email protected]
Quoted 12 lines · On 12/29/2011 05:29 PM, [email protected] wrote:

From: Tom Zanussi<[email protected]>

When running rpm2cpio.sh on an xz-compressed rpm, it failed with the error:

tmp/sysroots/x86_64-linux/usr/bin/unlzma: (stdin): File format not recognized

This is due to the script demanding lowercase in tests that might produce uppercase output, such as newer versions of 'file'.

Tom Zanussi (1):
rpm2cpio.sh: make compression tests case-insensitive

Quoted 9 lines
  scripts/rpm2cpio.sh |    8 ++++----
  1 files changed, 4 insertions(+), 4 deletions(-)

_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core

Merged to OE-Core

Thanks
Sau!