summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego Elio Pettenò <flameeyes@gentoo.org>2011-06-09 15:53:04 +0000
committerDiego Elio Pettenò <flameeyes@gentoo.org>2011-06-09 15:53:04 +0000
commit57a2de414a7d3e80094b75d9dc4f41b5811b3dbc (patch)
tree3a853ad2edfed71c2941083bfcbbde46a0dc7d48
parentRails 2.2 has been removed. (diff)
downloadhistorical-57a2de414a7d3e80094b75d9dc4f41b5811b3dbc.tar.gz
historical-57a2de414a7d3e80094b75d9dc4f41b5811b3dbc.tar.bz2
historical-57a2de414a7d3e80094b75d9dc4f41b5811b3dbc.zip
Add a gold-specific patch when gold is used as linker, as only libtool 2.2.7 and later actually report it properly. Check two parents directories for configure as sometimes it would otherwise fail (libarchive), and make the debug log a bit more useful by appending rather than replacing and adding the name of the patch/file it gets tested on.
-rw-r--r--eclass/ELT-patches/gold-conf/2.2.610
-rw-r--r--eclass/libtool.eclass30
2 files changed, 31 insertions, 9 deletions
diff --git a/eclass/ELT-patches/gold-conf/2.2.6 b/eclass/ELT-patches/gold-conf/2.2.6
new file mode 100644
index 000000000000..048cbad01187
--- /dev/null
+++ b/eclass/ELT-patches/gold-conf/2.2.6
@@ -0,0 +1,10 @@
+--- configure.orig
++++ configure
+@@ -9933,6 +9933,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>&1` in
++ *GNU\ gold*) supports_anon_versioning=yes ;;
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
diff --git a/eclass/libtool.eclass b/eclass/libtool.eclass
index dd862f559152..38f7a79bfd5d 100644
--- a/eclass/libtool.eclass
+++ b/eclass/libtool.eclass
@@ -1,6 +1,6 @@
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/eclass/libtool.eclass,v 1.90 2010/08/22 22:44:45 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/eclass/libtool.eclass,v 1.91 2011/06/09 15:53:04 flameeyes Exp $
# @ECLASS: libtool.eclass
# @MAINTAINER:
@@ -28,11 +28,16 @@ ELT_try_and_apply_patch() {
local file=$1
local patch=$2
+ (
+ echo ""
+ echo "Trying $(basename "$(dirname "${patch}")")-${patch##*/}.patch on ${file}"
+ ) &>> "${T}/elibtool.log"
+
# We only support patchlevel of 0 - why worry if its static patches?
- if patch -p0 --dry-run "${file}" "${patch}" &> "${T}/elibtool.log" ; then
+ if patch -p0 --dry-run "${file}" "${patch}" &>> "${T}/elibtool.log" ; then
einfo " Applying $(basename "$(dirname "${patch}")")-${patch##*/}.patch ..."
patch -p0 -g0 --no-backup-if-mismatch "${file}" "${patch}" \
- &> "${T}/elibtool.log"
+ &>> "${T}/elibtool.log"
ret=$?
export ELT_APPLIED_PATCHES="${ELT_APPLIED_PATCHES} ${patch##*/}"
else
@@ -161,6 +166,10 @@ elibtoolize() {
*-mint*) elt_patches+=" mint-conf" ;;
esac
+ if $(tc-getLD) --version 2>&1 | grep -qs 'GNU gold'; then
+ elt_patches+=" gold-conf"
+ fi
+
# Reuse "$@" for dirs to patch
set --
if [[ ${do_shallow} == "yes" ]] ; then
@@ -216,7 +225,7 @@ elibtoolize() {
ret=$?
# ltmain.sh and co might be in a subdirectory ...
elif [[ ! -e ${d}/configure ]] && \
- grep -qs 'Transform linux' "${d}/../configure" ; then
+ grep -qs 'Transform linux' "${d}/../configure" ; then
ELT_walk_patches "${d}/../configure" "${p}"
ret=$?
fi
@@ -234,7 +243,7 @@ elibtoolize() {
ret=$?
# ltmain.sh and co might be in a subdirectory ...
elif [[ ! -e ${d}/configure ]] && \
- grep -qs 'version_type=freebsd-' "${d}/../configure" ; then
+ grep -qs 'version_type=freebsd-' "${d}/../configure" ; then
ELT_walk_patches "${d}/../configure" "${p}"
ret=$?
fi
@@ -251,7 +260,7 @@ elibtoolize() {
ret=$?
# ltmain.sh and co might be in a subdirectory ...
elif [[ ! -e ${d}/configure ]] && \
- grep -qs '&& echo \.so ||' "${d}/../configure" ; then
+ grep -qs '&& echo \.so ||' "${d}/../configure" ; then
ELT_walk_patches "${d}/../configure" "${p}"
ret=$?
fi
@@ -293,16 +302,19 @@ elibtoolize() {
fi
done
;;
- mint-conf)
+ mint-conf|gold-conf)
ret=1
local subret=1
if [[ -e ${d}/configure ]]; then
ELT_walk_patches "${d}/configure" "${p}"
subret=$?
# ltmain.sh and co might be in a subdirectory ...
- elif [[ ! -e ${d}/configure && -e ${d}/../configure ]] ; then
+ elif [[ -e ${d}/../configure ]] ; then
ELT_walk_patches "${d}/../configure" "${p}"
subret=$?
+ elif [[ -e ${d}/../../configure ]] ; then
+ ELT_walk_patches "${d}/../../configure" "${p}"
+ subret=$?
fi
if [[ $subret -eq 0 ]]; then
# have at least one patch succeeded.
@@ -353,7 +365,7 @@ elibtoolize() {
# ewarn " Please verify that it is not needed."
:
else
- local version=$(ELT_libtool_version "${d}"/ltmain.sh)
+ local version=$(ELT_libtool_version "${d}"/ltmain.sh)
echo
eerror "Portage patch failed to apply (ltmain.sh version ${version})!"
eerror "Please file a bug report to add a proper patch."