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