1 |
root |
1.1 |
#! /bin/sh |
2 |
root |
1.3 |
# Common wrapper for a few potentially missing GNU programs. |
3 |
root |
1.1 |
|
4 |
root |
1.4 |
scriptversion=2018-03-07.03; # UTC |
5 |
root |
1.1 |
|
6 |
root |
1.4 |
# Copyright (C) 1996-2018 Free Software Foundation, Inc. |
7 |
root |
1.3 |
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. |
8 |
root |
1.1 |
|
9 |
|
|
# This program is free software; you can redistribute it and/or modify |
10 |
|
|
# it under the terms of the GNU General Public License as published by |
11 |
|
|
# the Free Software Foundation; either version 2, or (at your option) |
12 |
|
|
# any later version. |
13 |
|
|
|
14 |
|
|
# This program is distributed in the hope that it will be useful, |
15 |
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
16 |
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
17 |
|
|
# GNU General Public License for more details. |
18 |
|
|
|
19 |
|
|
# You should have received a copy of the GNU General Public License |
20 |
root |
1.4 |
# along with this program. If not, see <https://www.gnu.org/licenses/>. |
21 |
root |
1.1 |
|
22 |
|
|
# As a special exception to the GNU General Public License, if you |
23 |
|
|
# distribute this file as part of a program that contains a |
24 |
|
|
# configuration script generated by Autoconf, you may include it under |
25 |
|
|
# the same distribution terms that you use for the rest of that program. |
26 |
|
|
|
27 |
|
|
if test $# -eq 0; then |
28 |
root |
1.3 |
echo 1>&2 "Try '$0 --help' for more information" |
29 |
root |
1.1 |
exit 1 |
30 |
|
|
fi |
31 |
|
|
|
32 |
root |
1.3 |
case $1 in |
33 |
root |
1.1 |
|
34 |
root |
1.3 |
--is-lightweight) |
35 |
|
|
# Used by our autoconf macros to check whether the available missing |
36 |
|
|
# script is modern enough. |
37 |
|
|
exit 0 |
38 |
|
|
;; |
39 |
root |
1.1 |
|
40 |
root |
1.3 |
--run) |
41 |
|
|
# Back-compat with the calling convention used by older automake. |
42 |
|
|
shift |
43 |
|
|
;; |
44 |
root |
1.1 |
|
45 |
|
|
-h|--h|--he|--hel|--help) |
46 |
|
|
echo "\ |
47 |
|
|
$0 [OPTION]... PROGRAM [ARGUMENT]... |
48 |
|
|
|
49 |
root |
1.3 |
Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due |
50 |
|
|
to PROGRAM being missing or too old. |
51 |
root |
1.1 |
|
52 |
|
|
Options: |
53 |
|
|
-h, --help display this help and exit |
54 |
|
|
-v, --version output version information and exit |
55 |
|
|
|
56 |
|
|
Supported PROGRAM values: |
57 |
root |
1.3 |
aclocal autoconf autoheader autom4te automake makeinfo |
58 |
|
|
bison yacc flex lex help2man |
59 |
|
|
|
60 |
|
|
Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and |
61 |
|
|
'g' are ignored when checking the name. |
62 |
root |
1.1 |
|
63 |
|
|
Send bug reports to <bug-automake@gnu.org>." |
64 |
root |
1.2 |
exit $? |
65 |
root |
1.1 |
;; |
66 |
|
|
|
67 |
|
|
-v|--v|--ve|--ver|--vers|--versi|--versio|--version) |
68 |
|
|
echo "missing $scriptversion (GNU Automake)" |
69 |
root |
1.2 |
exit $? |
70 |
root |
1.1 |
;; |
71 |
|
|
|
72 |
|
|
-*) |
73 |
root |
1.3 |
echo 1>&2 "$0: unknown '$1' option" |
74 |
|
|
echo 1>&2 "Try '$0 --help' for more information" |
75 |
root |
1.1 |
exit 1 |
76 |
|
|
;; |
77 |
|
|
|
78 |
|
|
esac |
79 |
|
|
|
80 |
root |
1.3 |
# Run the given program, remember its exit status. |
81 |
|
|
"$@"; st=$? |
82 |
root |
1.1 |
|
83 |
root |
1.3 |
# If it succeeded, we are done. |
84 |
|
|
test $st -eq 0 && exit 0 |
85 |
root |
1.1 |
|
86 |
root |
1.3 |
# Also exit now if we it failed (or wasn't found), and '--version' was |
87 |
|
|
# passed; such an option is passed most likely to detect whether the |
88 |
|
|
# program is present and works. |
89 |
|
|
case $2 in --version|--help) exit $st;; esac |
90 |
|
|
|
91 |
|
|
# Exit code 63 means version mismatch. This often happens when the user |
92 |
|
|
# tries to use an ancient version of a tool on a file that requires a |
93 |
|
|
# minimum version. |
94 |
|
|
if test $st -eq 63; then |
95 |
|
|
msg="probably too old" |
96 |
|
|
elif test $st -eq 127; then |
97 |
|
|
# Program was missing. |
98 |
|
|
msg="missing on your system" |
99 |
|
|
else |
100 |
|
|
# Program was found and executed, but failed. Give up. |
101 |
|
|
exit $st |
102 |
|
|
fi |
103 |
root |
1.1 |
|
104 |
root |
1.4 |
perl_URL=https://www.perl.org/ |
105 |
|
|
flex_URL=https://github.com/westes/flex |
106 |
|
|
gnu_software_URL=https://www.gnu.org/software |
107 |
root |
1.3 |
|
108 |
|
|
program_details () |
109 |
|
|
{ |
110 |
|
|
case $1 in |
111 |
|
|
aclocal|automake) |
112 |
|
|
echo "The '$1' program is part of the GNU Automake package:" |
113 |
|
|
echo "<$gnu_software_URL/automake>" |
114 |
|
|
echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" |
115 |
|
|
echo "<$gnu_software_URL/autoconf>" |
116 |
|
|
echo "<$gnu_software_URL/m4/>" |
117 |
|
|
echo "<$perl_URL>" |
118 |
|
|
;; |
119 |
|
|
autoconf|autom4te|autoheader) |
120 |
|
|
echo "The '$1' program is part of the GNU Autoconf package:" |
121 |
|
|
echo "<$gnu_software_URL/autoconf/>" |
122 |
|
|
echo "It also requires GNU m4 and Perl in order to run:" |
123 |
|
|
echo "<$gnu_software_URL/m4/>" |
124 |
|
|
echo "<$perl_URL>" |
125 |
|
|
;; |
126 |
|
|
esac |
127 |
|
|
} |
128 |
|
|
|
129 |
|
|
give_advice () |
130 |
|
|
{ |
131 |
|
|
# Normalize program name to check for. |
132 |
|
|
normalized_program=`echo "$1" | sed ' |
133 |
|
|
s/^gnu-//; t |
134 |
|
|
s/^gnu//; t |
135 |
|
|
s/^g//; t'` |
136 |
|
|
|
137 |
|
|
printf '%s\n' "'$1' is $msg." |
138 |
|
|
|
139 |
|
|
configure_deps="'configure.ac' or m4 files included by 'configure.ac'" |
140 |
|
|
case $normalized_program in |
141 |
|
|
autoconf*) |
142 |
|
|
echo "You should only need it if you modified 'configure.ac'," |
143 |
|
|
echo "or m4 files included by it." |
144 |
|
|
program_details 'autoconf' |
145 |
|
|
;; |
146 |
|
|
autoheader*) |
147 |
|
|
echo "You should only need it if you modified 'acconfig.h' or" |
148 |
|
|
echo "$configure_deps." |
149 |
|
|
program_details 'autoheader' |
150 |
|
|
;; |
151 |
|
|
automake*) |
152 |
|
|
echo "You should only need it if you modified 'Makefile.am' or" |
153 |
|
|
echo "$configure_deps." |
154 |
|
|
program_details 'automake' |
155 |
|
|
;; |
156 |
|
|
aclocal*) |
157 |
|
|
echo "You should only need it if you modified 'acinclude.m4' or" |
158 |
|
|
echo "$configure_deps." |
159 |
|
|
program_details 'aclocal' |
160 |
|
|
;; |
161 |
|
|
autom4te*) |
162 |
|
|
echo "You might have modified some maintainer files that require" |
163 |
|
|
echo "the 'autom4te' program to be rebuilt." |
164 |
|
|
program_details 'autom4te' |
165 |
|
|
;; |
166 |
|
|
bison*|yacc*) |
167 |
|
|
echo "You should only need it if you modified a '.y' file." |
168 |
|
|
echo "You may want to install the GNU Bison package:" |
169 |
|
|
echo "<$gnu_software_URL/bison/>" |
170 |
|
|
;; |
171 |
|
|
lex*|flex*) |
172 |
|
|
echo "You should only need it if you modified a '.l' file." |
173 |
|
|
echo "You may want to install the Fast Lexical Analyzer package:" |
174 |
|
|
echo "<$flex_URL>" |
175 |
|
|
;; |
176 |
|
|
help2man*) |
177 |
|
|
echo "You should only need it if you modified a dependency" \ |
178 |
|
|
"of a man page." |
179 |
|
|
echo "You may want to install the GNU Help2man package:" |
180 |
|
|
echo "<$gnu_software_URL/help2man/>" |
181 |
|
|
;; |
182 |
|
|
makeinfo*) |
183 |
|
|
echo "You should only need it if you modified a '.texi' file, or" |
184 |
|
|
echo "any other file indirectly affecting the aspect of the manual." |
185 |
|
|
echo "You might want to install the Texinfo package:" |
186 |
|
|
echo "<$gnu_software_URL/texinfo/>" |
187 |
|
|
echo "The spurious makeinfo call might also be the consequence of" |
188 |
|
|
echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" |
189 |
|
|
echo "want to install GNU make:" |
190 |
|
|
echo "<$gnu_software_URL/make/>" |
191 |
|
|
;; |
192 |
|
|
*) |
193 |
|
|
echo "You might have modified some files without having the proper" |
194 |
|
|
echo "tools for further handling them. Check the 'README' file, it" |
195 |
|
|
echo "often tells you about the needed prerequisites for installing" |
196 |
|
|
echo "this package. You may also peek at any GNU archive site, in" |
197 |
|
|
echo "case some other package contains this missing '$1' program." |
198 |
|
|
;; |
199 |
|
|
esac |
200 |
|
|
} |
201 |
|
|
|
202 |
|
|
give_advice "$1" | sed -e '1s/^/WARNING: /' \ |
203 |
|
|
-e '2,$s/^/ /' >&2 |
204 |
|
|
|
205 |
|
|
# Propagate the correct exit status (expected to be 127 for a program |
206 |
|
|
# not found, 63 for a program that failed due to version mismatch). |
207 |
|
|
exit $st |
208 |
root |
1.1 |
|
209 |
|
|
# Local variables: |
210 |
root |
1.4 |
# eval: (add-hook 'before-save-hook 'time-stamp) |
211 |
root |
1.1 |
# time-stamp-start: "scriptversion=" |
212 |
|
|
# time-stamp-format: "%:y-%02m-%02d.%02H" |
213 |
root |
1.4 |
# time-stamp-time-zone: "UTC0" |
214 |
root |
1.3 |
# time-stamp-end: "; # UTC" |
215 |
root |
1.1 |
# End: |