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