1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
#!/usr/bin/perl
#
#
# Guillaume Cottenceau (gc@mandrakesoft.com)
# Abel Cheung (deaddog@deaddog.org)
#
# Copyright 2001-2002, 2004 MandrakeSoft
#
# This software may be freely redistributed under the terms of the GNU
# public license.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
#######################################################################
#
# Executes the correct autoconf version.
#
# - defaults to autoconf-2.59
# - runs autoconf-2.13 only if:
# - envvar WANT_AUTOCONF_2_1 is set to `1'
# -or-
# - `configure' is already present and was generated by autoconf 2.13
#
#######################################################################
#
# ChangeLog:
#
# * Fri May 14 2004
# - Use autoconf 2.59 by default, unless `configure' is generated by
# autoconf 2.13, or WANT_AUTOCONF_2_1 is set.
# - WANT_AUTOCONF_2_5 has no effect now
#
# * Thu May 27 2004
# - Almost rewrite
# - Introduce FORCE_AUTOCONF_2_5 (avoid misuse with WANT_*), which can be used
# when you want to play with fire :-)
# - More verbose and user oriented messages (gc et. al.)
#
# * Sat Jul 03 2004
# - require autoconf2.1 and remove special error message
# - allow use of tools without configure.in or configure.ac (2.5 only)
# required for autodetection by apps
use File::Basename qw(basename);
use strict;
sub cat_ { local *F; open F, $_[0] or return; my @l = <F>; wantarray ? @l : join '', @l }
sub errmsg {
my $dummy = 0;
my @msg = @_;
foreach (@msg) {
print STDERR (($dummy++ == 0)? "ac-wrapper: " : " ") . $_ . "\n";
}
exit 1;
}
errmsg ("Don't call this script directly.") if (basename("$0") eq "ac-wrapper.pl");
#
# go away naughty guys/gals
#
if (($ENV{WANT_AUTOCONF_2_1}) && ($ENV{FORCE_AUTOCONF_2_5})) {
errmsg ("You can only set either WANT_AUTOCONF_2_1 or FORCE_AUTOCONF_2_5,",
"but not both.");
}
if (($ENV{WANT_AUTOCONF_2_1}) && (basename("$0") eq "autom4te")) {
errmsg ("Autoconf 2.13 doesn't contain autom4te.",
"Either unset WANT_AUTOCONF_2_1 or don't execute anything",
"that would use autom4te.");
}
my $binary_new = "$0-2.59";
my $binary_old = "$0-2.13";
my $binary = $binary_new;
my $confversion = 'Undetected';
if ((-f "configure.ac") || (-f "configure.in")) {
#
# autodetect routine
#
if ($ENV{WANT_AUTOCONF_2_1}) {
if ((-f "configure.in") && (! -f "configure.ac")) {
$binary = $binary_old;
} else {
errmsg ("Since configure.ac is present, aclocal always use",
"autoconf 2.59, which conflicts with your choice and",
"causes error. You have two options:",
"1. Try execute command again after removing configure.ac",
"2. Don't set WANT_AUTOCONF_2_1 variable");
}
} elsif (!($ENV{FORCE_AUTOCONF_2_5})) {
# U > [0-9] in lexicon comparison
$confversion = (cat_('configure') =~ /^# Generated (by (?:GNU )?Autoconf|automatically using autoconf version) (\S+)/m ? $2 : 'Unknown');
if (("$confversion" lt '2.5') && (! -f "configure.ac")) {
$binary = $binary_old;
}
}
}
if ($ENV{WANT_ACWRAPPER_DEBUG}) {
print STDERR "ac-wrapper: DEBUG: Detected version is '$confversion'\n";
print STDERR "ac-wrapper: DEBUG: WANT_AUTOCONF_2_1 is set\n" if ($ENV{WANT_AUTOCONF_2_1});
print STDERR "ac-wrapper: DEBUG: FORCE_AUTOCONF_2_5 is set\n" if ($ENV{FORCE_AUTOCONF_2_5});
print STDERR "ac-wrapper: DEBUG: will execute <$binary>\n";
}
#
# for further consistency
#
$ENV{WANT_AUTOCONF_2_1} = 1 if ("$binary" eq "$binary_old");
$ENV{FORCE_AUTOCONF_2_5} = 1 if ("$binary" eq "$binary_new");
if (! -x "$binary") {
# this shouldn't happen
errmsg ("$binary is missing or not executable.",
"Please try emerging the correct version of autoconf.");
}
exec $binary, @ARGV;
errmsg ("was unable to exec $binary !?");
|