| 1 | # Copyright 1999-2004 Gentoo Foundation |
1 | # Copyright 1999-2004 Gentoo Foundation |
| 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.26 2004/08/24 00:10:08 mr_bones_ Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/gnuconfig.eclass,v 1.27 2005/05/25 00:15:02 vapier Exp $ |
| 4 | # |
4 | # |
| 5 | # Author: Will Woods <wwoods@gentoo.org> |
5 | # Author: Will Woods <wwoods@gentoo.org> |
| 6 | # |
6 | # |
| 7 | # This eclass is used to automatically update files that typically come with |
7 | # This eclass is used to automatically update files that typically come with |
| 8 | # automake to the newest version available on the system. The most common use |
8 | # automake to the newest version available on the system. The most common use |
| … | |
… | |
| 29 | # config.sub and config.guess (old default behavior), otherwise update the |
29 | # config.sub and config.guess (old default behavior), otherwise update the |
| 30 | # named files. |
30 | # named files. |
| 31 | gnuconfig_update() { |
31 | gnuconfig_update() { |
| 32 | local startdir # declared here ... used in gnuconfig_do_update |
32 | local startdir # declared here ... used in gnuconfig_do_update |
| 33 | |
33 | |
| 34 | if [[ $1 == /* ]]; then |
34 | if [[ $1 == /* ]] ; then |
| 35 | startdir=$1 |
35 | startdir=$1 |
| 36 | shift |
36 | shift |
| 37 | else |
37 | else |
| 38 | startdir=${S} |
38 | startdir=${S} |
| 39 | fi |
39 | fi |
| 40 | |
40 | |
| 41 | if [ $# -gt 0 ] ; then |
41 | if [[ $# -gt 0 ]] ; then |
| 42 | gnuconfig_do_update "$@" |
42 | gnuconfig_do_update "$@" |
| 43 | else |
43 | else |
| 44 | gnuconfig_do_update config.sub config.guess |
44 | gnuconfig_do_update config.sub config.guess |
| 45 | fi |
45 | fi |
| 46 | |
46 | |
| … | |
… | |
| 53 | # Note that since bash using dynamic scoping, startdir is available here from |
53 | # Note that since bash using dynamic scoping, startdir is available here from |
| 54 | # the gnuconfig_update function |
54 | # the gnuconfig_update function |
| 55 | gnuconfig_do_update() { |
55 | gnuconfig_do_update() { |
| 56 | local configsubs_dir target targetlist file |
56 | local configsubs_dir target targetlist file |
| 57 | |
57 | |
| 58 | [ $# -eq 0 ] && die "do not call gnuconfig_do_update; use gnuconfig_update" |
58 | [[ $# -eq 0 ]] && die "do not call gnuconfig_do_update; use gnuconfig_update" |
| 59 | |
59 | |
| 60 | configsubs_dir="$(gnuconfig_findnewest)" |
60 | configsubs_dir=$(gnuconfig_findnewest) |
| 61 | einfo "Using GNU config files from ${configsubs_dir}" |
61 | einfo "Using GNU config files from ${configsubs_dir}" |
| 62 | for file in "$@" ; do |
62 | for file in "$@" ; do |
| 63 | if [ ! -r ${configsubs_dir}/${file} ] ; then |
63 | if [[ ! -r ${configsubs_dir}/${file} ]] ; then |
| 64 | eerror "Can't read ${configsubs_dir}/${file}, skipping.." |
64 | eerror "Can't read ${configsubs_dir}/${file}, skipping.." |
| 65 | continue |
65 | continue |
| 66 | fi |
66 | fi |
| 67 | targetlist=`find "${startdir}" -name "${file}"` |
67 | targetlist=$(find "${startdir}" -name "${file}") |
| 68 | if [ -n "$targetlist" ] ; then |
68 | if [[ -n ${targetlist} ]] ; then |
| 69 | for target in $targetlist; do |
69 | for target in ${targetlist} ; do |
| 70 | einfo " Updating ${target/$startdir\//}" |
70 | einfo " Updating ${target/$startdir\//}" |
| 71 | cp -f ${configsubs_dir}/${file} "${target}" |
71 | cp -f "${configsubs_dir}/${file}" "${target}" |
| 72 | eend $? |
72 | eend $? |
| 73 | done |
73 | done |
| 74 | else |
74 | else |
| 75 | ewarn " No ${file} found in ${startdir}, skipping.." |
75 | ewarn " No ${file} found in ${startdir}, skipping ..." |
| 76 | fi |
76 | fi |
| 77 | done |
77 | done |
| 78 | |
78 | |
| 79 | return 0 |
79 | return 0 |
| 80 | } |
80 | } |
| 81 | |
81 | |
| 82 | # this searches the standard locations for the newest config.{sub|guess}, and |
82 | # this searches the standard locations for the newest config.{sub|guess}, and |
| 83 | # returns the directory where they can be found. |
83 | # returns the directory where they can be found. |
| 84 | gnuconfig_findnewest() { |
84 | gnuconfig_findnewest() { |
|
|
85 | local locations=" |
| 85 | local locations="/usr/share/gnuconfig/config.sub \ |
86 | /usr/share/gnuconfig/config.sub |
|
|
87 | /usr/share/automake-1.9/config.sub |
| 86 | /usr/share/automake-1.8/config.sub \ |
88 | /usr/share/automake-1.8/config.sub |
| 87 | /usr/share/automake-1.7/config.sub \ |
89 | /usr/share/automake-1.7/config.sub |
| 88 | /usr/share/automake-1.6/config.sub \ |
90 | /usr/share/automake-1.6/config.sub |
| 89 | /usr/share/automake-1.5/config.sub \ |
91 | /usr/share/automake-1.5/config.sub |
| 90 | /usr/share/automake-1.4/config.sub" |
92 | /usr/share/automake-1.4/config.sub |
| 91 | local lt_location="/usr/share/libtool/config.sub" |
93 | /usr/share/libtool/config.sub |
| 92 | |
94 | " |
| 93 | [ -f "${lt_location}" ] && locations="${locations} ${lt_location}" |
|
|
| 94 | |
|
|
| 95 | grep -s '^timestamp' ${locations} | sort -n -t\' -k2 | tail -n 1 | sed 's,/config.sub:.*$,,' |
95 | grep -s '^timestamp' ${locations} | sort -n -t\' -k2 | tail -n 1 | sed 's,/config.sub:.*$,,' |
| 96 | } |
96 | } |