[Rpm-maint] [PATCH] fix find-requires in the presence of private flags

Lennert Buytenhek buytenh at wantstofly.org
Fri Mar 7 08:39:55 UTC 2008


[ please CC on replies, not on the list ]

autodeps/linux.req expects the 'Version References' section to be
the very last section in objdump -p output and nothing else to follow
it, but at least on Linux/ARM, you can get output a la:

	Version References:
	  required from ld-linux.so.3:
	    0x0d696914 0x00 06 GLIBC_2.4
	  required from libacl.so.1:
	    0x05822450 0x00 05 ACL_1.0
	  required from libgcc_s.so.1:
	    0x0b792655 0x00 04 GCC_3.5
	  required from librt.so.1:
	    0x0d696914 0x00 03 GLIBC_2.4
	  required from libc.so.6:
	    0x0d696914 0x00 02 GLIBC_2.4
	private flags = 4000002: [Version4 EABI] [has entry point]

This causes the built package (if the external dep generator is
used) to end up with dependencies such as:

	package: firefox - 2.0.0.8-2.fc8.armv5tel from f8
	  unresolved deps: 
	     ld-linux.so.3(4000002:)
	     libgcc_s.so.1(4000002:)
	     libstdc++.so.6(4000002:)
	     libc.so.6(4000002:)
	     libpng12.so.0(4000002:)
	     libsmime3.so(4000002:)

The attached patch makes find-requires stop parsing dependencies
as soon as a [A-Za-z] character is found in column 1.

Issue found by Rabeeh Khoury <rabeeh at marvell.com>

Signed-off-by: Lennert Buytenhek <buytenh at marvell.com>

diff -up rpm-4.4.2.2/autodeps/linux.req.orig rpm-4.4.2.2/autodeps/linux.req
--- rpm-4.4.2.2/autodeps/linux.req.orig	2008-03-06 22:23:53.000000000 +0100
+++ rpm-4.4.2.2/autodeps/linux.req	2008-03-06 22:24:19.000000000 +0100
@@ -113,6 +113,7 @@ for f in $liblist $exelist ; do
 	(START==2) && (LIBNAME!="") && ($4!="") && (($4~/^GLIBC_*/) || ($4~/^GCC_*/)) {
 	    print LIBNAME "(" $4 ")'$lib64'";
 	}
+	/^[A-Za-z]/ { START=3; }
     '
 done | sort -u
 


--



More information about the Rpm-maint mailing list