On Tue, Mar 13, 2012 at 05:43:49AM +0100, David Haller wrote:
Hello,
On Tue, 13 Mar 2012, David Haller wrote:
On Tue, 13 Mar 2012, Philipp Thomas wrote:
On Tue, 13 Mar 2012 02:09:58 +0100, Christian Boltz
wrote: ERROR: RPATH "" on /home/abuild/rpmbuild/BUILDROOT/apparmor-2.7.2-126.20.i386/usr/lib/perl5/vendor_perl/5.14.2/i586-linux-thread-multi/auto/LibAppArmor/LibAppArmor.so is not allowed ERROR: RPATH "" on /home/abuild/rpmbuild/BUILDROOT/apparmor-2.7.2-126.20.i386/usr/lib/perl5/vendor_perl/5.14.2/i586-linux-thread-multi/auto/LibAppArmor/LibAppArmor.so is not allowed
RPATH sets the path the runtime linker will search when resolving dependencies. This is only needed when the libs don't reside in a standard directory. Having RPATH point to the buildroot is plain wrong as it'll never work. How you fix that with perl tools I don't know, so someone knowledgable like David needs to chime in :-) GONGGGGGGGGG
That's not a job for me. As it is definitely a bug in /usr/lib/rpm/brp-suse.d/brp-35-rpath, [..] Proposed patch:
==== --- ./usr/lib/rpm/brp-suse.d/brp-35-rpath.orig 2012-03-13 04:39:06.000000000 +0100 +++ ./usr/lib/rpm/brp-suse.d/brp-35-rpath 2012-03-13 04:43:38.000000000 +0100 @@ -24,6 +24,7 @@ while [ -n "$RPATH_VAL" ]; do RPATH_VAL_NXT=${RPATH_VAL%%:*} RPATH_VAL=${RPATH_VAL##$RPATH_VAL_NXT:} + test -z "$RPATH_VAL_NXT" && continue test -d "$RPATH_VAL_NXT" && RPATH_VAL_NXT=$(cd ${RPATH_VAL_NXT//#\/\//\/}; pwd -P)
case ":$RPATH_VAL_NXT" in ====
Addendum: It is/might also be a linker bug, I don't think the linker (in this case GNU 'ld') should write empty RPATH/RUNPATH entries unless explicitly told to.
The fix to the brp-script should, in ANY case, be done but probably amended to emit a warning of that linker behaviour, e.g.:
==== --- ./usr/lib/rpm/brp-suse.d/brp-35-rpath.orig 2012-03-13 04:39:06.000000000 +0100 +++ ./usr/lib/rpm/brp-suse.d/brp-35-rpath 2012-03-13 05:39:54.000000000 +0100 @@ -24,6 +24,10 @@ while [ -n "$RPATH_VAL" ]; do RPATH_VAL_NXT=${RPATH_VAL%%:*} RPATH_VAL=${RPATH_VAL##$RPATH_VAL_NXT:} + if test -z "$RPATH_VAL_NXT"; then + printf "WARNING: Linker added empty RPATH/RUNPATH entry to '$FILE'\n" >&2 + continue + fi test -d "$RPATH_VAL_NXT" && RPATH_VAL_NXT=$(cd ${RPATH_VAL_NXT//#\/\//\/}; pwd -P)
case ":$RPATH_VAL_NXT" in
This is wrong.
====
Please add me as CC on any bugs you file.
This is actually bad. You have an empty RPATH ... This means that libraries will searched in the current directory too when you load this module/run this application. Ciao, Marcus -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-packaging+owner@opensuse.org