| 1 | # Copyright 1999-2003 Gentoo Technologies, Inc. |
1 | # Copyright 1999-2003 Gentoo Technologies, Inc. |
| 2 | # Distributed under the terms of the GNU General Public License v2 |
2 | # Distributed under the terms of the GNU General Public License v2 |
| 3 | # $Header: /var/cvsroot/gentoo-x86/eclass/gnuconfig.eclass,v 1.6 2003/02/28 09:15:04 vapier Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/gnuconfig.eclass,v 1.7 2003/03/10 21:44:59 wwoods Exp $ |
| 4 | # |
4 | # |
| 5 | # Author: Will Woods <wwoods@gentoo.org> |
5 | # Author: Will Woods <wwoods@gentoo.org> |
| 6 | # |
6 | # |
| 7 | # This eclass updates config.guess and config.sub. This is useful if |
7 | # This eclass is used to automatically update files that typically come with |
| 8 | # configure dies from misguessing your canonical system name (CHOST). |
8 | # automake to the newest version available on the system. The most common use |
|
|
9 | # of this is to update config.guess and config.sub when configure dies from |
|
|
10 | # misguessing your canonical system name (CHOST). It can also be used to update |
|
|
11 | # other files that come with automake, e.g. depcomp, mkinstalldirs, etc. |
|
|
12 | # |
|
|
13 | # usage: gnuconfig_update [file1 file2 ...] |
|
|
14 | # if called without arguments, config.guess and config.sub will be updated. |
|
|
15 | # All files in the source tree ($S) with the given name(s) will be replaced |
|
|
16 | # with the newest available versions chosen from the list of locations in |
|
|
17 | # gnuconfig_findnewest(), below. |
| 9 | |
18 | |
| 10 | ECLASS=gnuconfig |
19 | ECLASS=gnuconfig |
| 11 | INHERITED="$INHERITED $ECLASS" |
20 | INHERITED="$INHERITED $ECLASS" |
| 12 | |
21 | |
| 13 | newdepend sys-devel/automake |
22 | newdepend sys-devel/automake |
| 14 | |
23 | |
| 15 | DESCRIPTION="Based on the ${ECLASS} eclass" |
24 | DESCRIPTION="Based on the ${ECLASS} eclass" |
| 16 | |
25 | |
| 17 | # Copy the newest available config.{guess|sub} on the system over any old |
26 | # Wrapper function for gnuconfig_do_update. If no arguments are given, update |
| 18 | # ones in the source dir |
27 | # config.sub and config.guess (old default behavior), otherwise update the |
|
|
28 | # named files. |
| 19 | gnuconfig_update() { |
29 | gnuconfig_update() { |
|
|
30 | if [ $# -gt 0 ] ; then |
|
|
31 | gnuconfig_do_update $* |
|
|
32 | else |
|
|
33 | gnuconfig_do_update config.sub config.guess |
|
|
34 | fi |
|
|
35 | } |
|
|
36 | |
|
|
37 | # Copy the newest available version of specified files over any old ones in the |
|
|
38 | # source dir. This function shouldn't be called directly - use gnuconfig_update |
|
|
39 | gnuconfig_do_update() { |
| 20 | local configsubs_dir="$(gnuconfig_findnewest)" |
40 | local configsubs_dir="$(gnuconfig_findnewest)" |
| 21 | local sub |
41 | local target targetlist file |
| 22 | local f |
|
|
| 23 | einfo "Using GNU config files from ${configsubs_dir}" |
42 | einfo "Using GNU config files from ${configsubs_dir}" |
| 24 | for sub in config.sub config.guess ; do |
43 | for file in $* ; do |
| 25 | for f in `find ${S} -name "${sub}"`; do |
44 | if [ ! -r ${configsubs_dir}/${file} ] ; then |
|
|
45 | eerror "Can't read ${configsubs_dir}/${file}, skipping.." |
|
|
46 | continue |
|
|
47 | fi |
|
|
48 | targetlist=`find ${S} -name "${file}"` |
|
|
49 | if [ -n "$targetlist" ] ; then |
|
|
50 | for target in $targetlist; do |
| 26 | einfo "Updating ${f/$S\//}" |
51 | einfo "Updating ${target/$S\//}" |
| 27 | cp -f ${configsubs_dir}/${sub} ${f} |
52 | cp -f ${configsubs_dir}/${file} ${target} |
| 28 | done |
53 | eend $! |
| 29 | done |
54 | done |
|
|
55 | else |
|
|
56 | ewarn "No ${file} found in ${S}, skipping.." |
|
|
57 | fi |
|
|
58 | done |
| 30 | } |
59 | } |
| 31 | |
60 | |
| 32 | # this searches the standard locations for the newest config.{sub|guess}, and |
61 | # this searches the standard locations for the newest config.{sub|guess}, and |
| 33 | # returns the directory where they can be found. |
62 | # returns the directory where they can be found. |
| 34 | gnuconfig_findnewest() { |
63 | gnuconfig_findnewest() { |
| 35 | local locations="/usr/share/automake-1.6/config.sub \ |
64 | local locations="/usr/share/automake-1.6/config.sub \ |
| 36 | /usr/share/automake-1.5/config.sub \ |
65 | /usr/share/automake-1.5/config.sub \ |
| 37 | /usr/share/automake-1.4/config.sub \ |
66 | /usr/share/automake-1.4/config.sub \ |
| 38 | /usr/share/libtool/config.sub" |
67 | /usr/share/libtool/config.sub" |
| 39 | grep -s '^timestamp' ${locations} | sort -n -t\' -k2 | tail -1 | sed 's,/config.sub:.*$,,' |
68 | grep -s '^timestamp' ${locations} | sort -n -t\' -k2 | tail -1 | sed 's,/config.sub:.*$,,' |
| 40 | } |
69 | } |