| 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.96 2010/04/01 10:12:36 flameeyes 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 |
| … | |
… | |
| 29 | # CONSTANT! |
29 | # CONSTANT! |
| 30 | # The latest major version/slot of automake available on each arch. |
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, |
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. |
32 | # then circular dependencies may arise during emerge @system bootstraps. |
| 33 | # Do NOT change this variable in your ebuilds! |
33 | # Do NOT change this variable in your ebuilds! |
| 34 | _LATEST_AUTOMAKE='1.11 1.10' |
34 | _LATEST_AUTOMAKE='1.11' |
| 35 | |
35 | |
| 36 | _automake_atom="sys-devel/automake" |
36 | _automake_atom="sys-devel/automake" |
| 37 | _autoconf_atom="sys-devel/autoconf" |
37 | _autoconf_atom="sys-devel/autoconf" |
| 38 | if [[ -n ${WANT_AUTOMAKE} ]]; then |
38 | if [[ -n ${WANT_AUTOMAKE} ]]; then |
| 39 | case ${WANT_AUTOMAKE} in |
39 | case ${WANT_AUTOMAKE} in |
| 40 | none) _automake_atom="" ;; # some packages don't require automake at all |
40 | none) _automake_atom="" ;; # some packages don't require automake at all |
| 41 | # 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 |
| 42 | # this MUST reflect the latest stable major version for each arch! |
42 | # this MUST reflect the latest stable major version for each arch! |
| 43 | latest) |
43 | latest) _automake_atom="|| ( `printf '=sys-devel/automake-%s* ' ${_LATEST_AUTOMAKE}` )" ;; |
| 44 | t="" |
|
|
| 45 | for v in ${_LATEST_AUTOMAKE} ; do |
|
|
| 46 | t="${t} =sys-devel/automake-${v}*" |
|
|
| 47 | done |
|
|
| 48 | _automake_atom="|| ( ${t} )" |
|
|
| 49 | unset t v |
|
|
| 50 | ;; |
|
|
| 51 | *) _automake_atom="=sys-devel/automake-${WANT_AUTOMAKE}*" ;; |
44 | *) _automake_atom="=sys-devel/automake-${WANT_AUTOMAKE}*" ;; |
| 52 | esac |
45 | esac |
| 53 | export WANT_AUTOMAKE |
46 | export WANT_AUTOMAKE |
| 54 | fi |
47 | fi |
| 55 | |
48 | |
| … | |
… | |
| 229 | # Runs automake. |
222 | # Runs automake. |
| 230 | eautomake() { |
223 | eautomake() { |
| 231 | local extra_opts |
224 | local extra_opts |
| 232 | local makefile_name |
225 | local makefile_name |
| 233 | |
226 | |
| 234 | if [[ -f GNUmakefile.am ]]; then |
227 | # Run automake if: |
| 235 | makefile_name="GNUmakefile" |
228 | # - a Makefile.am type file exists |
| 236 | elif [[ -f Makefile.am ]]; then |
229 | # - a Makefile.in type file exists and the configure |
| 237 | makefile_name="Makefile" |
230 | # script is using the AM_INIT_AUTOMAKE directive |
| 238 | 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 |
| 239 | return 0 |
238 | return 0 |
| 240 | fi |
239 | fi |
| 241 | |
240 | |
| 242 | if [[ -z ${FROM_EAUTORECONF} && -f ${makefile_name}.in ]]; then |
241 | elif [[ -z ${FROM_EAUTORECONF} && -f ${makefile_name%.am}.in ]]; then |
| 243 | local used_automake |
242 | local used_automake |
| 244 | local installed_automake |
243 | local installed_automake |
| 245 | |
244 | |
| 246 | installed_automake=$(WANT_AUTOMAKE= automake --version | head -n 1 | \ |
245 | installed_automake=$(WANT_AUTOMAKE= automake --version | head -n 1 | \ |
| 247 | sed -e 's:.*(GNU automake) ::') |
246 | sed -e 's:.*(GNU automake) ::') |
| 248 | used_automake=$(head -n 1 < ${makefile_name}.in | \ |
247 | used_automake=$(head -n 1 < ${makefile_name%.am}.in | \ |
| 249 | sed -e 's:.*by automake \(.*\) from .*:\1:') |
248 | sed -e 's:.*by automake \(.*\) from .*:\1:') |
| 250 | |
249 | |
| 251 | if [[ ${installed_automake} != ${used_automake} ]]; then |
250 | if [[ ${installed_automake} != ${used_automake} ]]; then |
| 252 | einfo "Automake used for the package (${used_automake}) differs from" |
251 | einfo "Automake used for the package (${used_automake}) differs from" |
| 253 | einfo "the installed version (${installed_automake})." |
252 | einfo "the installed version (${installed_automake})." |
| … | |
… | |
| 277 | fi |
276 | fi |
| 278 | |
277 | |
| 279 | # We do the “latest” → version switch here because it solves |
278 | # We do the “latest” → version switch here because it solves |
| 280 | # possible order problems, see bug #270010 as an example. |
279 | # possible order problems, see bug #270010 as an example. |
| 281 | if [[ ${WANT_AUTOMAKE} == "latest" ]]; then |
280 | if [[ ${WANT_AUTOMAKE} == "latest" ]]; then |
|
|
281 | local pv |
| 282 | for pv in ${_LATEST_AUTOMAKE} ; do |
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: |
| 283 | has_version "=sys-devel/automake-${pv}*" && export WANT_AUTOMAKE="$pv" |
285 | ROOT=/ has_version "=sys-devel/automake-${pv}*" && export WANT_AUTOMAKE="$pv" |
| 284 | done |
286 | done |
| 285 | unset pv |
|
|
| 286 | [[ ${WANT_AUTOMAKE} == "latest" ]] && \ |
287 | [[ ${WANT_AUTOMAKE} == "latest" ]] && \ |
| 287 | die "Cannot find the latest automake! Tried ${_LATEST_AUTOMAKE}" |
288 | die "Cannot find the latest automake! Tried ${_LATEST_AUTOMAKE}" |
| 288 | fi |
289 | fi |
| 289 | [[ ${WANT_AUTOCONF} == "latest" ]] && export WANT_AUTOCONF=2.5 |
290 | [[ ${WANT_AUTOCONF} == "latest" ]] && export WANT_AUTOCONF=2.5 |
| 290 | |
291 | |