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