Apply these patches from our libtool patches as not only are redundant RPATHs a waste of space but they can cause incorrect linking when native packages are restored from sstate. fix-rpath.patch: 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. norm-rpath.patch: Libtool may be passed link paths of the form "/usr/lib/../lib", which fool its detection code into thinking it should be included as an RPATH in the generated binary. Normalize before comparision. Upstream-Status: Inappropriate Signed-off-by: Ross Burton diff --git a/ltmain.sh b/ltmain.sh index 683317c..860a16a 100644 --- a/ltmain.sh +++ b/ltmain.sh @@ -8053,8 +8053,14 @@ EOF 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 @@ -8790,8 +8796,14 @@ EOF 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 @@ -8841,8 +8853,14 @@ EOF 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/ltmain.sh b/ltmain.sh index 683317c..860a16a 100644 --- a/ltmain.sh +++ b/ltmain.sh @@ -8055,8 +8055,10 @@ EOF else # We only want to hardcode in an rpath if it isn't in the # default dlsearch path. + func_normal_abspath "$libdir" + libdir_norm=$func_normal_abspath_result case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; + *" $libdir_norm "*) ;; *) eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" ;; @@ -8798,8 +8800,10 @@ EOF else # We only want to hardcode in an rpath if it isn't in the # default dlsearch path. + func_normal_abspath "$libdir" + libdir_norm=$func_normal_abspath_result case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; + *" $libdir_norm "*) ;; *) eval flag=\"$hardcode_libdir_flag_spec\" rpath+=" $flag" ;;