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 <[email protected]>
---
 meta/recipes-devtools/libtool/libtool-cross_2.4.bb |    2 +-
 .../recipes-devtools/libtool/libtool-native_2.4.bb |    2 +-
 .../libtool/libtool-nativesdk_2.4.bb               |    2 +-
 meta/recipes-devtools/libtool/libtool.inc          |    3 +-
 meta/recipes-devtools/libtool/libtool/1            |   55 +++++++++++++++++
 .../libtool/libtool/fix-rpath.patch                |   63 ++++++++++++++++++++
 meta/recipes-devtools/libtool/libtool_2.4.bb       |    2 +-
 7 files changed, 124 insertions(+), 5 deletions(-)
 create mode 100644 meta/recipes-devtools/libtool/libtool/1
 create mode 100644 meta/recipes-devtools/libtool/libtool/fix-rpath.patch

diff --git a/meta/recipes-devtools/libtool/libtool-cross_2.4.bb 
b/meta/recipes-devtools/libtool/libtool-cross_2.4.bb
index 25ac580..6d512b1 100644
--- a/meta/recipes-devtools/libtool/libtool-cross_2.4.bb
+++ b/meta/recipes-devtools/libtool/libtool-cross_2.4.bb
@@ -1,6 +1,6 @@
 require libtool-${PV}.inc
 
-PR = "r2"
+PR = "r4"
 PACKAGES = ""
 SRC_URI += "file://prefix.patch"
 
diff --git a/meta/recipes-devtools/libtool/libtool-native_2.4.bb 
b/meta/recipes-devtools/libtool/libtool-native_2.4.bb
index 423622f..3d0998e 100644
--- a/meta/recipes-devtools/libtool/libtool-native_2.4.bb
+++ b/meta/recipes-devtools/libtool/libtool-native_2.4.bb
@@ -2,7 +2,7 @@ require libtool-${PV}.inc
 
 DEPENDS = ""
 
-PR = "r2"
+PR = "r4"
 SRC_URI += "file://prefix.patch"
 
 inherit native
diff --git a/meta/recipes-devtools/libtool/libtool-nativesdk_2.4.bb 
b/meta/recipes-devtools/libtool/libtool-nativesdk_2.4.bb
index 4f67fed..a96d1d1 100644
--- a/meta/recipes-devtools/libtool/libtool-nativesdk_2.4.bb
+++ b/meta/recipes-devtools/libtool/libtool-nativesdk_2.4.bb
@@ -1,6 +1,6 @@
 require libtool-${PV}.inc
 
-PR = "r2"
+PR = "r4"
 SRC_URI += "file://prefix.patch"
 
 inherit nativesdk
diff --git a/meta/recipes-devtools/libtool/libtool.inc 
b/meta/recipes-devtools/libtool/libtool.inc
index d423e49..ef9095b 100644
--- a/meta/recipes-devtools/libtool/libtool.inc
+++ b/meta/recipes-devtools/libtool/libtool.inc
@@ -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/1 
b/meta/recipes-devtools/libtool/libtool/1
new file mode 100644
index 0000000..b3ee955
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/1
@@ -0,0 +1,55 @@
+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
diff --git a/meta/recipes-devtools/libtool/libtool/fix-rpath.patch 
b/meta/recipes-devtools/libtool/libtool/fix-rpath.patch
new file mode 100644
index 0000000..3cdeaec
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/fix-rpath.patch
@@ -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
diff --git a/meta/recipes-devtools/libtool/libtool_2.4.bb 
b/meta/recipes-devtools/libtool/libtool_2.4.bb
index e1a9a10..3002215 100644
--- a/meta/recipes-devtools/libtool/libtool_2.4.bb
+++ b/meta/recipes-devtools/libtool/libtool_2.4.bb
@@ -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.
-- 
1.7.5.4


_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core

Reply via email to