summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'eclass/gnuconfig.eclass')
-rw-r--r--eclass/gnuconfig.eclass72
1 files changed, 57 insertions, 15 deletions
diff --git a/eclass/gnuconfig.eclass b/eclass/gnuconfig.eclass
index 3433837787c2..173df6fd25e9 100644
--- a/eclass/gnuconfig.eclass
+++ b/eclass/gnuconfig.eclass
@@ -1,25 +1,46 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-#
-# Author: Will Woods <wwoods@gentoo.org>
-#
+
+# @ECLASS: gnuconfig.eclass
+# @MAINTAINER:
+# Sam James <sam@gentoo.org>
+# @AUTHOR:
+# Will Woods <wwoods@gentoo.org>
+# @SUPPORTED_EAPIS: 5 6 7
+# @BLURB: Refresh bundled gnuconfig files (config.guess, config.sub)
+# @DESCRIPTION:
# This eclass is used to automatically update files that typically come with
# automake to the newest version available on the system. The most common use
# of this is to update config.guess and config.sub when configure dies from
# misguessing your canonical system name (CHOST). It can also be used to update
# other files that come with automake, e.g. depcomp, mkinstalldirs, etc.
#
-# usage: gnuconfig_update [file1 file2 ...]
+
+case ${EAPI:-0} in
+ 5|6|7)
+ ;;
+ *)
+ die "EAPI ${EAPI} is unsupported!"
+ ;;
+esac
+
+if [[ -z ${_GNUCONFIG_ECLASS} ]] ; then
+ _GNUCONFIG_CLASS=1
+
+BDEPEND="sys-devel/gnuconfig"
+
+[[ ${EAPI} == [56] ]] && DEPEND="${BDEPEND}"
+
+# @FUNCTION: gnuconfig_update
+# @USAGE: [file1 file2 ...]
+# @DESCRIPTION:
# if called without arguments, config.guess and config.sub will be updated.
# All files in the source tree ($S) with the given name(s) will be replaced
# with the newest available versions chosen from the list of locations in
# gnuconfig_findnewest(), below.
#
# gnuconfig_update should generally be called from src_unpack()
-
-
-DEPEND="sys-devel/gnuconfig"
-
+#
# Wrapper function for gnuconfig_do_update. If no arguments are given, update
# config.sub and config.guess (old default behavior), otherwise update the
# named files.
@@ -42,6 +63,9 @@ gnuconfig_update() {
return $?
}
+# @FUNCTION: gnuconfig_do_update
+# @INTERNAL
+# @DESCRIPTION:
# Copy the newest available version of specified files over any old ones in the
# source dir. This function shouldn't be called directly - use gnuconfig_update
#
@@ -75,16 +99,34 @@ gnuconfig_do_update() {
return 0
}
-# this searches the standard locations for the newest config.{sub|guess}, and
+# @FUNCTION: gnuconfig_findnewest
+# @INTERNAL
+# @DESCRIPTION:
+# This searches the standard locations for the newest config.{sub|guess}, and
# returns the directory where they can be found.
gnuconfig_findnewest() {
- local locations=(
- "${EPREFIX}"/usr/share/misc/config.sub
- "${EPREFIX}"/usr/share/gnuconfig/config.sub
- "${EPREFIX}"/usr/share/automake*/config.sub
- "${EPREFIX}"/usr/share/libtool/config.sub
+ local locations=()
+ local prefix
+
+ case ${EAPI} in
+ 5|6)
+ prefix="${EPREFIX}"
+ ;;
+ *)
+ prefix="${BROOT}"
+ ;;
+ esac
+
+ locations+=(
+ "${prefix}"/usr/share/misc/config.sub
+ "${prefix}"/usr/share/gnuconfig/config.sub
+ "${prefix}"/usr/share/automake*/config.sub
+ "${prefix}"/usr/share/libtool/config.sub
)
+
grep -s '^timestamp' "${locations[@]}" | \
sort -r -n -t\' -k2 | \
sed -n '1{s,/config.sub:.*$,,;p;q}'
}
+
+fi