commit:     92e383747ffc633ff6e85a02bf8cdb856eb1bcdc
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Fri Jun 19 18:15:21 2020 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Fri Jun 19 20:52:43 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=92e38374

toolchain.eclass: drop fix_libtool_files.sh

fixlafiles.awk can mangle two things in .la fils:

1. patch reference 'from .../libstdc++.la' to '-lstdc++'
2. change ${CHOST} when user switches CHOST and rebuilds the system

[1.] is not relevant since gcc-4 in Gentoo where we started deleting
libstdc++.la on gcc installation. Nothing should embed libstdc++.la
paths anymore.

[2.] is a rare one-off step that has a lot more caveats than just .la
file patching.

Generally .la files are tracked by package manager and should not be
changed after they are installed on disk. 'fix_libtool_files.sh' breaks
that invariant.

On top of that portage's FEATURES=fixlafiles removes nested .la files
references.

Let's remove 'fix_libtool_files.sh' and 'fixlafiles.awk' completely.
If really needed we can reintroduce it as a separate tool.

Closes: https://bugs.gentoo.org/722554
Closes: https://bugs.gentoo.org/657330
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>

 .../gnat-gpl/files/awk/fixlafiles.awk-no_gcc_la    | 334 ---------------------
 dev-lang/gnat-gpl/files/fix_libtool_files.sh       |  66 ----
 eclass/toolchain.eclass                            |  40 +--
 sys-devel/gcc/files/awk/fixlafiles.awk             | 313 -------------------
 sys-devel/gcc/files/awk/fixlafiles.awk-no_gcc_la   | 334 ---------------------
 sys-devel/gcc/files/fix_libtool_files.sh           |  66 ----
 6 files changed, 9 insertions(+), 1144 deletions(-)

diff --git a/dev-lang/gnat-gpl/files/awk/fixlafiles.awk-no_gcc_la 
b/dev-lang/gnat-gpl/files/awk/fixlafiles.awk-no_gcc_la
deleted file mode 100644
index 066c8d21681..00000000000
--- a/dev-lang/gnat-gpl/files/awk/fixlafiles.awk-no_gcc_la
+++ /dev/null
@@ -1,334 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-#
-# Helper functions
-#
-function printn(string) {
-       printf("%s", string)
-}
-function einfo(string) {
-       printf(" \033[32;01m*\033[0m %s\n", string)
-}
-function einfon(string) {
-       printf(" \033[32;01m*\033[0m %s", string)
-}
-function ewarn(string) {
-       printf(" \033[33;01m*\033[0m %s\n", string)
-}
-function ewarnn(string) {
-       printf(" \033[33;01m*\033[0m %s", string)
-}
-function eerror(string) {
-       printf(" \033[31;01m*\033[0m %s\n", string)
-}
-
-#
-# assert(condition, errmsg)
-#   assert that a condition is true.  Otherwise exit.
-#
-function assert(condition, string) {
-       if (! condition) {
-               printf("%s:%d: assertion failed: %s\n",
-                      FILENAME, FNR, string) > "/dev/stderr"
-               _assert_exit = 1
-               exit 1
-       }
-}
-
-#
-# system(command, return)
-#   wrapper that normalizes return codes ...
-#
-function dosystem(command, ret) {
-       ret = 0
-       ret = system(command)
-       if (ret == 0)
-               return 1
-       else
-               return 0
-}
-
-#
-# parse_ld_conf(config_file)
-#
-function parse_ld_conf(conf,    pipe, ldsoconf_data, CHILD, y) {
-       pipe = "cd /etc; cat " conf " | sort 2>/dev/null"
-       while(((pipe) | getline ldsoconf_data) > 0) {
-               if (ldsoconf_data ~ /^[[:space:]]*#/)
-                       continue
-               if (ldsoconf_data == "")
-                       continue
-
-               # Handle the "include" keyword
-               if (ldsoconf_data ~ /^include /) {
-                       sub(/^include /, "", ldsoconf_data)
-                       parse_ld_conf(ldsoconf_data)
-                       continue
-               }
-
-               # Remove any trailing comments
-               sub(/#.*$/, "", ldsoconf_data)
-               # Remove any trailing spaces
-               sub(/[[:space:]]+$/, "", ldsoconf_data)
-               # Eat duplicate slashes
-               sub(/\/\//, "/", ldsoconf_data)
-               # Prune trailing /
-               sub(/\/$/, "", ldsoconf_data)
-
-               #
-               # Drop the directory if its a child directory of
-               # one that was already added ...
-               # For example, if we have:
-               #   /usr/lib /usr/libexec /usr/lib/mozilla /usr/lib/nss
-               # We really just want to save /usr/lib /usr/libexec
-               #
-               CHILD = 0
-               for (y in DIRLIST) {
-                       if (ldsoconf_data ~ "^" DIRLIST[y] "(/|$)") {
-                               CHILD = 1
-                               break
-                       }
-               }
-               if (CHILD) continue
-
-               DIRLIST[++LIBCOUNT] = ldsoconf_data
-       }
-       close(pipe)
-}
-
-BEGIN {
-       #
-       # Get our variables from environment
-       #
-       OLDVER = ENVIRON["OLDVER"]
-       OLDCHOST = ENVIRON["OLDCHOST"]
-
-       if (OLDVER == "") {
-               eerror("Could not get OLDVER!");
-               exit 1
-       }
-
-       # Setup some sane defaults
-       LIBCOUNT = 2
-       HAVE_GCC34 = 0
-       DIRLIST[1] = "/lib"
-       DIRLIST[2] = "/usr/lib"
-
-       #
-       # Walk /etc/ld.so.conf to discover all our library paths
-       #
-       parse_ld_conf("/etc/ld.so.conf")
-
-       #
-       # Get line from gcc's output containing CHOST
-       #
-       pipe = "gcc -print-file-name=libgcc.a 2>/dev/null"
-       if ((!((pipe) | getline TMP_CHOST)) || (TMP_CHOST == "")) {
-               close(pipe)
-
-               # If we fail to get the CHOST, see if we can get the CHOST
-               # portage thinks we are using ...
-               pipe = "/usr/bin/portageq envvar 'CHOST'"
-               assert(((pipe) | getline CHOST), "(" pipe ") | getline CHOST")
-       } else {
-               # Check pre gcc-3.4.x versions
-               CHOST = gensub("^.+lib/gcc-lib/([^/]+)/[0-9]+.+$", "\\1", 1, 
TMP_CHOST)
-
-               if (CHOST == TMP_CHOST || CHOST == "") {
-                       # Check gcc-3.4.x or later
-                       CHOST = gensub("^.+lib/gcc/([^/]+)/[0-9]+.+$", "\\1", 
1, TMP_CHOST);
-
-                       if (CHOST == TMP_CHOST || CHOST == "")
-                               CHOST = ""
-                       else
-                               HAVE_GCC34 = 1
-               }
-       }
-       close(pipe)
-
-       if (CHOST == "") {
-               eerror("Could not get gcc's CHOST!")
-               exit 1
-       }
-
-       if (OLDCHOST != "")
-               if (OLDCHOST == CHOST)
-                       OLDCHOST = ""
-
-       GCCLIBPREFIX_OLD = "/usr/lib/gcc-lib/"
-       GCCLIBPREFIX_NEW = "/usr/lib/gcc/"
-
-       if (HAVE_GCC34)
-               GCCLIBPREFIX = GCCLIBPREFIX_NEW
-       else
-               GCCLIBPREFIX = GCCLIBPREFIX_OLD
-
-       GCCLIB = GCCLIBPREFIX CHOST
-
-       if (OLDCHOST != "") {
-               OLDGCCLIB1 = GCCLIBPREFIX_OLD OLDCHOST
-               OLDGCCLIB2 = GCCLIBPREFIX_NEW OLDCHOST
-       }
-
-       # Get current gcc's version
-       pipe = "gcc -dumpversion"
-       assert(((pipe) | getline NEWVER), "(" pipe ") | getline NEWVER)")
-       close(pipe)
-
-       if (NEWVER == "") {
-               eerror("Could not get gcc's version!")
-               exit 1
-       }
-
-       # Nothing to do ?
-       # NB: Do not check for (OLDVER == NEWVER) anymore, as we might need to
-       #     replace libstdc++.la ....
-       if ((OLDVER == "") && (OLDCHOST == ""))
-               exit 0
-
-       #
-       # Ok, now let's scan for the .la files and actually fix them up
-       #
-       for (x = 1; x <= LIBCOUNT; x++) {
-               # Do nothing if the target dir is gcc's internal library path
-               if (DIRLIST[x] ~ GCCLIBPREFIX_OLD ||
-                   DIRLIST[x] ~ GCCLIBPREFIX_NEW)
-                       continue
-
-               einfo("  [" x "/" LIBCOUNT "] Scanning " DIRLIST[x] " ...")
-
-               pipe = "find " DIRLIST[x] "/ -name '*.la' 2>/dev/null"
-               while (((pipe) | getline la_files) > 0) {
-
-                       # Do nothing if the .la file is located in gcc's 
internal lib path
-                       if (la_files ~ GCCLIBPREFIX_OLD ||
-                           la_files ~ GCCLIBPREFIX_NEW)
-                               continue
-
-                       CHANGED = 0
-                       CHOST_CHANGED = 0
-
-                       # See if we need to fix the .la file
-                       while ((getline la_data < (la_files)) > 0) {
-                               if (OLDCHOST != "") {
-                                       if ((gsub(OLDGCCLIB1 "[/[:space:]]+",
-                                                 GCCLIB, la_data) > 0) ||
-                                           (gsub(OLDGCCLIB2 "[/[:space:]]+",
-                                                 GCCLIB, la_data) > 0)) {
-                                               CHANGED = 1
-                                               CHOST_CHANGED = 1
-                                       }
-                               }
-                               if (OLDVER != NEWVER) {
-                                       if ((gsub(GCCLIBPREFIX_OLD CHOST "/" 
OLDVER "[/[:space:]]*",
-                                                 GCCLIB "/" NEWVER, la_data) > 
0) ||
-                                           (gsub(GCCLIBPREFIX_NEW CHOST "/" 
OLDVER "[/[:space:]]*",
-                                                 GCCLIB "/" NEWVER, la_data) > 
0))
-                                               CHANGED = 1
-                               }
-                               # We now check if we have libstdc++.la, as we 
remove the
-                               # libtool linker scripts for gcc ...
-                               # We do this last, as we only match the new 
paths
-                               if (gsub(GCCLIB "/" NEWVER 
"/libstdc\\+\\+\\.la",
-                                        "-lstdc++", la_data) > 0)
-                                       CHANGED = 1
-                       }
-                       close(la_files)
-
-                       # Do the actual changes in a second loop, as we can then
-                       # verify that CHOST_CHANGED among things is correct ...
-                       if (CHANGED) {
-                               ewarnn("    FIXING: " la_files " ...[")
-
-                               # Clear the temp file (removing rather than 
'>foo' is better
-                               # out of a security point of view?)
-                               dosystem("rm -f " la_files ".new")
-
-                               while ((getline la_data < (la_files)) > 0) {
-                                       if (OLDCHOST != "") {
-                                               tmpstr = gensub(OLDGCCLIB1 
"([/[:space:]]+)",
-                                                               GCCLIB "\\1", 
"g", la_data)
-                                               tmpstr = gensub(OLDGCCLIB2 
"([/[:space:]]+)",
-                                                               GCCLIB "\\1", 
"g", tmpstr)
-
-                                               if (la_data != tmpstr) {
-                                                       printn("c")
-                                                       la_data = tmpstr
-                                               }
-
-                                               if (CHOST_CHANGED > 0) {
-                                                       # We try to be careful 
about CHOST changes outside
-                                                       # the gcc library path 
(meaning we cannot match it
-                                                       # via /GCCLIBPREFIX 
CHOST/) ...
-
-                                                       # Catch:
-                                                       #
-                                                       #  dependency_libs=' 
-L/usr/CHOST/{bin,lib}'
-                                                       #
-                                                       gsub("-L/usr/" OLDCHOST 
"/",
-                                                            "-L/usr/" CHOST 
"/", la_data)
-                                                       # Catch:
-                                                       #
-                                                       #  dependency_libs=' 
-L/usr/lib/gcc-lib/CHOST/VER/../../../../CHOST/lib'
-                                                       #
-                                                       la_data = gensub("(" 
GCCLIB "/[^[:space:]]+)/" OLDCHOST "/",
-                                                                        "\\1/" 
CHOST "/", "g", la_data)
-                                               }
-                                       }
-
-                                       if (OLDVER != NEWVER) {
-                                               # Catch:
-                                               #
-                                               #  dependency_libs=' 
-L/usr/lib/gcc/CHOST/VER'
-                                               #
-                                               tmpstr = 
gensub(GCCLIBPREFIX_OLD CHOST "/" OLDVER "([/[:space:]]+)",
-                                                               GCCLIB "/" 
NEWVER "\\1", "g", la_data)
-                                               tmpstr = 
gensub(GCCLIBPREFIX_NEW CHOST "/" OLDVER "([/[:space:]]+)",
-                                                               GCCLIB "/" 
NEWVER "\\1", "g", tmpstr)
-
-                                               if (la_data != tmpstr) {
-                                                       # Catch:
-                                                       #
-                                                       #  dependency_libs=' 
-L/usr/lib/gcc-lib/../../CHOST/lib'
-                                                       #
-                                                       # in cases where we 
have gcc34
-                                                       tmpstr = 
gensub(GCCLIBPREFIX_OLD "(../../" CHOST "/lib)",
-                                                                       
GCCLIBPREFIX "\\1", "g", tmpstr)
-                                                       tmpstr = 
gensub(GCCLIBPREFIX_NEW "(../../" CHOST "/lib)",
-                                                                       
GCCLIBPREFIX "\\1", "g", tmpstr)
-                                                       printn("v")
-                                                       la_data = tmpstr
-                                               }
-                                       }
-
-                                       # We now check if we have libstdc++.la, 
as we remove the
-                                       # libtool linker scripts for gcc and 
any referencese in any
-                                       # libtool linker scripts.
-                                       # We do this last, as we only match the 
new paths
-                                       tmpstr = gensub(GCCLIB "/" NEWVER 
"/libstdc\\+\\+\\.la",
-                                                       "-lstdc++", "g", 
la_data);
-                                       if (la_data != tmpstr) {
-                                               printn("l")
-                                               la_data = tmpstr
-                                       }
-                                       
-                                       print la_data >> (la_files ".new")
-                               }
-
-                               if (CHANGED)
-                                       print "]"
-
-                               close(la_files)
-                               close(la_files ".new")
-
-                               assert(dosystem("mv -f " la_files ".new " 
la_files),
-                                      "dosystem(\"mv -f " la_files ".new " 
la_files "\")")
-                       }
-               }
-
-               close(pipe)
-       }
-}
-
-# vim:ts=4

diff --git a/dev-lang/gnat-gpl/files/fix_libtool_files.sh 
b/dev-lang/gnat-gpl/files/fix_libtool_files.sh
deleted file mode 100644
index 28f9beb36ba..00000000000
--- a/dev-lang/gnat-gpl/files/fix_libtool_files.sh
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/bin/sh
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-usage() {
-cat << "USAGE_END"
-Usage: fix_libtool_files.sh <old-gcc-version> [--oldarch <old-CHOST>]
-
-    Where <old-gcc-version> is the version number of the
-    previous gcc version.  For example, if you updated to
-    gcc-3.2.1, and you had gcc-3.2 installed, run:
-
-      # fix_libtool_files.sh 3.2
-
-    If you updated to gcc-3.2.3, and the old CHOST was i586-pc-linux-gnu
-    but you now have CHOST as i686-pc-linux-gnu, run:
-
-      # fix_libtool_files.sh 3.2 --oldarch i586-pc-linux-gnu
-
-    Note that if only the CHOST and not the version changed, you can run
-    it with the current version and the '--oldarch <old-CHOST>' arguments,
-    and it will do the expected:
-
-      # fix_libtool_files.sh `gcc -dumpversion` --oldarch i586-pc-linux-gnu
-
-USAGE_END
-       exit 1
-}
-
-case $2 in
---oldarch) [ $# -ne 3 ] && usage ;;
-*)         [ $# -ne 1 ] && usage ;;
-esac
-
-ARGV1=$1
-ARGV2=$2
-ARGV3=$3
-
-. /etc/profile || exit 1
-
-if [ ${EUID:-0} -ne 0 ] ; then
-       echo "${0##*/}: Must be root."
-       exit 1
-fi
-
-# make sure the files come out sane
-umask 0022
-
-OLDCHOST=
-[ "${ARGV2}" = "--oldarch" ] && OLDCHOST=${ARGV3}
-
-AWKDIR="/usr/share/gcc-data"
-
-if [ ! -r "${AWKDIR}/fixlafiles.awk" ] ; then
-       echo "${0##*/}: ${AWKDIR}/fixlafiles.awk does not exist!"
-       exit 1
-fi
-
-OLDVER=${ARGV1}
-
-export OLDVER OLDCHOST
-
-echo "Scanning libtool files for hardcoded gcc library paths..."
-exec gawk -f "${AWKDIR}/fixlafiles.awk"
-
-# vim:ts=4

diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass
index 1e164957b2b..8384e565d86 100644
--- a/eclass/toolchain.eclass
+++ b/eclass/toolchain.eclass
@@ -1914,13 +1914,8 @@ toolchain_src_install() {
        # prune empty dirs left behind
        find "${ED}" -depth -type d -delete 2>/dev/null
 
-       # Rather install the script, else portage with changing $FILESDIR
-       # between binary and source package borks things ....
        if ! is_crosscompile && [[ ${PN} != "kgcc64" ]] ; then
-               insinto "${DATAPATH#${EPREFIX}}"
-               newins "$(prefixify_ro 
"${FILESDIR}"/awk/fixlafiles.awk-no_gcc_la)" fixlafiles.awk || die
                exeinto "${DATAPATH#${EPREFIX}}"
-               doexe "$(prefixify_ro "${FILESDIR}"/fix_libtool_files.sh)" || 
die
                doexe "${FILESDIR}"/c{89,99} || die
        fi
 
@@ -2225,24 +2220,12 @@ toolchain_pkg_postinst() {
        fi
 
        if ! is_crosscompile && [[ ${PN} != "kgcc64" ]] ; then
-               echo
-               ewarn "If you have issues with packages unable to locate 
libstdc++.la,"
-               ewarn "then try running 'fix_libtool_files.sh' on the old gcc 
versions."
-               echo
-               ewarn "You might want to review the GCC upgrade guide when 
moving between"
-               ewarn "major versions (like 4.2 to 4.3):"
-               ewarn "https://wiki.gentoo.org/wiki/Upgrading_GCC";
-               echo
-
-               # Clean up old paths
-               rm -f "${EROOT%/}"/*/rcscripts/awk/fixlafiles.awk 
"${EROOT%/}"/sbin/fix_libtool_files.sh
-               rmdir "${EROOT%/}"/*/rcscripts{/awk,} 2>/dev/null
-
-               mkdir -p "${EROOT%/}"/usr/{share/gcc-data,sbin,bin}
-               # DATAPATH has EPREFIX already, use ROOT with it
-               cp "${ROOT%/}${DATAPATH}"/fixlafiles.awk 
"${EROOT%/}"/usr/share/gcc-data/ || die
-               cp "${ROOT%/}${DATAPATH}"/fix_libtool_files.sh 
"${EROOT%/}"/usr/sbin/ || die
+               # gcc stopped installing .la files fixer in June 2020.
+               # Cleaning can be removed in June 2022.
+               rm -f "${EROOT%/}"/sbin/fix_libtool_files.sh
+               rm -f "${EROOT%/}"/usr/share/gcc-data/fixlafiles.awk
 
+               mkdir -p "${EROOT%/}"/usr/bin
                # Since these aren't critical files and portage sucks with
                # handling of binpkgs, don't require these to be found
                cp "${ROOT%/}${DATAPATH}"/c{89,99} "${EROOT%/}"/usr/bin/ 
2>/dev/null
@@ -2271,15 +2254,10 @@ toolchain_pkg_postrm() {
                return 0
        fi
 
-       # ROOT isnt handled by the script
-       [[ ${ROOT%/} ]] && return 0
-
-       if [[ ! -e ${LIBPATH}/libstdc++.so ]] ; then
-               einfo "Running 'fix_libtool_files.sh ${GCC_RELEASE_VER}'"
-               fix_libtool_files.sh ${GCC_RELEASE_VER}
-       fi
-
-       return 0
+       # gcc stopped installing .la files fixer in June 2020.
+       # Cleaning can be removed in June 2022.
+       rm -f "${EROOT%/}"/sbin/fix_libtool_files.sh
+       rm -f "${EROOT%/}"/usr/share/gcc-data/fixlafiles.awk
 }
 
 do_gcc_config() {

diff --git a/sys-devel/gcc/files/awk/fixlafiles.awk 
b/sys-devel/gcc/files/awk/fixlafiles.awk
deleted file mode 100644
index aa2ecb60266..00000000000
--- a/sys-devel/gcc/files/awk/fixlafiles.awk
+++ /dev/null
@@ -1,313 +0,0 @@
-# Copyright 1999-2005 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-#
-# Helper functions
-#
-function printn(string) {
-       printf("%s", string)
-}
-function einfo(string) {
-       printf(" \033[32;01m*\033[0m %s\n", string)
-}
-function einfon(string) {
-       printf(" \033[32;01m*\033[0m %s", string)
-}
-function ewarn(string) {
-       printf(" \033[33;01m*\033[0m %s\n", string)
-}
-function ewarnn(string) {
-       printf(" \033[33;01m*\033[0m %s", string)
-}
-function eerror(string) {
-       printf(" \033[31;01m*\033[0m %s\n", string)
-}
-
-#
-# assert(condition, errmsg)
-#   assert that a condition is true.  Otherwise exit.
-#
-function assert(condition, string) {
-       if (! condition) {
-               printf("%s:%d: assertion failed: %s\n",
-                      FILENAME, FNR, string) > "/dev/stderr"
-               _assert_exit = 1
-               exit 1
-       }
-}
-
-#
-# system(command, return)
-#   wrapper that normalizes return codes ...
-#
-function dosystem(command, ret) {
-       ret = 0
-       ret = system(command)
-       if (ret == 0)
-               return 1
-       else
-               return 0
-}
-
-BEGIN {
-       #
-       # Get our variables from environment
-       #
-       OLDVER = ENVIRON["OLDVER"]
-       OLDCHOST = ENVIRON["OLDCHOST"]
-
-       if (OLDVER == "") {
-               eerror("Could not get OLDVER!");
-               exit 1
-       }
-
-       # Setup some sane defaults
-       LIBCOUNT = 2
-       HAVE_GCC34 = 0
-       DIRLIST[1] = "/lib"
-       DIRLIST[2] = "/usr/lib"
-
-       #
-       # Walk /etc/ld.so.conf to discover all our library paths
-       #
-       pipe = "cat /etc/ld.so.conf | sort 2>/dev/null"
-       while(((pipe) | getline ldsoconf_data) > 0) {
-               if (ldsoconf_data !~ /^[[:space:]]*#/) {
-                       if (ldsoconf_data == "") continue
-
-                       # Remove any trailing comments
-                       sub(/#.*$/, "", ldsoconf_data)
-                       # Remove any trailing spaces
-                       sub(/[[:space:]]+$/, "", ldsoconf_data)
-
-                       # If there's more than one path per line, split 
-                       # it up as if they were sep lines
-                       split(ldsoconf_data, nodes, /[:,[:space:]]/)
-
-                       # Now add the rest from ld.so.conf
-                       for (x in nodes) {
-                               # wtf does this line do ?
-                               sub(/=.*/, "", nodes[x])
-                               # Prune trailing /
-                               sub(/\/$/, "", nodes[x])
-
-                               if (nodes[x] == "") continue
-
-                               #
-                               # Drop the directory if its a child directory of
-                               # one that was already added ...
-                               # For example, if we have:
-                               #   /usr/lib /usr/libexec /usr/lib/mozilla 
/usr/lib/nss
-                               # We really just want to save /usr/lib 
/usr/libexec
-                               #
-                               CHILD = 0
-                               for (y in DIRLIST) {
-                                       if (nodes[x] ~ "^" DIRLIST[y] "(/|$)") {
-                                               CHILD = 1
-                                               break
-                                       }
-                               }
-                               if (CHILD) continue
-
-                               DIRLIST[++LIBCOUNT] = nodes[x]
-                       }
-               }
-       }
-       close(pipe)
-
-       #
-       # Get line from gcc's output containing CHOST
-       #
-       pipe = "gcc -print-file-name=libgcc.a 2>/dev/null"
-       if ((!((pipe) | getline TMP_CHOST)) || (TMP_CHOST == "")) {
-               close(pipe)
-
-               # If we fail to get the CHOST, see if we can get the CHOST
-               # portage thinks we are using ...
-               pipe = "/usr/bin/portageq envvar 'CHOST'"
-               assert(((pipe) | getline CHOST), "(" pipe ") | getline CHOST")
-       } else {
-               # Check pre gcc-3.4.x versions
-               CHOST = gensub("^.+lib/gcc-lib/([^/]+)/[0-9]+.+$", "\\1", 1, 
TMP_CHOST)
-
-               if (CHOST == TMP_CHOST || CHOST == "") {
-                       # Check gcc-3.4.x or later
-                       CHOST = gensub("^.+lib/gcc/([^/]+)/[0-9]+.+$", "\\1", 
1, TMP_CHOST);
-
-                       if (CHOST == TMP_CHOST || CHOST == "")
-                               CHOST = ""
-                       else
-                               HAVE_GCC34 = 1
-               }
-       }
-       close(pipe)
-
-       if (CHOST == "") {
-               eerror("Could not get gcc's CHOST!")
-               exit 1
-       }
-
-       if (OLDCHOST != "")
-               if (OLDCHOST == CHOST)
-                       OLDCHOST = ""
-
-       GCCLIBPREFIX_OLD = "/usr/lib/gcc-lib/"
-       GCCLIBPREFIX_NEW = "/usr/lib/gcc/"
-
-       if (HAVE_GCC34)
-               GCCLIBPREFIX = GCCLIBPREFIX_NEW
-       else
-               GCCLIBPREFIX = GCCLIBPREFIX_OLD
-
-       GCCLIB = GCCLIBPREFIX CHOST
-
-       if (OLDCHOST != "") {
-               OLDGCCLIB1 = GCCLIBPREFIX_OLD OLDCHOST
-               OLDGCCLIB2 = GCCLIBPREFIX_NEW OLDCHOST
-       }
-
-       # Get current gcc's version
-       pipe = "gcc -dumpversion"
-       assert(((pipe) | getline NEWVER), "(" pipe ") | getline NEWVER)")
-       close(pipe)
-
-       if (NEWVER == "") {
-               eerror("Could not get gcc's version!")
-               exit 1
-       }
-
-       # Nothing to do ?
-       if ((OLDVER == NEWVER) && (OLDCHOST == ""))
-               exit 0
-
-       #
-       # Ok, now let's scan for the .la files and actually fix them up
-       #
-       for (x = 1; x <= LIBCOUNT; x++) {
-               # Do nothing if the target dir is gcc's internal library path
-               if (DIRLIST[x] ~ GCCLIBPREFIX_OLD ||
-                   DIRLIST[x] ~ GCCLIBPREFIX_NEW)
-                       continue
-
-               einfo("  [" x "/" LIBCOUNT "] Scanning " DIRLIST[x] " ...")
-
-               pipe = "find " DIRLIST[x] "/ -name '*.la' 2>/dev/null"
-               while (((pipe) | getline la_files) > 0) {
-
-                       # Do nothing if the .la file is located in gcc's 
internal lib path
-                       if (la_files ~ GCCLIBPREFIX_OLD ||
-                           la_files ~ GCCLIBPREFIX_NEW)
-                               continue
-
-                       CHANGED = 0
-                       CHOST_CHANGED = 0
-
-                       # See if we need to fix the .la file
-                       while ((getline la_data < (la_files)) > 0) {
-                               if (OLDCHOST != "") {
-                                       if ((gsub(OLDGCCLIB1 "[/[:space:]]+",
-                                                 GCCLIB, la_data) > 0) ||
-                                           (gsub(OLDGCCLIB2 "[/[:space:]]+",
-                                                 GCCLIB, la_data) > 0)) {
-                                               CHANGED = 1
-                                               CHOST_CHANGED = 1
-                                       }
-                               }
-                               if (OLDVER != NEWVER) {
-                                       if ((gsub(GCCLIBPREFIX_OLD CHOST "/" 
OLDVER "[/[:space:]]*",
-                                                 GCCLIB "/" NEWVER, la_data) > 
0) ||
-                                           (gsub(GCCLIBPREFIX_NEW CHOST "/" 
OLDVER "[/[:space:]]*",
-                                                 GCCLIB "/" NEWVER, la_data) > 
0))
-                                               CHANGED = 1
-                               }
-                       }
-                       close(la_files)
-
-                       # Do the actual changes in a second loop, as we can then
-                       # verify that CHOST_CHANGED among things is correct ...
-                       if (CHANGED) {
-                               ewarnn("    FIXING: " la_files " ...")
-
-                               if (CHANGED)
-                                       printn("[")
-
-                               # Clear the temp file (removing rather than 
'>foo' is better
-                               # out of a security point of view?)
-                               dosystem("rm -f " la_files ".new")
-
-                               while ((getline la_data < (la_files)) > 0) {
-                                       if (OLDCHOST != "") {
-                                               tmpstr = gensub(OLDGCCLIB1 
"([/[:space:]]+)",
-                                                               GCCLIB "\\1", 
"g", la_data)
-                                               tmpstr = gensub(OLDGCCLIB2 
"([/[:space:]]+)",
-                                                               GCCLIB "\\1", 
"g", tmpstr)
-
-                                               if (la_data != tmpstr) {
-                                                       printn("c")
-                                                       la_data = tmpstr
-                                               }
-
-                                               if (CHOST_CHANGED > 0) {
-                                                       # We try to be careful 
about CHOST changes outside
-                                                       # the gcc library path 
(meaning we cannot match it
-                                                       # via /GCCLIBPREFIX 
CHOST/) ...
-
-                                                       # Catch:
-                                                       #
-                                                       #  dependency_libs=' 
-L/usr/CHOST/{bin,lib}'
-                                                       #
-                                                       gsub("-L/usr/" OLDCHOST 
"/",
-                                                            "-L/usr/" CHOST 
"/", la_data)
-                                                       # Catch:
-                                                       #
-                                                       #  dependency_libs=' 
-L/usr/lib/gcc-lib/CHOST/VER/../../../../CHOST/lib'
-                                                       #
-                                                       la_data = gensub("(" 
GCCLIB "/[^[:space:]]+)/" OLDCHOST "/",
-                                                                        "\\1/" 
CHOST "/", "g", la_data)
-                                               }
-                                       }
-
-                                       if (OLDVER != NEWVER) {
-                                               # Catch:
-                                               #
-                                               #  dependency_libs=' 
-L/usr/lib/gcc/CHOST/VER'
-                                               #
-                                               tmpstr = 
gensub(GCCLIBPREFIX_OLD CHOST "/" OLDVER "([/[:space:]]+)",
-                                                               GCCLIB "/" 
NEWVER "\\1", "g", la_data)
-                                               tmpstr = 
gensub(GCCLIBPREFIX_NEW CHOST "/" OLDVER "([/[:space:]]+)",
-                                                               GCCLIB "/" 
NEWVER "\\1", "g", tmpstr)
-
-                                               if (la_data != tmpstr) {
-                                                       # Catch:
-                                                       #
-                                                       #  dependency_libs=' 
-L/usr/lib/gcc-lib/../../CHOST/lib'
-                                                       #
-                                                       # in cases where we 
have gcc34
-                                                       tmpstr = 
gensub(GCCLIBPREFIX_OLD "(../../" CHOST "/lib)",
-                                                                       
GCCLIBPREFIX "\\1", "g", tmpstr)
-                                                       tmpstr = 
gensub(GCCLIBPREFIX_NEW "(../../" CHOST "/lib)",
-                                                                       
GCCLIBPREFIX "\\1", "g", tmpstr)
-                                                       printn("v")
-                                                       la_data = tmpstr
-                                               }
-                                       }
-
-                                       print la_data >> (la_files ".new")
-                               }
-
-                               if (CHANGED)
-                                       print "]"
-
-                               close(la_files)
-                               close(la_files ".new")
-
-                               assert(dosystem("mv -f " la_files ".new " 
la_files),
-                                      "dosystem(\"mv -f " la_files ".new " 
la_files "\")")
-                       }
-               }
-
-               close(pipe)
-       }
-}
-
-# vim:ts=4

diff --git a/sys-devel/gcc/files/awk/fixlafiles.awk-no_gcc_la 
b/sys-devel/gcc/files/awk/fixlafiles.awk-no_gcc_la
deleted file mode 100644
index d95a3c06e78..00000000000
--- a/sys-devel/gcc/files/awk/fixlafiles.awk-no_gcc_la
+++ /dev/null
@@ -1,334 +0,0 @@
-# Copyright 1999-2005 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-#
-# Helper functions
-#
-function printn(string) {
-       printf("%s", string)
-}
-function einfo(string) {
-       printf(" \033[32;01m*\033[0m %s\n", string)
-}
-function einfon(string) {
-       printf(" \033[32;01m*\033[0m %s", string)
-}
-function ewarn(string) {
-       printf(" \033[33;01m*\033[0m %s\n", string)
-}
-function ewarnn(string) {
-       printf(" \033[33;01m*\033[0m %s", string)
-}
-function eerror(string) {
-       printf(" \033[31;01m*\033[0m %s\n", string)
-}
-
-#
-# assert(condition, errmsg)
-#   assert that a condition is true.  Otherwise exit.
-#
-function assert(condition, string) {
-       if (! condition) {
-               printf("%s:%d: assertion failed: %s\n",
-                      FILENAME, FNR, string) > "/dev/stderr"
-               _assert_exit = 1
-               exit 1
-       }
-}
-
-#
-# system(command, return)
-#   wrapper that normalizes return codes ...
-#
-function dosystem(command, ret) {
-       ret = 0
-       ret = system(command)
-       if (ret == 0)
-               return 1
-       else
-               return 0
-}
-
-#
-# parse_ld_conf(config_file)
-#
-function parse_ld_conf(conf,    pipe, ldsoconf_data, CHILD, y) {
-       pipe = "cd /etc; cat " conf " | sort 2>/dev/null"
-       while(((pipe) | getline ldsoconf_data) > 0) {
-               if (ldsoconf_data ~ /^[[:space:]]*#/)
-                       continue
-               if (ldsoconf_data == "")
-                       continue
-
-               # Handle the "include" keyword
-               if (ldsoconf_data ~ /^include /) {
-                       sub(/^include /, "", ldsoconf_data)
-                       parse_ld_conf(ldsoconf_data)
-                       continue
-               }
-
-               # Remove any trailing comments
-               sub(/#.*$/, "", ldsoconf_data)
-               # Remove any trailing spaces
-               sub(/[[:space:]]+$/, "", ldsoconf_data)
-               # Eat duplicate slashes
-               sub(/\/\//, "/", ldsoconf_data)
-               # Prune trailing /
-               sub(/\/$/, "", ldsoconf_data)
-
-               #
-               # Drop the directory if its a child directory of
-               # one that was already added ...
-               # For example, if we have:
-               #   /usr/lib /usr/libexec /usr/lib/mozilla /usr/lib/nss
-               # We really just want to save /usr/lib /usr/libexec
-               #
-               CHILD = 0
-               for (y in DIRLIST) {
-                       if (ldsoconf_data ~ "^" DIRLIST[y] "(/|$)") {
-                               CHILD = 1
-                               break
-                       }
-               }
-               if (CHILD) continue
-
-               DIRLIST[++LIBCOUNT] = ldsoconf_data
-       }
-       close(pipe)
-}
-
-BEGIN {
-       #
-       # Get our variables from environment
-       #
-       OLDVER = ENVIRON["OLDVER"]
-       OLDCHOST = ENVIRON["OLDCHOST"]
-
-       if (OLDVER == "") {
-               eerror("Could not get OLDVER!");
-               exit 1
-       }
-
-       # Setup some sane defaults
-       LIBCOUNT = 2
-       HAVE_GCC34 = 0
-       DIRLIST[1] = "/lib"
-       DIRLIST[2] = "/usr/lib"
-
-       #
-       # Walk /etc/ld.so.conf to discover all our library paths
-       #
-       parse_ld_conf("/etc/ld.so.conf")
-
-       #
-       # Get line from gcc's output containing CHOST
-       #
-       pipe = "gcc -print-file-name=libgcc.a 2>/dev/null"
-       if ((!((pipe) | getline TMP_CHOST)) || (TMP_CHOST == "")) {
-               close(pipe)
-
-               # If we fail to get the CHOST, see if we can get the CHOST
-               # portage thinks we are using ...
-               pipe = "/usr/bin/portageq envvar 'CHOST'"
-               assert(((pipe) | getline CHOST), "(" pipe ") | getline CHOST")
-       } else {
-               # Check pre gcc-3.4.x versions
-               CHOST = gensub("^.+lib/gcc-lib/([^/]+)/[0-9]+.+$", "\\1", 1, 
TMP_CHOST)
-
-               if (CHOST == TMP_CHOST || CHOST == "") {
-                       # Check gcc-3.4.x or later
-                       CHOST = gensub("^.+lib/gcc/([^/]+)/[0-9]+.+$", "\\1", 
1, TMP_CHOST);
-
-                       if (CHOST == TMP_CHOST || CHOST == "")
-                               CHOST = ""
-                       else
-                               HAVE_GCC34 = 1
-               }
-       }
-       close(pipe)
-
-       if (CHOST == "") {
-               eerror("Could not get gcc's CHOST!")
-               exit 1
-       }
-
-       if (OLDCHOST != "")
-               if (OLDCHOST == CHOST)
-                       OLDCHOST = ""
-
-       GCCLIBPREFIX_OLD = "/usr/lib/gcc-lib/"
-       GCCLIBPREFIX_NEW = "/usr/lib/gcc/"
-
-       if (HAVE_GCC34)
-               GCCLIBPREFIX = GCCLIBPREFIX_NEW
-       else
-               GCCLIBPREFIX = GCCLIBPREFIX_OLD
-
-       GCCLIB = GCCLIBPREFIX CHOST
-
-       if (OLDCHOST != "") {
-               OLDGCCLIB1 = GCCLIBPREFIX_OLD OLDCHOST
-               OLDGCCLIB2 = GCCLIBPREFIX_NEW OLDCHOST
-       }
-
-       # Get current gcc's version
-       pipe = "gcc -dumpversion"
-       assert(((pipe) | getline NEWVER), "(" pipe ") | getline NEWVER)")
-       close(pipe)
-
-       if (NEWVER == "") {
-               eerror("Could not get gcc's version!")
-               exit 1
-       }
-
-       # Nothing to do ?
-       # NB: Do not check for (OLDVER == NEWVER) anymore, as we might need to
-       #     replace libstdc++.la ....
-       if ((OLDVER == "") && (OLDCHOST == ""))
-               exit 0
-
-       #
-       # Ok, now let's scan for the .la files and actually fix them up
-       #
-       for (x = 1; x <= LIBCOUNT; x++) {
-               # Do nothing if the target dir is gcc's internal library path
-               if (DIRLIST[x] ~ GCCLIBPREFIX_OLD ||
-                   DIRLIST[x] ~ GCCLIBPREFIX_NEW)
-                       continue
-
-               einfo("  [" x "/" LIBCOUNT "] Scanning " DIRLIST[x] " ...")
-
-               pipe = "find " DIRLIST[x] "/ -name '*.la' 2>/dev/null"
-               while (((pipe) | getline la_files) > 0) {
-
-                       # Do nothing if the .la file is located in gcc's 
internal lib path
-                       if (la_files ~ GCCLIBPREFIX_OLD ||
-                           la_files ~ GCCLIBPREFIX_NEW)
-                               continue
-
-                       CHANGED = 0
-                       CHOST_CHANGED = 0
-
-                       # See if we need to fix the .la file
-                       while ((getline la_data < (la_files)) > 0) {
-                               if (OLDCHOST != "") {
-                                       if ((gsub(OLDGCCLIB1 "[/[:space:]]+",
-                                                 GCCLIB, la_data) > 0) ||
-                                           (gsub(OLDGCCLIB2 "[/[:space:]]+",
-                                                 GCCLIB, la_data) > 0)) {
-                                               CHANGED = 1
-                                               CHOST_CHANGED = 1
-                                       }
-                               }
-                               if (OLDVER != NEWVER) {
-                                       if ((gsub(GCCLIBPREFIX_OLD CHOST "/" 
OLDVER "[/[:space:]]*",
-                                                 GCCLIB "/" NEWVER, la_data) > 
0) ||
-                                           (gsub(GCCLIBPREFIX_NEW CHOST "/" 
OLDVER "[/[:space:]]*",
-                                                 GCCLIB "/" NEWVER, la_data) > 
0))
-                                               CHANGED = 1
-                               }
-                               # We now check if we have libstdc++.la, as we 
remove the
-                               # libtool linker scripts for gcc ...
-                               # We do this last, as we only match the new 
paths
-                               if (gsub(GCCLIB "/" NEWVER 
"/libstdc\\+\\+\\.la",
-                                        "-lstdc++", la_data) > 0)
-                                       CHANGED = 1
-                       }
-                       close(la_files)
-
-                       # Do the actual changes in a second loop, as we can then
-                       # verify that CHOST_CHANGED among things is correct ...
-                       if (CHANGED) {
-                               ewarnn("    FIXING: " la_files " ...[")
-
-                               # Clear the temp file (removing rather than 
'>foo' is better
-                               # out of a security point of view?)
-                               dosystem("rm -f " la_files ".new")
-
-                               while ((getline la_data < (la_files)) > 0) {
-                                       if (OLDCHOST != "") {
-                                               tmpstr = gensub(OLDGCCLIB1 
"([/[:space:]]+)",
-                                                               GCCLIB "\\1", 
"g", la_data)
-                                               tmpstr = gensub(OLDGCCLIB2 
"([/[:space:]]+)",
-                                                               GCCLIB "\\1", 
"g", tmpstr)
-
-                                               if (la_data != tmpstr) {
-                                                       printn("c")
-                                                       la_data = tmpstr
-                                               }
-
-                                               if (CHOST_CHANGED > 0) {
-                                                       # We try to be careful 
about CHOST changes outside
-                                                       # the gcc library path 
(meaning we cannot match it
-                                                       # via /GCCLIBPREFIX 
CHOST/) ...
-
-                                                       # Catch:
-                                                       #
-                                                       #  dependency_libs=' 
-L/usr/CHOST/{bin,lib}'
-                                                       #
-                                                       gsub("-L/usr/" OLDCHOST 
"/",
-                                                            "-L/usr/" CHOST 
"/", la_data)
-                                                       # Catch:
-                                                       #
-                                                       #  dependency_libs=' 
-L/usr/lib/gcc-lib/CHOST/VER/../../../../CHOST/lib'
-                                                       #
-                                                       la_data = gensub("(" 
GCCLIB "/[^[:space:]]+)/" OLDCHOST "/",
-                                                                        "\\1/" 
CHOST "/", "g", la_data)
-                                               }
-                                       }
-
-                                       if (OLDVER != NEWVER) {
-                                               # Catch:
-                                               #
-                                               #  dependency_libs=' 
-L/usr/lib/gcc/CHOST/VER'
-                                               #
-                                               tmpstr = 
gensub(GCCLIBPREFIX_OLD CHOST "/" OLDVER "([/[:space:]]+)",
-                                                               GCCLIB "/" 
NEWVER "\\1", "g", la_data)
-                                               tmpstr = 
gensub(GCCLIBPREFIX_NEW CHOST "/" OLDVER "([/[:space:]]+)",
-                                                               GCCLIB "/" 
NEWVER "\\1", "g", tmpstr)
-
-                                               if (la_data != tmpstr) {
-                                                       # Catch:
-                                                       #
-                                                       #  dependency_libs=' 
-L/usr/lib/gcc-lib/../../CHOST/lib'
-                                                       #
-                                                       # in cases where we 
have gcc34
-                                                       tmpstr = 
gensub(GCCLIBPREFIX_OLD "(../../" CHOST "/lib)",
-                                                                       
GCCLIBPREFIX "\\1", "g", tmpstr)
-                                                       tmpstr = 
gensub(GCCLIBPREFIX_NEW "(../../" CHOST "/lib)",
-                                                                       
GCCLIBPREFIX "\\1", "g", tmpstr)
-                                                       printn("v")
-                                                       la_data = tmpstr
-                                               }
-                                       }
-
-                                       # We now check if we have libstdc++.la, 
as we remove the
-                                       # libtool linker scripts for gcc and 
any referencese in any
-                                       # libtool linker scripts.
-                                       # We do this last, as we only match the 
new paths
-                                       tmpstr = gensub(GCCLIB "/" NEWVER 
"/libstdc\\+\\+\\.la",
-                                                       "-lstdc++", "g", 
la_data);
-                                       if (la_data != tmpstr) {
-                                               printn("l")
-                                               la_data = tmpstr
-                                       }
-                                       
-                                       print la_data >> (la_files ".new")
-                               }
-
-                               if (CHANGED)
-                                       print "]"
-
-                               close(la_files)
-                               close(la_files ".new")
-
-                               assert(dosystem("mv -f " la_files ".new " 
la_files),
-                                      "dosystem(\"mv -f " la_files ".new " 
la_files "\")")
-                       }
-               }
-
-               close(pipe)
-       }
-}
-
-# vim:ts=4

diff --git a/sys-devel/gcc/files/fix_libtool_files.sh 
b/sys-devel/gcc/files/fix_libtool_files.sh
deleted file mode 100644
index af085e1efa0..00000000000
--- a/sys-devel/gcc/files/fix_libtool_files.sh
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/bin/sh
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-usage() {
-cat << "USAGE_END"
-Usage: fix_libtool_files.sh <old-gcc-version> [--oldarch <old-CHOST>]
-
-    Where <old-gcc-version> is the version number of the
-    previous gcc version.  For example, if you updated to
-    gcc-3.2.1, and you had gcc-3.2 installed, run:
-
-      # fix_libtool_files.sh 3.2
-
-    If you updated to gcc-3.2.3, and the old CHOST was i586-pc-linux-gnu
-    but you now have CHOST as i686-pc-linux-gnu, run:
-
-      # fix_libtool_files.sh 3.2 --oldarch i586-pc-linux-gnu
-
-    Note that if only the CHOST and not the version changed, you can run
-    it with the current version and the '--oldarch <old-CHOST>' arguments,
-    and it will do the expected:
-
-      # fix_libtool_files.sh `gcc -dumpversion` --oldarch i586-pc-linux-gnu
-
-USAGE_END
-       exit 1
-}
-
-case $2 in
---oldarch) [ $# -ne 3 ] && usage ;;
-*)         [ $# -ne 1 ] && usage ;;
-esac
-
-ARGV1=$1
-ARGV2=$2
-ARGV3=$3
-
-. /etc/profile || exit 1
-
-if [ ${EUID:-0} -ne 0   -a   "${EPREFIX}" = '' ] ; then
-       echo "${0##*/}: Must be root."
-       exit 1
-fi
-
-# make sure the files come out sane
-umask 0022
-
-OLDCHOST=
-[ "${ARGV2}" = "--oldarch" ] && OLDCHOST=${ARGV3}
-
-AWKDIR="/usr/share/gcc-data"
-
-if [ ! -r "${AWKDIR}/fixlafiles.awk" ] ; then
-       echo "${0##*/}: ${AWKDIR}/fixlafiles.awk does not exist!"
-       exit 1
-fi
-
-OLDVER=${ARGV1}
-
-export OLDVER OLDCHOST
-
-echo "Scanning libtool files for hardcoded gcc library paths..."
-exec gawk -f "${AWKDIR}/fixlafiles.awk"
-
-# vim:ts=4

Reply via email to