| 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.94 2010/03/07 17:43:11 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 |
| … | |
… | |
| 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 | : ${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 | |
| … | |
… | |
| 212 | # Runs automake. |
222 | # Runs automake. |
| 213 | eautomake() { |
223 | eautomake() { |
| 214 | local extra_opts |
224 | local extra_opts |
| 215 | local makefile_name |
225 | local makefile_name |
| 216 | |
226 | |
| 217 | if [[ -f GNUmakefile.am ]]; then |
227 | # Run automake if: |
| 218 | makefile_name="GNUmakefile" |
228 | # - a Makefile.am type file exists |
| 219 | elif [[ -f Makefile.am ]]; then |
229 | # - a Makefile.in type file exists and the configure |
| 220 | makefile_name="Makefile" |
230 | # script is using the AM_INIT_AUTOMAKE directive |
| 221 | 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 |
| 222 | return 0 |
238 | return 0 |
| 223 | fi |
239 | fi |
| 224 | |
240 | |
| 225 | if [[ -z ${FROM_EAUTORECONF} && -f ${makefile_name}.in ]]; then |
241 | elif [[ -z ${FROM_EAUTORECONF} && -f ${makefile_name%.am}.in ]]; then |
| 226 | local used_automake |
242 | local used_automake |
| 227 | local installed_automake |
243 | local installed_automake |
| 228 | |
244 | |
| 229 | installed_automake=$(WANT_AUTOMAKE= automake --version | head -n 1 | \ |
245 | installed_automake=$(WANT_AUTOMAKE= automake --version | head -n 1 | \ |
| 230 | sed -e 's:.*(GNU automake) ::') |
246 | sed -e 's:.*(GNU automake) ::') |
| 231 | used_automake=$(head -n 1 < ${makefile_name}.in | \ |
247 | used_automake=$(head -n 1 < ${makefile_name%.am}.in | \ |
| 232 | sed -e 's:.*by automake \(.*\) from .*:\1:') |
248 | sed -e 's:.*by automake \(.*\) from .*:\1:') |
| 233 | |
249 | |
| 234 | if [[ ${installed_automake} != ${used_automake} ]]; then |
250 | if [[ ${installed_automake} != ${used_automake} ]]; then |
| 235 | einfo "Automake used for the package (${used_automake}) differs from" |
251 | einfo "Automake used for the package (${used_automake}) differs from" |
| 236 | einfo "the installed version (${installed_automake})." |
252 | einfo "the installed version (${installed_automake})." |
| … | |
… | |
| 259 | ewarn "QA Warning: running $1 in ${EBUILD_PHASE} phase" |
275 | ewarn "QA Warning: running $1 in ${EBUILD_PHASE} phase" |
| 260 | fi |
276 | fi |
| 261 | |
277 | |
| 262 | # We do the “latest” → version switch here because it solves |
278 | # We do the “latest” → version switch here because it solves |
| 263 | # possible order problems, see bug #270010 as an example. |
279 | # possible order problems, see bug #270010 as an example. |
| 264 | [[ ${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 |
| 265 | [[ ${WANT_AUTOCONF} == "latest" ]] && export WANT_AUTOCONF=2.5 |
290 | [[ ${WANT_AUTOCONF} == "latest" ]] && export WANT_AUTOCONF=2.5 |
| 266 | |
291 | |
| 267 | local STDERR_TARGET="${T}/$1.out" |
292 | local STDERR_TARGET="${T}/$1.out" |
| 268 | # 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 |
| 269 | # more, make sure we get unique log filenames |
294 | # more, make sure we get unique log filenames |