[collectd] Building RPM on AWS - RPATH failures
Dan Scott
dan at danieljamesscott.org
Thu Jan 30 09:49:50 CET 2014
Hi,
Sorry for the delay in replying:
[ec2-user at assets.i-b466h4e9 ~/rpmbuild/SPECS]$ pkg-config --libs libstatgrab
-lstatgrab
So not this.
I attached the full output of the command, but it was too large and is
still awaiting moderator approval - the attachment was fairly large, so it
might not get accepted.
Thanks for looking at this for me.
On 22 January 2014 20:56, Dan Fandrich <dan at coneharvesters.com> wrote:
> On Wed, Jan 22, 2014 at 09:10:53AM +0000, Dan Scott wrote:
> > On 22 January 2014 09:06, Dan Scott <dan at danieljamesscott.org> wrote:
> >
> > On 21 January 2014 20:29, Dan Fandrich <dan at coneharvesters.com>
> wrote:
> >
> > On Tue, Jan 21, 2014 at 08:35:17AM +0000, Dan Scott wrote:
> > > I've attached the rpmbuild SPEC file. The relevant lines are:
> > >
> > > %build
> > > %configure --enable-java --with-java=%{java_home}/
> --disable-battery
> > > --disable-rpath
> > > %{__make} %{?_smp_mflags}
> >
> > Those macros can hide a lot. What is the actual configure line?
> And
> > what are
> > the actual link lines for one of the binaries that's at issue?
> > Running ./configure --help | grep rpath doesn't actually show me
> any
> > such option
> > as --disable-rpath when I try it. There is one hard-coded
> -Wl,-rpath
> > line in
> > the configure.ac file tha takes effect when linking with
> libjvm.so.
> > It's
> > possible that is being used, but it would only be a "standard"
> location
> > if your
> > libjvm.so is in /usr/lib or /usr/lib64, etc., which is unlikely.
> It
> > could be
> > coming from a pkgconfig source as well. Can you search the
> config.log
> > file to
> > see where this is being added?
> >
> >
> > The actual configure line is:
> >
> > + ./configure --build=x86_64-redhat-linux --host=x86_64-redhat-linux
> > --target=x86_64-amazon-linux-gnu --program-prefix= --prefix=/usr
> > --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin
> --sysconfdir=/etc
> > --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64
> > --libexecdir=/usr/libexec --localstatedir=/var
> --sharedstatedir=/var/lib
> > --mandir=/usr/share/man --infodir=/usr/share/info --enable-java
> --with-java
> > =/usr/lib/jvm/java/ --disable-battery --disable-rpath
> >
> > I found these lines related to rpath in the config.log. Is this what
> you
> > mean?
>
> Yes, but the lines in isolation won't help much without the context of
> where
> they appear in the log. The idea is to find the first instance of an rpath
> line
> that RPM is complaining about and find how it got added.
>
> > configure:10697: gcc -o conftest -O2 -g -pipe -Wall
> -Wp,-D_FORTIFY_SOURCE=2
> > -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=
> > generic -Wl,-rpath -Wl,/foo conftest.c >&5
>
> I suspect this is a generic test of the rpath option or the linker. It's
> not
> the one we're looking for.
>
> > configure:20901: Building with JAVA_LDFLAGS set to:
> -L/usr/lib/jvm/java/
> > jre/lib/amd64/server -Wl,-rpath
> -Wl,/usr/lib/jvm/java/jre/lib/amd64/server
> >
> > configure:21070: gcc -o conftest -O2 -g -pipe -Wall
> -Wp,-D_FORTIFY_SOURCE=2
> > -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=
> > generic -I/usr/lib/jvm/java/include
> -I/usr/lib/jvm/java/include/linux
> > -L/usr/lib/jvm/java/jre/lib/amd64/server -Wl,-rpath
> -Wl,/usr/lib/jvm/java/
> > jre/lib/amd64/server conftest.c -ljvm -ldl >&5
>
> These are likely the hard-coded instance I mentioned.
>
> > configure:22916: gcc -o conftest -O2 -g -pipe -Wall
> -Wp,-D_FORTIFY_SOURCE=2
> > -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=
> > generic -D_REE
> > NTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector
> -I/usr/
> > local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
> -I/usr/lib64/
> > perl5/CORE -Wl,-E -Wl,-rpath,/usr/lib64/perl5/CORE
> -fstack-protector
> > -L/usr/lib64/perl5/CORE -lperl -lresolv -lnsl -ldl -lm -lcrypt
> -lutil
> > -lpthread -lc conftest.c -ldl >&5
> >
> > configure:22987: gcc -o conftest -O2 -g -pipe -Wall
> -Wp,-D_FORTIFY_SOURCE=2
> > -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=
> > generic -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe
> > -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE
> > -D_FILE_OFFSET_BITS=64 -I/usr/lib64/perl5/CORE -Wl,-E
> -Wl,-rpath,/usr/
> > lib64/perl5/CORE -fstack-protector -L/usr/lib64/perl5/CORE -lperl
> > -lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc conftest.c -ldl
> >&5
> >
> > configure:23047: gcc -o conftest -O2 -g -pipe -Wall
> -Wp,-D_FORTIFY_SOURCE=2
> > -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=
> > generic -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe
> > -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE
> > -D_FILE_OFFSET_BITS=64 -I/usr/lib64/perl5/CORE -Wall -Werror
> -Wl,-E
> > -Wl,-rpath,/usr/lib64/perl5/CORE -fstack-protector
> -L/usr/lib64/perl5/
> > CORE -lperl -lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
> conftest.c
> > -ldl >&5
>
> These are clearly from perl, but still not the one we're looking for.
>
> > configure:37142: running /bin/sh ./configure
> --disable-option-checking
> > '--prefix=/usr' '--build=x86_64-redhat-linux'
> '--host=x86_64-redhat-linux'
> > '--target=x86_64-amazon-linux-gnu' '--program-prefix='
> '--exec-prefix=/usr'
> > '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc'
> '--datadir=/
> > usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64'
> '--libexecdir=
> > /usr/libexec' '--localstatedir=/var' '--sharedstatedir=/var/lib'
> '--mandir=
> > /usr/share/man' '--infodir=/usr/share/info' '--enable-java'
> '--with-java=/
> > usr/lib/jvm/java/' '--disable-battery' '--disable-rpath'
> 'build_alias=
> > x86_64-redhat-linux' 'host_alias=x86_64-redhat-linux' 'target_alias=
> > x86_64-amazon-linux-gnu' 'CFLAGS=-O2 -g -pipe -Wall
> -Wp,-D_FORTIFY_SOURCE=2
> > -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=
> > generic'
> 'PKG_CONFIG_PATH=%{_PKG_CONFIG_PATH}:/usr/lib64/pkgconfig:/usr/
> > share/pkgconfig' '--enable-ltdl-convenience' --cache-file=/dev/null
> > --srcdir=.
> >
> >
> >
> > Sorry, just realised I forgot a link line:
> >
> > libtool: link: gcc -shared -fPIC -DPIC .libs/disk_la-disk.o
> -Wl,-rpath -Wl,
> > /usr/lib64 -Wl,-rpath -Wl,/usr/lib64 /usr/lib64/libstatgrab.so -ldl -O2
> -m64
> > -mtune=generic -Wl,-soname -Wl,disk.so -o .libs/disk.so
>
> Hmmm, yet somehow it finally got into this link line. It appears right
> before
> libstatgrab.so, which is a library whose dependencies are found with
> pkg-config, so this is probably it. What is the output of:
>
> pkg-config --libs libstatgrab
>
> If it includes that rpath line, then you've found your culprit.
>
> >>> Dan
>
> _______________________________________________
> collectd mailing list
> collectd at verplant.org
> http://mailman.verplant.org/listinfo/collectd
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.verplant.org/pipermail/collectd/attachments/20140130/fae1b10a/attachment.html>
More information about the collectd
mailing list