host directories in target rpath
Hi all,
I noticed I have bunch of target executables with host directories in RPATH:
$ readelf -d output/target/usr/bin/aserver | grep RPATH
0x0000000f (RPATH) Library rpath: [/home/alex/src/buildroot.snow/output/build/alsa-lib-1.0.29/src/.libs] $ readelf -d output/target/usr/bin/glib-compile-resources | grep RPATH
0x0000000f (RPATH) Library rpath: [/home/alex/src/buildroot.snow/output/build/libglib2-2.46.1/gio/.libs:/home/alex/src/buildroot.snow/output/build/libglib2-2.46.1/gobject/.libs:/home/alex/src/buildroot.snow/output/build/libglib2-2.46.1/gmodule/.libs:/home/alex/src/buildroot.snow/output/build/libglib2-2.46.1/glib/.libs:/home/alex/src/buildroot.snow/output/host/usr/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/lib] $ readelf -d output/target/usr/bin/weston | grep RPATH
0x0000000f (RPATH) Library rpath: [/home/alex/src/buildroot.snow/output/host/usr/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/lib]It does not break anything, but it's not right either. And it makes strace output look rather messy.
A quick way to check it is building alsa-lib, which is where aserver comes from.
The underlying cause is libtool, and for autoreconfed packages I can fix it by patching (host-)libtool. This fixes alsa-lib but not weston because weston carries that code in its pre-built configure. So I have to either patch weston in place (and also every non-autoreconfed package), or autoreconf them all.
What's your thoughts on this? Maybe there are better ways to fix it?
package/libtool/0001-no-rpath.patch:
m4/libtool.m4 +0 -1
@@ -5035,7 +5035,6 @@ # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
Dear Alex Suykov,
Quoted 14 lines · Alex Suykov
I noticed I have bunch of target executables with host directories in RPATH:
$ readelf -d output/target/usr/bin/aserver | grep RPATH 0x0000000f (RPATH) Library rpath: [/home/alex/src/buildroot.snow/output/build/alsa-lib-1.0.29/src/.libs]$ readelf -d output/target/usr/bin/glib-compile-resources | grep RPATH 0x0000000f (RPATH) Library rpath: [/home/alex/src/buildroot.snow/output/build/libglib2-2.46.1/gio/.libs:/home/alex/src/buildroot.snow/output/build/libglib2-2.46.1/gobject/.libs:/home/alex/src/buildroot.snow/output/build/libglib2-2.46.1/gmodule/.libs:/home/alex/src/buildroot.snow/output/build/libglib2-2.46.1/glib/.libs:/home/alex/src/buildroot.snow/output/host/usr/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/lib]$ readelf -d output/target/usr/bin/weston | grep RPATH 0x0000000f (RPATH) Library rpath: [/home/alex/src/buildroot.snow/output/host/usr/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/lib]It does not break anything, but it's not right either. And it makes strace output look rather messy.
Quoted 8 lines
A quick way to check it is building alsa-lib, which is where aserver comes from.
The underlying cause is libtool, and for autoreconfed packages I can fix it by patching (host-)libtool. This fixes alsa-lib but not weston because weston carries that code in its pre-built configure. So I have to either patch weston in place (and also every non-autoreconfed package), or autoreconf them all.
What's your thoughts on this? Maybe there are better ways to fix it?
You can see the following patches from Samuel Martin, which aim at solving this problem:
http://patchwork.ozlabs.org/patch/494781/
http://patchwork.ozlabs.org/patch/494782/
http://patchwork.ozlabs.org/patch/494783/
http://patchwork.ozlabs.org/patch/494784/
http://patchwork.ozlabs.org/patch/494785/
Samuel said he would respin them on top of master and post a new version of those patches.
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
Quoted 10 lines · Thomas Petazzoni
Quoted 6 lines
The underlying cause is libtool, and for autoreconfed packages I can fix it by patching (host-)libtool. This fixes alsa-lib but not weston because weston carries that code in its pre-built configure. So I have to either patch weston in place (and also every non-autoreconfed package), or autoreconf them all.
What's your thoughts on this? Maybe there are better ways to fix it?
You can see the following patches from Samuel Martin, which aim at solving this problem:
Quoted 8 lines
http://patchwork.ozlabs.org/patch/494781/
http://patchwork.ozlabs.org/patch/494782/
http://patchwork.ozlabs.org/patch/494783/
http://patchwork.ozlabs.org/patch/494784/
http://patchwork.ozlabs.org/patch/494785/Samuel said he would respin them on top of master and post a new version of those patches.
Thanks, I wasn't aware of this set and it looks much better than what I was going to do!