libtool: fix library RPATHs

Enabling sysroot support exposed a bug where the final library
had an RPATH encoded into it which still pointed to the sysroot.
This works around the issue until it gets sorted out upstream.

Fix suggested by Richard Purdie <richard.purdie@linuxfoundation.org>

Signed-off-by: Scott Garman <scott.a.garman@intel.com>
This commit is contained in:
Scott Garman 2011-01-11 23:20:02 -08:00 committed by Saul Wold
parent 62dc23953d
commit ded899b580
2 changed files with 38 additions and 1 deletions

View File

@ -13,7 +13,8 @@ SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \
file://prefix-manpage-fix.patch \
file://rename-with-sysroot.patch \
file://resolve-sysroot.patch \
file://use-sysroot-in-libpath.patch"
file://use-sysroot-in-libpath.patch \
file://fix-final-rpath.patch"
do_compile_prepend () {
# Sometimes this file doesn't get rebuilt, force the issue

View File

@ -0,0 +1,36 @@
Enalbing sysroot support exposed a bug where the final library
had an RPATH encoded into it which still pointed to the sysroot.
This works around the issue until it gets sorted out upstream.
Fix suggested by Richard Purdie <richard.purdie@intel.com>
Signed-off-by: Scott Garman <scott.a.garman@intel.com>
Index: libtool-2.4/libltdl/config/ltmain.m4sh
===================================================================
--- libtool-2.4.orig/libltdl/config/ltmain.m4sh 2011-01-13 14:10:14.580025108 +0000
+++ libtool-2.4/libltdl/config/ltmain.m4sh 2011-01-13 15:10:18.540025113 +0000
@@ -7246,9 +7246,11 @@
test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
for libdir in $rpath; do
if test -n "$hardcode_libdir_flag_spec"; then
+ func_replace_sysroot "$libdir"
+ libdir=$func_replace_sysroot_result
+ func_stripname '=' '' "$libdir"
+ libdir=$func_stripname_result
if test -n "$hardcode_libdir_separator"; then
- func_replace_sysroot "$libdir"
- libdir=$func_replace_sysroot_result
if test -z "$hardcode_libdirs"; then
hardcode_libdirs="$libdir"
else
@@ -7981,6 +7983,10 @@
hardcode_libdirs=
for libdir in $compile_rpath $finalize_rpath; do
if test -n "$hardcode_libdir_flag_spec"; then
+ func_replace_sysroot "$libdir"
+ libdir=$func_replace_sysroot_result
+ func_stripname '=' '' "$libdir"
+ libdir=$func_stripname_result
if test -n "$hardcode_libdir_separator"; then
if test -z "$hardcode_libdirs"; then
hardcode_libdirs="$libdir"