missing revision 9e0146f7
1492e1cfeSmrg#! /bin/sh
2492e1cfeSmrg# Common stub for a few missing GNU programs while installing.
39e0146f7Smrg
49e0146f7Smrgscriptversion=2009-04-28.21; # UTC
59e0146f7Smrg
69e0146f7Smrg# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
79e0146f7Smrg# 2008, 2009 Free Software Foundation, Inc.
8492e1cfeSmrg# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
9492e1cfeSmrg
10492e1cfeSmrg# This program is free software; you can redistribute it and/or modify
11492e1cfeSmrg# it under the terms of the GNU General Public License as published by
12492e1cfeSmrg# the Free Software Foundation; either version 2, or (at your option)
13492e1cfeSmrg# any later version.
14492e1cfeSmrg
15492e1cfeSmrg# This program is distributed in the hope that it will be useful,
16492e1cfeSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
17492e1cfeSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18492e1cfeSmrg# GNU General Public License for more details.
19492e1cfeSmrg
20492e1cfeSmrg# You should have received a copy of the GNU General Public License
219e0146f7Smrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
22492e1cfeSmrg
23492e1cfeSmrg# As a special exception to the GNU General Public License, if you
24492e1cfeSmrg# distribute this file as part of a program that contains a
25492e1cfeSmrg# configuration script generated by Autoconf, you may include it under
26492e1cfeSmrg# the same distribution terms that you use for the rest of that program.
27492e1cfeSmrg
28492e1cfeSmrgif test $# -eq 0; then
29492e1cfeSmrg  echo 1>&2 "Try \`$0 --help' for more information"
30492e1cfeSmrg  exit 1
31492e1cfeSmrgfi
32492e1cfeSmrg
33492e1cfeSmrgrun=:
349e0146f7Smrgsed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
359e0146f7Smrgsed_minuso='s/.* -o \([^ ]*\).*/\1/p'
36492e1cfeSmrg
37492e1cfeSmrg# In the cases where this matters, `missing' is being run in the
38492e1cfeSmrg# srcdir already.
39492e1cfeSmrgif test -f configure.ac; then
40492e1cfeSmrg  configure_ac=configure.ac
41492e1cfeSmrgelse
42492e1cfeSmrg  configure_ac=configure.in
43492e1cfeSmrgfi
44492e1cfeSmrg
459e0146f7Smrgmsg="missing on your system"
469e0146f7Smrg
479e0146f7Smrgcase $1 in
48492e1cfeSmrg--run)
49492e1cfeSmrg  # Try to run requested program, and just exit if it succeeds.
50492e1cfeSmrg  run=
51492e1cfeSmrg  shift
52492e1cfeSmrg  "$@" && exit 0
539e0146f7Smrg  # Exit code 63 means version mismatch.  This often happens
549e0146f7Smrg  # when the user try to use an ancient version of a tool on
559e0146f7Smrg  # a file that requires a minimum version.  In this case we
569e0146f7Smrg  # we should proceed has if the program had been absent, or
579e0146f7Smrg  # if --run hadn't been passed.
589e0146f7Smrg  if test $? = 63; then
599e0146f7Smrg    run=:
609e0146f7Smrg    msg="probably too old"
619e0146f7Smrg  fi
62492e1cfeSmrg  ;;
63492e1cfeSmrg
64492e1cfeSmrg  -h|--h|--he|--hel|--help)
65492e1cfeSmrg    echo "\
66492e1cfeSmrg$0 [OPTION]... PROGRAM [ARGUMENT]...
67492e1cfeSmrg
68492e1cfeSmrgHandle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
69492e1cfeSmrgerror status if there is no known handling for PROGRAM.
70492e1cfeSmrg
71492e1cfeSmrgOptions:
72492e1cfeSmrg  -h, --help      display this help and exit
73492e1cfeSmrg  -v, --version   output version information and exit
74492e1cfeSmrg  --run           try to run the given command, and emulate it if it fails
75492e1cfeSmrg
76492e1cfeSmrgSupported PROGRAM values:
77492e1cfeSmrg  aclocal      touch file \`aclocal.m4'
78492e1cfeSmrg  autoconf     touch file \`configure'
79492e1cfeSmrg  autoheader   touch file \`config.h.in'
809e0146f7Smrg  autom4te     touch the output file, or create a stub one
81492e1cfeSmrg  automake     touch all \`Makefile.in' files
82492e1cfeSmrg  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
83492e1cfeSmrg  flex         create \`lex.yy.c', if possible, from existing .c
84492e1cfeSmrg  help2man     touch the output file
85492e1cfeSmrg  lex          create \`lex.yy.c', if possible, from existing .c
86492e1cfeSmrg  makeinfo     touch the output file
87492e1cfeSmrg  tar          try tar, gnutar, gtar, then tar without non-portable flags
889e0146f7Smrg  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
899e0146f7Smrg
909e0146f7SmrgVersion suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
919e0146f7Smrg\`g' are ignored when checking the name.
929e0146f7Smrg
939e0146f7SmrgSend bug reports to <bug-automake@gnu.org>."
949e0146f7Smrg    exit $?
95492e1cfeSmrg    ;;
96492e1cfeSmrg
97492e1cfeSmrg  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
989e0146f7Smrg    echo "missing $scriptversion (GNU Automake)"
999e0146f7Smrg    exit $?
100492e1cfeSmrg    ;;
101492e1cfeSmrg
102492e1cfeSmrg  -*)
103492e1cfeSmrg    echo 1>&2 "$0: Unknown \`$1' option"
104492e1cfeSmrg    echo 1>&2 "Try \`$0 --help' for more information"
105492e1cfeSmrg    exit 1
106492e1cfeSmrg    ;;
107492e1cfeSmrg
1089e0146f7Smrgesac
1099e0146f7Smrg
1109e0146f7Smrg# normalize program name to check for.
1119e0146f7Smrgprogram=`echo "$1" | sed '
1129e0146f7Smrg  s/^gnu-//; t
1139e0146f7Smrg  s/^gnu//; t
1149e0146f7Smrg  s/^g//; t'`
1159e0146f7Smrg
1169e0146f7Smrg# Now exit if we have it, but it failed.  Also exit now if we
1179e0146f7Smrg# don't have it and --version was passed (most likely to detect
1189e0146f7Smrg# the program).  This is about non-GNU programs, so use $1 not
1199e0146f7Smrg# $program.
1209e0146f7Smrgcase $1 in
1219e0146f7Smrg  lex*|yacc*)
1229e0146f7Smrg    # Not GNU programs, they don't have --version.
1239e0146f7Smrg    ;;
1249e0146f7Smrg
1259e0146f7Smrg  tar*)
1269e0146f7Smrg    if test -n "$run"; then
1279e0146f7Smrg       echo 1>&2 "ERROR: \`tar' requires --run"
1289e0146f7Smrg       exit 1
1299e0146f7Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
1309e0146f7Smrg       exit 1
1319e0146f7Smrg    fi
1329e0146f7Smrg    ;;
1339e0146f7Smrg
1349e0146f7Smrg  *)
135492e1cfeSmrg    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
136492e1cfeSmrg       # We have it, but it failed.
137492e1cfeSmrg       exit 1
1389e0146f7Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
1399e0146f7Smrg       # Could not run --version or --help.  This is probably someone
1409e0146f7Smrg       # running `$TOOL --version' or `$TOOL --help' to check whether
1419e0146f7Smrg       # $TOOL exists and not knowing $TOOL uses missing.
1429e0146f7Smrg       exit 1
143492e1cfeSmrg    fi
1449e0146f7Smrg    ;;
1459e0146f7Smrgesac
146492e1cfeSmrg
1479e0146f7Smrg# If it does not exist, or fails to run (possibly an outdated version),
1489e0146f7Smrg# try to emulate it.
1499e0146f7Smrgcase $program in
1509e0146f7Smrg  aclocal*)
151492e1cfeSmrg    echo 1>&2 "\
1529e0146f7SmrgWARNING: \`$1' is $msg.  You should only need it if
153492e1cfeSmrg         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
154492e1cfeSmrg         to install the \`Automake' and \`Perl' packages.  Grab them from
155492e1cfeSmrg         any GNU archive site."
156492e1cfeSmrg    touch aclocal.m4
157492e1cfeSmrg    ;;
158492e1cfeSmrg
1599e0146f7Smrg  autoconf*)
160492e1cfeSmrg    echo 1>&2 "\
1619e0146f7SmrgWARNING: \`$1' is $msg.  You should only need it if
162492e1cfeSmrg         you modified \`${configure_ac}'.  You might want to install the
163492e1cfeSmrg         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
164492e1cfeSmrg         archive site."
165492e1cfeSmrg    touch configure
166492e1cfeSmrg    ;;
167492e1cfeSmrg
1689e0146f7Smrg  autoheader*)
169492e1cfeSmrg    echo 1>&2 "\
1709e0146f7SmrgWARNING: \`$1' is $msg.  You should only need it if
171492e1cfeSmrg         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
172492e1cfeSmrg         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
173492e1cfeSmrg         from any GNU archive site."
174492e1cfeSmrg    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
175492e1cfeSmrg    test -z "$files" && files="config.h"
176492e1cfeSmrg    touch_files=
177492e1cfeSmrg    for f in $files; do
1789e0146f7Smrg      case $f in
179492e1cfeSmrg      *:*) touch_files="$touch_files "`echo "$f" |
180492e1cfeSmrg				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
181492e1cfeSmrg      *) touch_files="$touch_files $f.in";;
182492e1cfeSmrg      esac
183492e1cfeSmrg    done
184492e1cfeSmrg    touch $touch_files
185492e1cfeSmrg    ;;
186492e1cfeSmrg
187492e1cfeSmrg  automake*)
188492e1cfeSmrg    echo 1>&2 "\
1899e0146f7SmrgWARNING: \`$1' is $msg.  You should only need it if
190492e1cfeSmrg         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
191492e1cfeSmrg         You might want to install the \`Automake' and \`Perl' packages.
192492e1cfeSmrg         Grab them from any GNU archive site."
193492e1cfeSmrg    find . -type f -name Makefile.am -print |
194492e1cfeSmrg	   sed 's/\.am$/.in/' |
195492e1cfeSmrg	   while read f; do touch "$f"; done
196492e1cfeSmrg    ;;
197492e1cfeSmrg
1989e0146f7Smrg  autom4te*)
199492e1cfeSmrg    echo 1>&2 "\
2009e0146f7SmrgWARNING: \`$1' is needed, but is $msg.
2019e0146f7Smrg         You might have modified some files without having the
202492e1cfeSmrg         proper tools for further handling them.
203492e1cfeSmrg         You can get \`$1' as part of \`Autoconf' from any GNU
204492e1cfeSmrg         archive site."
205492e1cfeSmrg
2069e0146f7Smrg    file=`echo "$*" | sed -n "$sed_output"`
2079e0146f7Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
208492e1cfeSmrg    if test -f "$file"; then
209492e1cfeSmrg	touch $file
210492e1cfeSmrg    else
211492e1cfeSmrg	test -z "$file" || exec >$file
212492e1cfeSmrg	echo "#! /bin/sh"
213492e1cfeSmrg	echo "# Created by GNU Automake missing as a replacement of"
214492e1cfeSmrg	echo "#  $ $@"
215492e1cfeSmrg	echo "exit 0"
216492e1cfeSmrg	chmod +x $file
217492e1cfeSmrg	exit 1
218492e1cfeSmrg    fi
219492e1cfeSmrg    ;;
220492e1cfeSmrg
2219e0146f7Smrg  bison*|yacc*)
222492e1cfeSmrg    echo 1>&2 "\
2239e0146f7SmrgWARNING: \`$1' $msg.  You should only need it if
224492e1cfeSmrg         you modified a \`.y' file.  You may need the \`Bison' package
225492e1cfeSmrg         in order for those modifications to take effect.  You can get
226492e1cfeSmrg         \`Bison' from any GNU archive site."
227492e1cfeSmrg    rm -f y.tab.c y.tab.h
2289e0146f7Smrg    if test $# -ne 1; then
229492e1cfeSmrg        eval LASTARG="\${$#}"
2309e0146f7Smrg	case $LASTARG in
231492e1cfeSmrg	*.y)
232492e1cfeSmrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
2339e0146f7Smrg	    if test -f "$SRCFILE"; then
234492e1cfeSmrg	         cp "$SRCFILE" y.tab.c
235492e1cfeSmrg	    fi
236492e1cfeSmrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
2379e0146f7Smrg	    if test -f "$SRCFILE"; then
238492e1cfeSmrg	         cp "$SRCFILE" y.tab.h
239492e1cfeSmrg	    fi
240492e1cfeSmrg	  ;;
241492e1cfeSmrg	esac
242492e1cfeSmrg    fi
2439e0146f7Smrg    if test ! -f y.tab.h; then
244492e1cfeSmrg	echo >y.tab.h
245492e1cfeSmrg    fi
2469e0146f7Smrg    if test ! -f y.tab.c; then
247492e1cfeSmrg	echo 'main() { return 0; }' >y.tab.c
248492e1cfeSmrg    fi
249492e1cfeSmrg    ;;
250492e1cfeSmrg
2519e0146f7Smrg  lex*|flex*)
252492e1cfeSmrg    echo 1>&2 "\
2539e0146f7SmrgWARNING: \`$1' is $msg.  You should only need it if
254492e1cfeSmrg         you modified a \`.l' file.  You may need the \`Flex' package
255492e1cfeSmrg         in order for those modifications to take effect.  You can get
256492e1cfeSmrg         \`Flex' from any GNU archive site."
257492e1cfeSmrg    rm -f lex.yy.c
2589e0146f7Smrg    if test $# -ne 1; then
259492e1cfeSmrg        eval LASTARG="\${$#}"
2609e0146f7Smrg	case $LASTARG in
261492e1cfeSmrg	*.l)
262492e1cfeSmrg	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
2639e0146f7Smrg	    if test -f "$SRCFILE"; then
264492e1cfeSmrg	         cp "$SRCFILE" lex.yy.c
265492e1cfeSmrg	    fi
266492e1cfeSmrg	  ;;
267492e1cfeSmrg	esac
268492e1cfeSmrg    fi
2699e0146f7Smrg    if test ! -f lex.yy.c; then
270492e1cfeSmrg	echo 'main() { return 0; }' >lex.yy.c
271492e1cfeSmrg    fi
272492e1cfeSmrg    ;;
273492e1cfeSmrg
2749e0146f7Smrg  help2man*)
275492e1cfeSmrg    echo 1>&2 "\
2769e0146f7SmrgWARNING: \`$1' is $msg.  You should only need it if
277492e1cfeSmrg	 you modified a dependency of a manual page.  You may need the
278492e1cfeSmrg	 \`Help2man' package in order for those modifications to take
279492e1cfeSmrg	 effect.  You can get \`Help2man' from any GNU archive site."
280492e1cfeSmrg
2819e0146f7Smrg    file=`echo "$*" | sed -n "$sed_output"`
2829e0146f7Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
2839e0146f7Smrg    if test -f "$file"; then
284492e1cfeSmrg	touch $file
285492e1cfeSmrg    else
286492e1cfeSmrg	test -z "$file" || exec >$file
287492e1cfeSmrg	echo ".ab help2man is required to generate this page"
2889e0146f7Smrg	exit $?
289492e1cfeSmrg    fi
290492e1cfeSmrg    ;;
291492e1cfeSmrg
2929e0146f7Smrg  makeinfo*)
293492e1cfeSmrg    echo 1>&2 "\
2949e0146f7SmrgWARNING: \`$1' is $msg.  You should only need it if
295492e1cfeSmrg         you modified a \`.texi' or \`.texinfo' file, or any other file
296492e1cfeSmrg         indirectly affecting the aspect of the manual.  The spurious
297492e1cfeSmrg         call might also be the consequence of using a buggy \`make' (AIX,
298492e1cfeSmrg         DU, IRIX).  You might want to install the \`Texinfo' package or
299492e1cfeSmrg         the \`GNU make' package.  Grab either from any GNU archive site."
3009e0146f7Smrg    # The file to touch is that specified with -o ...
3019e0146f7Smrg    file=`echo "$*" | sed -n "$sed_output"`
3029e0146f7Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
303492e1cfeSmrg    if test -z "$file"; then
3049e0146f7Smrg      # ... or it is the one specified with @setfilename ...
3059e0146f7Smrg      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
3069e0146f7Smrg      file=`sed -n '
3079e0146f7Smrg	/^@setfilename/{
3089e0146f7Smrg	  s/.* \([^ ]*\) *$/\1/
3099e0146f7Smrg	  p
3109e0146f7Smrg	  q
3119e0146f7Smrg	}' $infile`
3129e0146f7Smrg      # ... or it is derived from the source name (dir/f.texi becomes f.info)
3139e0146f7Smrg      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
314492e1cfeSmrg    fi
3159e0146f7Smrg    # If the file does not exist, the user really needs makeinfo;
3169e0146f7Smrg    # let's fail without touching anything.
3179e0146f7Smrg    test -f $file || exit 1
318492e1cfeSmrg    touch $file
319492e1cfeSmrg    ;;
320492e1cfeSmrg
3219e0146f7Smrg  tar*)
322492e1cfeSmrg    shift
323492e1cfeSmrg
324492e1cfeSmrg    # We have already tried tar in the generic part.
325492e1cfeSmrg    # Look for gnutar/gtar before invocation to avoid ugly error
326492e1cfeSmrg    # messages.
327492e1cfeSmrg    if (gnutar --version > /dev/null 2>&1); then
328492e1cfeSmrg       gnutar "$@" && exit 0
329492e1cfeSmrg    fi
330492e1cfeSmrg    if (gtar --version > /dev/null 2>&1); then
331492e1cfeSmrg       gtar "$@" && exit 0
332492e1cfeSmrg    fi
333492e1cfeSmrg    firstarg="$1"
334492e1cfeSmrg    if shift; then
3359e0146f7Smrg	case $firstarg in
336492e1cfeSmrg	*o*)
337492e1cfeSmrg	    firstarg=`echo "$firstarg" | sed s/o//`
338492e1cfeSmrg	    tar "$firstarg" "$@" && exit 0
339492e1cfeSmrg	    ;;
340492e1cfeSmrg	esac
3419e0146f7Smrg	case $firstarg in
342492e1cfeSmrg	*h*)
343492e1cfeSmrg	    firstarg=`echo "$firstarg" | sed s/h//`
344492e1cfeSmrg	    tar "$firstarg" "$@" && exit 0
345492e1cfeSmrg	    ;;
346492e1cfeSmrg	esac
347492e1cfeSmrg    fi
348492e1cfeSmrg
349492e1cfeSmrg    echo 1>&2 "\
350492e1cfeSmrgWARNING: I can't seem to be able to run \`tar' with the given arguments.
351492e1cfeSmrg         You may want to install GNU tar or Free paxutils, or check the
352492e1cfeSmrg         command line arguments."
353492e1cfeSmrg    exit 1
354492e1cfeSmrg    ;;
355492e1cfeSmrg
356492e1cfeSmrg  *)
357492e1cfeSmrg    echo 1>&2 "\
3589e0146f7SmrgWARNING: \`$1' is needed, and is $msg.
3599e0146f7Smrg         You might have modified some files without having the
360492e1cfeSmrg         proper tools for further handling them.  Check the \`README' file,
361492e1cfeSmrg         it often tells you about the needed prerequisites for installing
362492e1cfeSmrg         this package.  You may also peek at any GNU archive site, in case
363492e1cfeSmrg         some other package would contain this missing \`$1' program."
364492e1cfeSmrg    exit 1
365492e1cfeSmrg    ;;
366492e1cfeSmrgesac
367492e1cfeSmrg
368492e1cfeSmrgexit 0
3699e0146f7Smrg
3709e0146f7Smrg# Local variables:
3719e0146f7Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
3729e0146f7Smrg# time-stamp-start: "scriptversion="
3739e0146f7Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
3749e0146f7Smrg# time-stamp-time-zone: "UTC"
3759e0146f7Smrg# time-stamp-end: "; # UTC"
3769e0146f7Smrg# End:
377