diff options
Diffstat (limited to 'eclass/gnuconfig.eclass')
-rw-r--r-- | eclass/gnuconfig.eclass | 72 |
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 |