Mailinglist Archive: opensuse-packaging (235 mails)

< Previous Next >
Re: [opensuse-packaging] What does 'RPATH "" ... is not allowed' mean?
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
<opensuse@xxxxxxxxx> 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

====

Please add me as CC on any bugs you file.

-dnh

--
Wash: "[..] this landings is gonna get pretty interesting" Mal: "Define
'interesting.'" Wash: "Oh, God, oh, God, we're all gonna die?" Mal: "This is
the captain. We have a little problem with our entry sequence, so we may
experience some slight turbulence and then explode." -- Firefly Serenity
--
To unsubscribe, e-mail: opensuse-packaging+unsubscribe@xxxxxxxxxxxx
To contact the owner, e-mail: opensuse-packaging+owner@xxxxxxxxxxxx

< Previous Next >