missing revision 1.1 1 1.1 christos #! /bin/sh
2 1.1 christos # Common stub for a few missing GNU programs while installing.
3 1.1 christos
4 1.1 christos scriptversion=2006-05-10.23
5 1.1 christos
6 1.1 christos # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
7 1.1 christos # Free Software Foundation, Inc.
8 1.1 christos # Originally by Fran,cois Pinard <pinard (at] iro.umontreal.ca>, 1996.
9 1.1 christos
10 1.1 christos # This program is free software; you can redistribute it and/or modify
11 1.1 christos # it under the terms of the GNU General Public License as published by
12 1.1 christos # the Free Software Foundation; either version 2, or (at your option)
13 1.1 christos # any later version.
14 1.1 christos
15 1.1 christos # This program is distributed in the hope that it will be useful,
16 1.1 christos # but WITHOUT ANY WARRANTY; without even the implied warranty of
17 1.1 christos # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 1.1 christos # GNU General Public License for more details.
19 1.1 christos
20 1.1 christos # You should have received a copy of the GNU General Public License
21 1.1 christos # along with this program; if not, write to the Free Software
22 1.1 christos # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
23 1.1 christos # 02110-1301, USA.
24 1.1 christos
25 1.1 christos # As a special exception to the GNU General Public License, if you
26 1.1 christos # distribute this file as part of a program that contains a
27 1.1 christos # configuration script generated by Autoconf, you may include it under
28 1.1 christos # the same distribution terms that you use for the rest of that program.
29 1.1 christos
30 1.1 christos if test $# -eq 0; then
31 1.1 christos echo 1>&2 "Try \`$0 --help' for more information"
32 1.1 christos exit 1
33 1.1 christos fi
34 1.1 christos
35 1.1 christos run=:
36 1.1 christos sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
37 1.1 christos sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
38 1.1 christos
39 1.1 christos # In the cases where this matters, `missing' is being run in the
40 1.1 christos # srcdir already.
41 1.1 christos if test -f configure.ac; then
42 1.1 christos configure_ac=configure.ac
43 1.1 christos else
44 1.1 christos configure_ac=configure.in
45 1.1 christos fi
46 1.1 christos
47 1.1 christos msg="missing on your system"
48 1.1 christos
49 1.1 christos case $1 in
50 1.1 christos --run)
51 1.1 christos # Try to run requested program, and just exit if it succeeds.
52 1.1 christos run=
53 1.1 christos shift
54 1.1 christos "$@" && exit 0
55 1.1 christos # Exit code 63 means version mismatch. This often happens
56 1.1 christos # when the user try to use an ancient version of a tool on
57 1.1 christos # a file that requires a minimum version. In this case we
58 1.1 christos # we should proceed has if the program had been absent, or
59 1.1 christos # if --run hadn't been passed.
60 1.1 christos if test $? = 63; then
61 1.1 christos run=:
62 1.1 christos msg="probably too old"
63 1.1 christos fi
64 1.1 christos ;;
65 1.1 christos
66 1.1 christos -h|--h|--he|--hel|--help)
67 1.1 christos echo "\
68 1.1 christos $0 [OPTION]... PROGRAM [ARGUMENT]...
69 1.1 christos
70 1.1 christos Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
71 1.1 christos error status if there is no known handling for PROGRAM.
72 1.1 christos
73 1.1 christos Options:
74 1.1 christos -h, --help display this help and exit
75 1.1 christos -v, --version output version information and exit
76 1.1 christos --run try to run the given command, and emulate it if it fails
77 1.1 christos
78 1.1 christos Supported PROGRAM values:
79 1.1 christos aclocal touch file \`aclocal.m4'
80 1.1 christos autoconf touch file \`configure'
81 1.1 christos autoheader touch file \`config.h.in'
82 1.1 christos autom4te touch the output file, or create a stub one
83 1.1 christos automake touch all \`Makefile.in' files
84 1.1 christos bison create \`y.tab.[ch]', if possible, from existing .[ch]
85 1.1 christos flex create \`lex.yy.c', if possible, from existing .c
86 1.1 christos help2man touch the output file
87 1.1 christos lex create \`lex.yy.c', if possible, from existing .c
88 1.1 christos makeinfo touch the output file
89 1.1 christos tar try tar, gnutar, gtar, then tar without non-portable flags
90 1.1 christos yacc create \`y.tab.[ch]', if possible, from existing .[ch]
91 1.1 christos
92 1.1 christos Send bug reports to <bug-automake (at] gnu.org>."
93 1.1 christos exit $?
94 1.1 christos ;;
95 1.1 christos
96 1.1 christos -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
97 1.1 christos echo "missing $scriptversion (GNU Automake)"
98 1.1 christos exit $?
99 1.1 christos ;;
100 1.1 christos
101 1.1 christos -*)
102 1.1 christos echo 1>&2 "$0: Unknown \`$1' option"
103 1.1 christos echo 1>&2 "Try \`$0 --help' for more information"
104 1.1 christos exit 1
105 1.1 christos ;;
106 1.1 christos
107 1.1 christos esac
108 1.1 christos
109 1.1 christos # Now exit if we have it, but it failed. Also exit now if we
110 1.1 christos # don't have it and --version was passed (most likely to detect
111 1.1 christos # the program).
112 1.1 christos case $1 in
113 1.1 christos lex|yacc)
114 1.1 christos # Not GNU programs, they don't have --version.
115 1.1 christos ;;
116 1.1 christos
117 1.1 christos tar)
118 1.1 christos if test -n "$run"; then
119 1.1 christos echo 1>&2 "ERROR: \`tar' requires --run"
120 1.1 christos exit 1
121 1.1 christos elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
122 1.1 christos exit 1
123 1.1 christos fi
124 1.1 christos ;;
125 1.1 christos
126 1.1 christos *)
127 1.1 christos if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
128 1.1 christos # We have it, but it failed.
129 1.1 christos exit 1
130 1.1 christos elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
131 1.1 christos # Could not run --version or --help. This is probably someone
132 1.1 christos # running `$TOOL --version' or `$TOOL --help' to check whether
133 1.1 christos # $TOOL exists and not knowing $TOOL uses missing.
134 1.1 christos exit 1
135 1.1 christos fi
136 1.1 christos ;;
137 1.1 christos esac
138 1.1 christos
139 1.1 christos # If it does not exist, or fails to run (possibly an outdated version),
140 1.1 christos # try to emulate it.
141 1.1 christos case $1 in
142 1.1 christos aclocal*)
143 1.1 christos echo 1>&2 "\
144 1.1 christos WARNING: \`$1' is $msg. You should only need it if
145 1.1 christos you modified \`acinclude.m4' or \`${configure_ac}'. You might want
146 1.1 christos to install the \`Automake' and \`Perl' packages. Grab them from
147 1.1 christos any GNU archive site."
148 1.1 christos touch aclocal.m4
149 1.1 christos ;;
150 1.1 christos
151 1.1 christos autoconf)
152 1.1 christos echo 1>&2 "\
153 1.1 christos WARNING: \`$1' is $msg. You should only need it if
154 1.1 christos you modified \`${configure_ac}'. You might want to install the
155 1.1 christos \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
156 1.1 christos archive site."
157 1.1 christos touch configure
158 1.1 christos ;;
159 1.1 christos
160 1.1 christos autoheader)
161 1.1 christos echo 1>&2 "\
162 1.1 christos WARNING: \`$1' is $msg. You should only need it if
163 1.1 christos you modified \`acconfig.h' or \`${configure_ac}'. You might want
164 1.1 christos to install the \`Autoconf' and \`GNU m4' packages. Grab them
165 1.1 christos from any GNU archive site."
166 1.1 christos files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
167 1.1 christos test -z "$files" && files="config.h"
168 1.1 christos touch_files=
169 1.1 christos for f in $files; do
170 1.1 christos case $f in
171 1.1 christos *:*) touch_files="$touch_files "`echo "$f" |
172 1.1 christos sed -e 's/^[^:]*://' -e 's/:.*//'`;;
173 1.1 christos *) touch_files="$touch_files $f.in";;
174 1.1 christos esac
175 1.1 christos done
176 1.1 christos touch $touch_files
177 1.1 christos ;;
178 1.1 christos
179 1.1 christos automake*)
180 1.1 christos echo 1>&2 "\
181 1.1 christos WARNING: \`$1' is $msg. You should only need it if
182 1.1 christos you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
183 1.1 christos You might want to install the \`Automake' and \`Perl' packages.
184 1.1 christos Grab them from any GNU archive site."
185 1.1 christos find . -type f -name Makefile.am -print |
186 1.1 christos sed 's/\.am$/.in/' |
187 1.1 christos while read f; do touch "$f"; done
188 1.1 christos ;;
189 1.1 christos
190 1.1 christos autom4te)
191 1.1 christos echo 1>&2 "\
192 1.1 christos WARNING: \`$1' is needed, but is $msg.
193 1.1 christos You might have modified some files without having the
194 1.1 christos proper tools for further handling them.
195 1.1 christos You can get \`$1' as part of \`Autoconf' from any GNU
196 1.1 christos archive site."
197 1.1 christos
198 1.1 christos file=`echo "$*" | sed -n "$sed_output"`
199 1.1 christos test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
200 1.1 christos if test -f "$file"; then
201 1.1 christos touch $file
202 1.1 christos else
203 1.1 christos test -z "$file" || exec >$file
204 1.1 christos echo "#! /bin/sh"
205 1.1 christos echo "# Created by GNU Automake missing as a replacement of"
206 1.1 christos echo "# $ $@"
207 1.1 christos echo "exit 0"
208 1.1 christos chmod +x $file
209 1.1 christos exit 1
210 1.1 christos fi
211 1.1 christos ;;
212 1.1 christos
213 1.1 christos bison|yacc)
214 1.1 christos echo 1>&2 "\
215 1.1 christos WARNING: \`$1' $msg. You should only need it if
216 1.1 christos you modified a \`.y' file. You may need the \`Bison' package
217 1.1 christos in order for those modifications to take effect. You can get
218 1.1 christos \`Bison' from any GNU archive site."
219 1.1 christos rm -f y.tab.c y.tab.h
220 1.1 christos if test $# -ne 1; then
221 1.1 christos eval LASTARG="\${$#}"
222 1.1 christos case $LASTARG in
223 1.1 christos *.y)
224 1.1 christos SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
225 1.1 christos if test -f "$SRCFILE"; then
226 1.1 christos cp "$SRCFILE" y.tab.c
227 1.1 christos fi
228 1.1 christos SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
229 1.1 christos if test -f "$SRCFILE"; then
230 1.1 christos cp "$SRCFILE" y.tab.h
231 1.1 christos fi
232 1.1 christos ;;
233 1.1 christos esac
234 1.1 christos fi
235 1.1 christos if test ! -f y.tab.h; then
236 1.1 christos echo >y.tab.h
237 1.1 christos fi
238 1.1 christos if test ! -f y.tab.c; then
239 1.1 christos echo 'main() { return 0; }' >y.tab.c
240 1.1 christos fi
241 1.1 christos ;;
242 1.1 christos
243 1.1 christos lex|flex)
244 1.1 christos echo 1>&2 "\
245 1.1 christos WARNING: \`$1' is $msg. You should only need it if
246 1.1 christos you modified a \`.l' file. You may need the \`Flex' package
247 1.1 christos in order for those modifications to take effect. You can get
248 1.1 christos \`Flex' from any GNU archive site."
249 1.1 christos rm -f lex.yy.c
250 1.1 christos if test $# -ne 1; then
251 1.1 christos eval LASTARG="\${$#}"
252 1.1 christos case $LASTARG in
253 1.1 christos *.l)
254 1.1 christos SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
255 1.1 christos if test -f "$SRCFILE"; then
256 1.1 christos cp "$SRCFILE" lex.yy.c
257 1.1 christos fi
258 1.1 christos ;;
259 1.1 christos esac
260 1.1 christos fi
261 1.1 christos if test ! -f lex.yy.c; then
262 1.1 christos echo 'main() { return 0; }' >lex.yy.c
263 1.1 christos fi
264 1.1 christos ;;
265 1.1 christos
266 1.1 christos help2man)
267 1.1 christos echo 1>&2 "\
268 1.1 christos WARNING: \`$1' is $msg. You should only need it if
269 1.1 christos you modified a dependency of a manual page. You may need the
270 1.1 christos \`Help2man' package in order for those modifications to take
271 1.1 christos effect. You can get \`Help2man' from any GNU archive site."
272 1.1 christos
273 1.1 christos file=`echo "$*" | sed -n "$sed_output"`
274 1.1 christos test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
275 1.1 christos if test -f "$file"; then
276 1.1 christos touch $file
277 1.1 christos else
278 1.1 christos test -z "$file" || exec >$file
279 1.1 christos echo ".ab help2man is required to generate this page"
280 1.1 christos exit 1
281 1.1 christos fi
282 1.1 christos ;;
283 1.1 christos
284 1.1 christos makeinfo)
285 1.1 christos echo 1>&2 "\
286 1.1 christos WARNING: \`$1' is $msg. You should only need it if
287 1.1 christos you modified a \`.texi' or \`.texinfo' file, or any other file
288 1.1 christos indirectly affecting the aspect of the manual. The spurious
289 1.1 christos call might also be the consequence of using a buggy \`make' (AIX,
290 1.1 christos DU, IRIX). You might want to install the \`Texinfo' package or
291 1.1 christos the \`GNU make' package. Grab either from any GNU archive site."
292 1.1 christos # The file to touch is that specified with -o ...
293 1.1 christos file=`echo "$*" | sed -n "$sed_output"`
294 1.1 christos test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
295 1.1 christos if test -z "$file"; then
296 1.1 christos # ... or it is the one specified with @setfilename ...
297 1.1 christos infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
298 1.1 christos file=`sed -n '
299 1.1 christos /^@setfilename/{
300 1.1 christos s/.* \([^ ]*\) *$/\1/
301 1.1 christos p
302 1.1 christos q
303 1.1 christos }' $infile`
304 1.1 christos # ... or it is derived from the source name (dir/f.texi becomes f.info)
305 1.1 christos test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
306 1.1 christos fi
307 1.1 christos # If the file does not exist, the user really needs makeinfo;
308 1.1 christos # let's fail without touching anything.
309 1.1 christos test -f $file || exit 1
310 1.1 christos touch $file
311 1.1 christos ;;
312 1.1 christos
313 1.1 christos tar)
314 1.1 christos shift
315 1.1 christos
316 1.1 christos # We have already tried tar in the generic part.
317 1.1 christos # Look for gnutar/gtar before invocation to avoid ugly error
318 1.1 christos # messages.
319 1.1 christos if (gnutar --version > /dev/null 2>&1); then
320 1.1 christos gnutar "$@" && exit 0
321 1.1 christos fi
322 1.1 christos if (gtar --version > /dev/null 2>&1); then
323 1.1 christos gtar "$@" && exit 0
324 1.1 christos fi
325 1.1 christos firstarg="$1"
326 1.1 christos if shift; then
327 1.1 christos case $firstarg in
328 1.1 christos *o*)
329 1.1 christos firstarg=`echo "$firstarg" | sed s/o//`
330 1.1 christos tar "$firstarg" "$@" && exit 0
331 1.1 christos ;;
332 1.1 christos esac
333 1.1 christos case $firstarg in
334 1.1 christos *h*)
335 1.1 christos firstarg=`echo "$firstarg" | sed s/h//`
336 1.1 christos tar "$firstarg" "$@" && exit 0
337 1.1 christos ;;
338 1.1 christos esac
339 1.1 christos fi
340 1.1 christos
341 1.1 christos echo 1>&2 "\
342 1.1 christos WARNING: I can't seem to be able to run \`tar' with the given arguments.
343 1.1 christos You may want to install GNU tar or Free paxutils, or check the
344 1.1 christos command line arguments."
345 1.1 christos exit 1
346 1.1 christos ;;
347 1.1 christos
348 1.1 christos *)
349 1.1 christos echo 1>&2 "\
350 1.1 christos WARNING: \`$1' is needed, and is $msg.
351 1.1 christos You might have modified some files without having the
352 1.1 christos proper tools for further handling them. Check the \`README' file,
353 1.1 christos it often tells you about the needed prerequisites for installing
354 1.1 christos this package. You may also peek at any GNU archive site, in case
355 1.1 christos some other package would contain this missing \`$1' program."
356 1.1 christos exit 1
357 1.1 christos ;;
358 1.1 christos esac
359 1.1 christos
360 1.1 christos exit 0
361 1.1 christos
362 1.1 christos # Local variables:
363 1.1 christos # eval: (add-hook 'write-file-hooks 'time-stamp)
364 1.1 christos # time-stamp-start: "scriptversion="
365 1.1 christos # time-stamp-format: "%:y-%02m-%02d.%02H"
366 1.1 christos # time-stamp-end: "$"
367 1.1 christos # End:
368