]> code.ossystems Code Review - openembedded-core.git/commitdiff
libtool: Fix an issue where unnecessary rpaths were being injected
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 23 Sep 2011 08:00:36 +0000 (09:00 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 26 Sep 2011 16:55:58 +0000 (17:55 +0100)
libtool was being to aggressive in adding rpath to binaries. This
change stops it adding them if that path the default search path.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-devtools/libtool/libtool-cross_2.4.bb
meta/recipes-devtools/libtool/libtool-native_2.4.bb
meta/recipes-devtools/libtool/libtool-nativesdk_2.4.bb
meta/recipes-devtools/libtool/libtool.inc
meta/recipes-devtools/libtool/libtool/fix-rpath.patch [new file with mode: 0644]
meta/recipes-devtools/libtool/libtool_2.4.bb

index 25ac580e4afa91f5515a641099b233c981565a3e..6d512b19625d9fcbe5c3ff362c9fff2e02ac1c67 100644 (file)
@@ -1,6 +1,6 @@
 require libtool-${PV}.inc
 
-PR = "r2"
+PR = "r4"
 PACKAGES = ""
 SRC_URI += "file://prefix.patch"
 
index 423622fa2e6451a30102e3fcc927801a48508ea3..3d0998e1049fef01d726dab2ddf374237a1ca9ac 100644 (file)
@@ -2,7 +2,7 @@ require libtool-${PV}.inc
 
 DEPENDS = ""
 
-PR = "r2"
+PR = "r4"
 SRC_URI += "file://prefix.patch"
 
 inherit native
index 4f67fed44560f18302917536326ff99e397d95e7..a96d1d1ac4f421bf73875a8cc6e2b766ac4fb44d 100644 (file)
@@ -1,6 +1,6 @@
 require libtool-${PV}.inc
 
-PR = "r2"
+PR = "r4"
 SRC_URI += "file://prefix.patch"
 
 inherit nativesdk
index d423e4955b259268924faa6c2e0f3d908691b4a9..ef9095be3eb4756a97d0448fe1e5184f119a294b 100644 (file)
@@ -15,7 +15,8 @@ SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \
            file://resolve-sysroot.patch \
            file://use-sysroot-in-libpath.patch \
            file://fix-final-rpath.patch \
-           file://avoid_absolute_paths_for_general_utils.patch "
+           file://avoid_absolute_paths_for_general_utils.patch \
+           file://fix-rpath.patch "
 
 do_compile_prepend () {
        # Sometimes this file doesn't get rebuilt, force the issue
diff --git a/meta/recipes-devtools/libtool/libtool/fix-rpath.patch b/meta/recipes-devtools/libtool/libtool/fix-rpath.patch
new file mode 100644 (file)
index 0000000..3cdeaec
--- /dev/null
@@ -0,0 +1,63 @@
+We don't want to add RPATHS which match default linker
+search paths, they're a waste of space. This patch
+filters libtools list and removes the ones we don't need.
+
+RP 23/9/2011
+
+Upstream-status: Pending
+
+Index: libtool-2.4/libltdl/config/ltmain.m4sh
+===================================================================
+--- libtool-2.4.orig/libltdl/config/ltmain.m4sh        2011-09-23 08:38:06.365043626 +0100
++++ libtool-2.4/libltdl/config/ltmain.m4sh     2011-09-23 09:57:05.235003068 +0100
+@@ -7264,8 +7264,14 @@
+                 esac
+               fi
+             else
+-              eval flag=\"$hardcode_libdir_flag_spec\"
+-              func_append dep_rpath " $flag"
++                # We only want to hardcode in an rpath if it isn't in the
++                # default dlsearch path.
++              case " $sys_lib_dlsearch_path " in
++              *" $libdir "*) ;;
++              *) eval flag=\"$hardcode_libdir_flag_spec\"
++                   func_append dep_rpath " $flag"
++                   ;;
++              esac
+             fi
+           elif test -n "$runpath_var"; then
+             case "$perm_rpath " in
+@@ -8001,8 +8007,14 @@
+             esac
+           fi
+         else
+-          eval flag=\"$hardcode_libdir_flag_spec\"
+-          func_append rpath " $flag"
++            # We only want to hardcode in an rpath if it isn't in the
++            # default dlsearch path.
++          case " $sys_lib_dlsearch_path " in
++          *" $libdir "*) ;;
++          *) eval flag=\"$hardcode_libdir_flag_spec\"
++               rpath+=" $flag"
++               ;;
++          esac
+         fi
+       elif test -n "$runpath_var"; then
+         case "$perm_rpath " in
+@@ -8052,8 +8064,14 @@
+             esac
+           fi
+         else
+-          eval flag=\"$hardcode_libdir_flag_spec\"
+-          func_append rpath " $flag"
++            # We only want to hardcode in an rpath if it isn't in the
++            # default dlsearch path.
++          case " $sys_lib_dlsearch_path " in
++          *" $libdir "*) ;;
++          *) eval flag=\"$hardcode_libdir_flag_spec\"
++               func_append rpath " $flag"
++               ;;
++          esac    
+         fi
+       elif test -n "$runpath_var"; then
+         case "$finalize_perm_rpath " in
index e1a9a10ffd040289aa1d07a60d7c389a80449117..30022152562366b78aad93d393c4817b840dd7ff 100644 (file)
@@ -1,6 +1,6 @@
 require libtool-${PV}.inc
 
-PR = "r2"
+PR = "r4"
 
 #
 # We want the results of libtool-cross preserved - don't stage anything ourselves.