| 1 | # Copyright 1999-2010 Gentoo Foundation |
1 | # Copyright 1999-2010 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/autotools.eclass,v 1.93 2010/03/07 17:42:39 vapier Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/autotools.eclass,v 1.99 2010/07/06 18:55:50 vapier Exp $ |
| 4 | |
4 | |
| 5 | # @ECLASS: autotools.eclass |
5 | # @ECLASS: autotools.eclass |
| 6 | # @MAINTAINER: |
6 | # @MAINTAINER: |
| 7 | # base-system@gentoo.org |
7 | # base-system@gentoo.org |
| 8 | # @BLURB: Regenerates auto* build scripts |
8 | # @BLURB: Regenerates auto* build scripts |
| … | |
… | |
| 15 | inherit eutils libtool |
15 | inherit eutils libtool |
| 16 | |
16 | |
| 17 | # @ECLASS-VARIABLE: WANT_AUTOCONF |
17 | # @ECLASS-VARIABLE: WANT_AUTOCONF |
| 18 | # @DESCRIPTION: |
18 | # @DESCRIPTION: |
| 19 | # The major version of autoconf your package needs |
19 | # The major version of autoconf your package needs |
| 20 | [[ -z ${WANT_AUTOCONF} ]] && WANT_AUTOCONF="latest" |
20 | : ${WANT_AUTOCONF:=latest} |
| 21 | |
21 | |
| 22 | # @ECLASS-VARIABLE: WANT_AUTOMAKE |
22 | # @ECLASS-VARIABLE: WANT_AUTOMAKE |
| 23 | # @DESCRIPTION: |
23 | # @DESCRIPTION: |
| 24 | # The major version of automake your package needs |
24 | # The major version of automake your package needs |
| 25 | [[ -z ${WANT_AUTOMAKE} ]] && WANT_AUTOMAKE="latest" |
25 | : ${WANT_AUTOMAKE:=latest} |
|
|
26 | |
|
|
27 | # @ECLASS-VARIABLE: _LATEST_AUTOMAKE |
|
|
28 | # @DESCRIPTION: |
|
|
29 | # CONSTANT! |
|
|
30 | # The latest major version/slot of automake available on each arch. |
|
|
31 | # If a newer version is stable on any arch, and is NOT reflected in this list, |
|
|
32 | # then circular dependencies may arise during emerge @system bootstraps. |
|
|
33 | # Do NOT change this variable in your ebuilds! |
|
|
34 | _LATEST_AUTOMAKE='1.11' |
| 26 | |
35 | |
| 27 | _automake_atom="sys-devel/automake" |
36 | _automake_atom="sys-devel/automake" |
| 28 | _autoconf_atom="sys-devel/autoconf" |
37 | _autoconf_atom="sys-devel/autoconf" |
| 29 | if [[ -n ${WANT_AUTOMAKE} ]]; then |
38 | if [[ -n ${WANT_AUTOMAKE} ]]; then |
| 30 | case ${WANT_AUTOMAKE} in |
39 | case ${WANT_AUTOMAKE} in |
| 31 | none) _automake_atom="" ;; # some packages don't require automake at all |
40 | none) _automake_atom="" ;; # some packages don't require automake at all |
| 32 | # if you change the “latest” version here, change also autotools_run_tool |
41 | # if you change the "latest" version here, change also autotools_run_tool |
| 33 | latest) _automake_atom="=sys-devel/automake-1.10*" ;; |
42 | # this MUST reflect the latest stable major version for each arch! |
|
|
43 | latest) _automake_atom="|| ( `printf '=sys-devel/automake-%s* ' ${_LATEST_AUTOMAKE}` )" ;; |
| 34 | *) _automake_atom="=sys-devel/automake-${WANT_AUTOMAKE}*" ;; |
44 | *) _automake_atom="=sys-devel/automake-${WANT_AUTOMAKE}*" ;; |
| 35 | esac |
45 | esac |
| 36 | export WANT_AUTOMAKE |
46 | export WANT_AUTOMAKE |
| 37 | fi |
47 | fi |
| 38 | |
48 | |
| … | |
… | |
| 54 | # @ECLASS-VARIABLE: AUTOTOOLS_AUTO_DEPEND |
64 | # @ECLASS-VARIABLE: AUTOTOOLS_AUTO_DEPEND |
| 55 | # @DESCRIPTION: |
65 | # @DESCRIPTION: |
| 56 | # Set to 'no' to disable automatically adding to DEPEND. This lets |
66 | # Set to 'no' to disable automatically adding to DEPEND. This lets |
| 57 | # ebuilds former conditional depends by using ${AUTOTOOLS_DEPEND} in |
67 | # ebuilds former conditional depends by using ${AUTOTOOLS_DEPEND} in |
| 58 | # their own DEPEND string. |
68 | # their own DEPEND string. |
|
|
69 | : ${AUTOTOOLS_AUTO_DEPEND:=yes} |
| 59 | if [[ ${AUTOTOOLS_AUTO_DEPEND} != "no" ]] ; then |
70 | if [[ ${AUTOTOOLS_AUTO_DEPEND} != "no" ]] ; then |
| 60 | DEPEND=${AUTOTOOLS_DEPEND} |
71 | DEPEND=${AUTOTOOLS_DEPEND} |
| 61 | fi |
72 | fi |
| 62 | |
73 | |
| 63 | unset _automake_atom _autoconf_atom |
74 | unset _automake_atom _autoconf_atom |
| … | |
… | |
| 75 | |
86 | |
| 76 | # XXX: M4DIR should be deprecated |
87 | # XXX: M4DIR should be deprecated |
| 77 | # @ECLASS-VARIABLE: AT_M4DIR |
88 | # @ECLASS-VARIABLE: AT_M4DIR |
| 78 | # @DESCRIPTION: |
89 | # @DESCRIPTION: |
| 79 | # Additional director(y|ies) aclocal should search |
90 | # Additional director(y|ies) aclocal should search |
| 80 | AT_M4DIR=${AT_M4DIR:-${M4DIR}} |
91 | : ${AT_M4DIR:=${M4DIR}} |
| 81 | AT_GNUCONF_UPDATE="no" |
92 | AT_GNUCONF_UPDATE="no" |
| 82 | |
93 | |
| 83 | |
94 | |
| 84 | # @FUNCTION: eautoreconf |
95 | # @FUNCTION: eautoreconf |
| 85 | # @DESCRIPTION: |
96 | # @DESCRIPTION: |
| … | |
… | |
| 211 | # Runs automake. |
222 | # Runs automake. |
| 212 | eautomake() { |
223 | eautomake() { |
| 213 | local extra_opts |
224 | local extra_opts |
| 214 | local makefile_name |
225 | local makefile_name |
| 215 | |
226 | |
| 216 | if [[ -f GNUmakefile.am ]]; then |
227 | # Run automake if: |
| 217 | makefile_name="GNUmakefile" |
228 | # - a Makefile.am type file exists |
| 218 | elif [[ -f Makefile.am ]]; then |
229 | # - a Makefile.in type file exists and the configure |
| 219 | makefile_name="Makefile" |
230 | # script is using the AM_INIT_AUTOMAKE directive |
| 220 | else |
231 | for makefile_name in {GNUmakefile,{M,m}akefile}.{am,in} "" ; do |
|
|
232 | [[ -f ${makefile_name} ]] && break |
|
|
233 | done |
|
|
234 | [[ -z ${makefile_name} ]] && return 0 |
|
|
235 | |
|
|
236 | if [[ ${makefile_name} == *.in ]] ; then |
|
|
237 | if ! grep -qs AM_INIT_AUTOMAKE configure.?? ; then |
| 221 | return 0 |
238 | return 0 |
| 222 | fi |
239 | fi |
| 223 | |
240 | |
| 224 | if [[ -z ${FROM_EAUTORECONF} && -f ${makefile_name}.in ]]; then |
241 | elif [[ -z ${FROM_EAUTORECONF} && -f ${makefile_name%.am}.in ]]; then |
| 225 | local used_automake |
242 | local used_automake |
| 226 | local installed_automake |
243 | local installed_automake |
| 227 | |
244 | |
| 228 | installed_automake=$(WANT_AUTOMAKE= automake --version | head -n 1 | \ |
245 | installed_automake=$(WANT_AUTOMAKE= automake --version | head -n 1 | \ |
| 229 | sed -e 's:.*(GNU automake) ::') |
246 | sed -e 's:.*(GNU automake) ::') |
| 230 | used_automake=$(head -n 1 < ${makefile_name}.in | \ |
247 | used_automake=$(head -n 1 < ${makefile_name%.am}.in | \ |
| 231 | sed -e 's:.*by automake \(.*\) from .*:\1:') |
248 | sed -e 's:.*by automake \(.*\) from .*:\1:') |
| 232 | |
249 | |
| 233 | if [[ ${installed_automake} != ${used_automake} ]]; then |
250 | if [[ ${installed_automake} != ${used_automake} ]]; then |
| 234 | einfo "Automake used for the package (${used_automake}) differs from" |
251 | einfo "Automake used for the package (${used_automake}) differs from" |
| 235 | einfo "the installed version (${installed_automake})." |
252 | einfo "the installed version (${installed_automake})." |
| … | |
… | |
| 258 | ewarn "QA Warning: running $1 in ${EBUILD_PHASE} phase" |
275 | ewarn "QA Warning: running $1 in ${EBUILD_PHASE} phase" |
| 259 | fi |
276 | fi |
| 260 | |
277 | |
| 261 | # We do the “latest” → version switch here because it solves |
278 | # We do the “latest” → version switch here because it solves |
| 262 | # possible order problems, see bug #270010 as an example. |
279 | # possible order problems, see bug #270010 as an example. |
| 263 | [[ ${WANT_AUTOMAKE} == "latest" ]] && export WANT_AUTOMAKE=1.10 |
280 | if [[ ${WANT_AUTOMAKE} == "latest" ]]; then |
|
|
281 | local pv |
|
|
282 | for pv in ${_LATEST_AUTOMAKE} ; do |
|
|
283 | # has_version respects ROOT, but in this case, we don't want it to, |
|
|
284 | # thus "ROOT=/" prefix: |
|
|
285 | ROOT=/ has_version "=sys-devel/automake-${pv}*" && export WANT_AUTOMAKE="$pv" |
|
|
286 | done |
|
|
287 | [[ ${WANT_AUTOMAKE} == "latest" ]] && \ |
|
|
288 | die "Cannot find the latest automake! Tried ${_LATEST_AUTOMAKE}" |
|
|
289 | fi |
| 264 | [[ ${WANT_AUTOCONF} == "latest" ]] && export WANT_AUTOCONF=2.5 |
290 | [[ ${WANT_AUTOCONF} == "latest" ]] && export WANT_AUTOCONF=2.5 |
| 265 | |
291 | |
| 266 | local STDERR_TARGET="${T}/$1.out" |
292 | local STDERR_TARGET="${T}/$1.out" |
| 267 | # most of the time, there will only be one run, but if there are |
293 | # most of the time, there will only be one run, but if there are |
| 268 | # more, make sure we get unique log filenames |
294 | # more, make sure we get unique log filenames |