commit:     7fbeab2ed7339b602b134a2bba4016e977266a54
Author:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
AuthorDate: Mon Nov 23 10:19:00 2015 +0000
Commit:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
CommitDate: Mon Nov 23 10:21:58 2015 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7fbeab2e

sys-devel/binutils-config: detect broken cross-compiler rpaths #562460

We've fixed newer cross-binutils builds to use the correct rpaths to find
their internal libs, but existing builds remain broken.  Add some logic to
detect & warn users, but also create the old symlinks so they keep working.

 ...inutils-config-5-r1.ebuild => binutils-config-5-r2.ebuild} |  0
 sys-devel/binutils-config/files/binutils-config-5             | 11 ++++++++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/sys-devel/binutils-config/binutils-config-5-r1.ebuild 
b/sys-devel/binutils-config/binutils-config-5-r2.ebuild
similarity index 100%
rename from sys-devel/binutils-config/binutils-config-5-r1.ebuild
rename to sys-devel/binutils-config/binutils-config-5-r2.ebuild

diff --git a/sys-devel/binutils-config/files/binutils-config-5 
b/sys-devel/binutils-config/files/binutils-config-5
index 86f6abc..2bdd07e 100755
--- a/sys-devel/binutils-config/files/binutils-config-5
+++ b/sys-devel/binutils-config/files/binutils-config-5
@@ -149,7 +149,16 @@ switch_profile() {
        mkdir -p "${dstlib}"
        rm -rf "${ROOT}/${BINPATH_LINKS}"/ldscripts
        atomic_ln "${LIBPATH}/ldscripts" "${dstlib}" "ldscripts"
-       find -L "${dstlib}" -xtype l -name 'lib*' -exec rm -f {} +
+       find -L "${dstlib}" -xtype l -name 'lib*' -delete
+       # Detect older binutils w/broken rpaths. #562460
+       # We can hardcode the "/lib" part since that's what the binutils
+       # configure scripts have.  They did not include any other path.
+       if [[ $(scanelf -qF '%r#F' "${ROOT}/${BINPATH}/as") == */lib ]] ; then
+               ewarn "Old cross-binutils detected; please re-emerge to fix 
(see bug #562460)."
+               for x in lib* ; do
+                       atomic_ln "${LIBPATH}/${x}" "${dstlib}" "${x}"
+               done
+       fi
 
        #
        # Clean out old generated include symlinks

Reply via email to