missing revision 9b41ff1a
1fdb3d228Smrg#! /bin/sh
2fdb3d228Smrg# Common stub for a few missing GNU programs while installing.
39b41ff1aSmrg
49b41ff1aSmrgscriptversion=2009-04-28.21; # UTC
59b41ff1aSmrg
69b41ff1aSmrg# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
79b41ff1aSmrg# 2008, 2009 Free Software Foundation, Inc.
8fdb3d228Smrg# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
9fdb3d228Smrg
10fdb3d228Smrg# This program is free software; you can redistribute it and/or modify
11fdb3d228Smrg# it under the terms of the GNU General Public License as published by
12fdb3d228Smrg# the Free Software Foundation; either version 2, or (at your option)
13fdb3d228Smrg# any later version.
14fdb3d228Smrg
15fdb3d228Smrg# This program is distributed in the hope that it will be useful,
16fdb3d228Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
17fdb3d228Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18fdb3d228Smrg# GNU General Public License for more details.
19fdb3d228Smrg
20fdb3d228Smrg# You should have received a copy of the GNU General Public License
219b41ff1aSmrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
22fdb3d228Smrg
23fdb3d228Smrg# As a special exception to the GNU General Public License, if you
24fdb3d228Smrg# distribute this file as part of a program that contains a
25fdb3d228Smrg# configuration script generated by Autoconf, you may include it under
26fdb3d228Smrg# the same distribution terms that you use for the rest of that program.
27fdb3d228Smrg
28fdb3d228Smrgif test $# -eq 0; then
29fdb3d228Smrg  echo 1>&2 "Try \`$0 --help' for more information"
30fdb3d228Smrg  exit 1
31fdb3d228Smrgfi
32fdb3d228Smrg
33fdb3d228Smrgrun=:
349b41ff1aSmrgsed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
359b41ff1aSmrgsed_minuso='s/.* -o \([^ ]*\).*/\1/p'
36fdb3d228Smrg
37fdb3d228Smrg# In the cases where this matters, `missing' is being run in the
38fdb3d228Smrg# srcdir already.
39fdb3d228Smrgif test -f configure.ac; then
40fdb3d228Smrg  configure_ac=configure.ac
41fdb3d228Smrgelse
42fdb3d228Smrg  configure_ac=configure.in
43fdb3d228Smrgfi
44fdb3d228Smrg
459b41ff1aSmrgmsg="missing on your system"
469b41ff1aSmrg
479b41ff1aSmrgcase $1 in
48fdb3d228Smrg--run)
49fdb3d228Smrg  # Try to run requested program, and just exit if it succeeds.
50fdb3d228Smrg  run=
51fdb3d228Smrg  shift
52fdb3d228Smrg  "$@" && exit 0
539b41ff1aSmrg  # Exit code 63 means version mismatch.  This often happens
549b41ff1aSmrg  # when the user try to use an ancient version of a tool on
559b41ff1aSmrg  # a file that requires a minimum version.  In this case we
569b41ff1aSmrg  # we should proceed has if the program had been absent, or
579b41ff1aSmrg  # if --run hadn't been passed.
589b41ff1aSmrg  if test $? = 63; then
599b41ff1aSmrg    run=:
609b41ff1aSmrg    msg="probably too old"
619b41ff1aSmrg  fi
62fdb3d228Smrg  ;;
63fdb3d228Smrg
64fdb3d228Smrg  -h|--h|--he|--hel|--help)
65fdb3d228Smrg    echo "\
66fdb3d228Smrg$0 [OPTION]... PROGRAM [ARGUMENT]...
67fdb3d228Smrg
68fdb3d228SmrgHandle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
69fdb3d228Smrgerror status if there is no known handling for PROGRAM.
70fdb3d228Smrg
71fdb3d228SmrgOptions:
72fdb3d228Smrg  -h, --help      display this help and exit
73fdb3d228Smrg  -v, --version   output version information and exit
74fdb3d228Smrg  --run           try to run the given command, and emulate it if it fails
75fdb3d228Smrg
76fdb3d228SmrgSupported PROGRAM values:
77fdb3d228Smrg  aclocal      touch file \`aclocal.m4'
78fdb3d228Smrg  autoconf     touch file \`configure'
79fdb3d228Smrg  autoheader   touch file \`config.h.in'
809b41ff1aSmrg  autom4te     touch the output file, or create a stub one
81fdb3d228Smrg  automake     touch all \`Makefile.in' files
82fdb3d228Smrg  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
83fdb3d228Smrg  flex         create \`lex.yy.c', if possible, from existing .c
84fdb3d228Smrg  help2man     touch the output file
85fdb3d228Smrg  lex          create \`lex.yy.c', if possible, from existing .c
86fdb3d228Smrg  makeinfo     touch the output file
87fdb3d228Smrg  tar          try tar, gnutar, gtar, then tar without non-portable flags
889b41ff1aSmrg  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
899b41ff1aSmrg
909b41ff1aSmrgVersion suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
919b41ff1aSmrg\`g' are ignored when checking the name.
929b41ff1aSmrg
939b41ff1aSmrgSend bug reports to <bug-automake@gnu.org>."
949b41ff1aSmrg    exit $?
95fdb3d228Smrg    ;;
96fdb3d228Smrg
97fdb3d228Smrg  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
989b41ff1aSmrg    echo "missing $scriptversion (GNU Automake)"
999b41ff1aSmrg    exit $?
100fdb3d228Smrg    ;;
101fdb3d228Smrg
102fdb3d228Smrg  -*)
103fdb3d228Smrg    echo 1>&2 "$0: Unknown \`$1' option"
104fdb3d228Smrg    echo 1>&2 "Try \`$0 --help' for more information"
105fdb3d228Smrg    exit 1
106fdb3d228Smrg    ;;
107fdb3d228Smrg
1089b41ff1aSmrgesac
1099b41ff1aSmrg
1109b41ff1aSmrg# normalize program name to check for.
1119b41ff1aSmrgprogram=`echo "$1" | sed '
1129b41ff1aSmrg  s/^gnu-//; t
1139b41ff1aSmrg  s/^gnu//; t
1149b41ff1aSmrg  s/^g//; t'`
1159b41ff1aSmrg
1169b41ff1aSmrg# Now exit if we have it, but it failed.  Also exit now if we
1179b41ff1aSmrg# don't have it and --version was passed (most likely to detect
1189b41ff1aSmrg# the program).  This is about non-GNU programs, so use $1 not
1199b41ff1aSmrg# $program.
1209b41ff1aSmrgcase $1 in
1219b41ff1aSmrg  lex*|yacc*)
1229b41ff1aSmrg    # Not GNU programs, they don't have --version.
1239b41ff1aSmrg    ;;
1249b41ff1aSmrg
1259b41ff1aSmrg  tar*)
1269b41ff1aSmrg    if test -n "$run"; then
1279b41ff1aSmrg       echo 1>&2 "ERROR: \`tar' requires --run"
1289b41ff1aSmrg       exit 1
1299b41ff1aSmrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
1309b41ff1aSmrg       exit 1
1319b41ff1aSmrg    fi
1329b41ff1aSmrg    ;;
1339b41ff1aSmrg
1349b41ff1aSmrg  *)
135fdb3d228Smrg    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
136fdb3d228Smrg       # We have it, but it failed.
137fdb3d228Smrg       exit 1
1389b41ff1aSmrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
1399b41ff1aSmrg       # Could not run --version or --help.  This is probably someone
1409b41ff1aSmrg       # running `$TOOL --version' or `$TOOL --help' to check whether
1419b41ff1aSmrg       # $TOOL exists and not knowing $TOOL uses missing.
1429b41ff1aSmrg       exit 1
143fdb3d228Smrg    fi
1449b41ff1aSmrg    ;;
1459b41ff1aSmrgesac
146fdb3d228Smrg
1479b41ff1aSmrg# If it does not exist, or fails to run (possibly an outdated version),
1489b41ff1aSmrg# try to emulate it.
1499b41ff1aSmrgcase $program in
1509b41ff1aSmrg  aclocal*)
151fdb3d228Smrg    echo 1>&2 "\
1529b41ff1aSmrgWARNING: \`$1' is $msg.  You should only need it if
153fdb3d228Smrg         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
154fdb3d228Smrg         to install the \`Automake' and \`Perl' packages.  Grab them from
155fdb3d228Smrg         any GNU archive site."
156fdb3d228Smrg    touch aclocal.m4
157fdb3d228Smrg    ;;
158fdb3d228Smrg
1599b41ff1aSmrg  autoconf*)
160fdb3d228Smrg    echo 1>&2 "\
1619b41ff1aSmrgWARNING: \`$1' is $msg.  You should only need it if
162fdb3d228Smrg         you modified \`${configure_ac}'.  You might want to install the
163fdb3d228Smrg         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
164fdb3d228Smrg         archive site."
165fdb3d228Smrg    touch configure
166fdb3d228Smrg    ;;
167fdb3d228Smrg
1689b41ff1aSmrg  autoheader*)
169fdb3d228Smrg    echo 1>&2 "\
1709b41ff1aSmrgWARNING: \`$1' is $msg.  You should only need it if
171fdb3d228Smrg         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
172fdb3d228Smrg         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
173fdb3d228Smrg         from any GNU archive site."
174fdb3d228Smrg    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
175fdb3d228Smrg    test -z "$files" && files="config.h"
176fdb3d228Smrg    touch_files=
177fdb3d228Smrg    for f in $files; do
1789b41ff1aSmrg      case $f in
179fdb3d228Smrg      *:*) touch_files="$touch_files "`echo "$f" |
180fdb3d228Smrg				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
181fdb3d228Smrg      *) touch_files="$touch_files $f.in";;
182fdb3d228Smrg      esac
183fdb3d228Smrg    done
184fdb3d228Smrg    touch $touch_files
185fdb3d228Smrg    ;;
186fdb3d228Smrg
187fdb3d228Smrg  automake*)
188fdb3d228Smrg    echo 1>&2 "\
1899b41ff1aSmrgWARNING: \`$1' is $msg.  You should only need it if
190fdb3d228Smrg         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
191fdb3d228Smrg         You might want to install the \`Automake' and \`Perl' packages.
192fdb3d228Smrg         Grab them from any GNU archive site."
193fdb3d228Smrg    find . -type f -name Makefile.am -print |
194fdb3d228Smrg	   sed 's/\.am$/.in/' |
195fdb3d228Smrg	   while read f; do touch "$f"; done
196fdb3d228Smrg    ;;
197fdb3d228Smrg
1989b41ff1aSmrg  autom4te*)
199fdb3d228Smrg    echo 1>&2 "\
2009b41ff1aSmrgWARNING: \`$1' is needed, but is $msg.
2019b41ff1aSmrg         You might have modified some files without having the
202fdb3d228Smrg         proper tools for further handling them.
203fdb3d228Smrg         You can get \`$1' as part of \`Autoconf' from any GNU
204fdb3d228Smrg         archive site."
205fdb3d228Smrg
2069b41ff1aSmrg    file=`echo "$*" | sed -n "$sed_output"`
2079b41ff1aSmrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
208fdb3d228Smrg    if test -f "$file"; then
209fdb3d228Smrg	touch $file
210fdb3d228Smrg    else
211fdb3d228Smrg	test -z "$file" || exec >$file
212fdb3d228Smrg	echo "#! /bin/sh"
213fdb3d228Smrg	echo "# Created by GNU Automake missing as a replacement of"
214fdb3d228Smrg	echo "#  $ $@"
215fdb3d228Smrg	echo "exit 0"
216fdb3d228Smrg	chmod +x $file
217fdb3d228Smrg	exit 1
218fdb3d228Smrg    fi
219fdb3d228Smrg    ;;
220fdb3d228Smrg
2219b41ff1aSmrg  bison*|yacc*)
222fdb3d228Smrg    echo 1>&2 "\
2239b41ff1aSmrgWARNING: \`$1' $msg.  You should only need it if
224fdb3d228Smrg         you modified a \`.y' file.  You may need the \`Bison' package
225fdb3d228Smrg         in order for those modifications to take effect.  You can get
226fdb3d228Smrg         \`Bison' from any GNU archive site."
227fdb3d228Smrg    rm -f y.tab.c y.tab.h
2289b41ff1aSmrg    if test $# -ne 1; then
229fdb3d228Smrg        eval LASTARG="\${$#}"
2309b41ff1aSmrg	case $LASTARG in
231fdb3d228Smrg	*.y)
232fdb3d228Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
2339b41ff1aSmrg	    if test -f "$SRCFILE"; then
234fdb3d228Smrg	         cp "$SRCFILE" y.tab.c
235fdb3d228Smrg	    fi
236fdb3d228Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
2379b41ff1aSmrg	    if test -f "$SRCFILE"; then
238fdb3d228Smrg	         cp "$SRCFILE" y.tab.h
239fdb3d228Smrg	    fi
240fdb3d228Smrg	  ;;
241fdb3d228Smrg	esac
242fdb3d228Smrg    fi
2439b41ff1aSmrg    if test ! -f y.tab.h; then
244fdb3d228Smrg	echo >y.tab.h
245fdb3d228Smrg    fi
2469b41ff1aSmrg    if test ! -f y.tab.c; then
247fdb3d228Smrg	echo 'main() { return 0; }' >y.tab.c
248fdb3d228Smrg    fi
249fdb3d228Smrg    ;;
250fdb3d228Smrg
2519b41ff1aSmrg  lex*|flex*)
252fdb3d228Smrg    echo 1>&2 "\
2539b41ff1aSmrgWARNING: \`$1' is $msg.  You should only need it if
254fdb3d228Smrg         you modified a \`.l' file.  You may need the \`Flex' package
255fdb3d228Smrg         in order for those modifications to take effect.  You can get
256fdb3d228Smrg         \`Flex' from any GNU archive site."
257fdb3d228Smrg    rm -f lex.yy.c
2589b41ff1aSmrg    if test $# -ne 1; then
259fdb3d228Smrg        eval LASTARG="\${$#}"
2609b41ff1aSmrg	case $LASTARG in
261fdb3d228Smrg	*.l)
262fdb3d228Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
2639b41ff1aSmrg	    if test -f "$SRCFILE"; then
264fdb3d228Smrg	         cp "$SRCFILE" lex.yy.c
265fdb3d228Smrg	    fi
266fdb3d228Smrg	  ;;
267fdb3d228Smrg	esac
268fdb3d228Smrg    fi
2699b41ff1aSmrg    if test ! -f lex.yy.c; then
270fdb3d228Smrg	echo 'main() { return 0; }' >lex.yy.c
271fdb3d228Smrg    fi
272fdb3d228Smrg    ;;
273fdb3d228Smrg
2749b41ff1aSmrg  help2man*)
275fdb3d228Smrg    echo 1>&2 "\
2769b41ff1aSmrgWARNING: \`$1' is $msg.  You should only need it if
277fdb3d228Smrg	 you modified a dependency of a manual page.  You may need the
278fdb3d228Smrg	 \`Help2man' package in order for those modifications to take
279fdb3d228Smrg	 effect.  You can get \`Help2man' from any GNU archive site."
280fdb3d228Smrg
2819b41ff1aSmrg    file=`echo "$*" | sed -n "$sed_output"`
2829b41ff1aSmrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
2839b41ff1aSmrg    if test -f "$file"; then
284fdb3d228Smrg	touch $file
285fdb3d228Smrg    else
286fdb3d228Smrg	test -z "$file" || exec >$file
287fdb3d228Smrg	echo ".ab help2man is required to generate this page"
2889b41ff1aSmrg	exit $?
289fdb3d228Smrg    fi
290fdb3d228Smrg    ;;
291fdb3d228Smrg
2929b41ff1aSmrg  makeinfo*)
293fdb3d228Smrg    echo 1>&2 "\
2949b41ff1aSmrgWARNING: \`$1' is $msg.  You should only need it if
295fdb3d228Smrg         you modified a \`.texi' or \`.texinfo' file, or any other file
296fdb3d228Smrg         indirectly affecting the aspect of the manual.  The spurious
297fdb3d228Smrg         call might also be the consequence of using a buggy \`make' (AIX,
298fdb3d228Smrg         DU, IRIX).  You might want to install the \`Texinfo' package or
299fdb3d228Smrg         the \`GNU make' package.  Grab either from any GNU archive site."
3009b41ff1aSmrg    # The file to touch is that specified with -o ...
3019b41ff1aSmrg    file=`echo "$*" | sed -n "$sed_output"`
3029b41ff1aSmrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
303fdb3d228Smrg    if test -z "$file"; then
3049b41ff1aSmrg      # ... or it is the one specified with @setfilename ...
3059b41ff1aSmrg      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
3069b41ff1aSmrg      file=`sed -n '
3079b41ff1aSmrg	/^@setfilename/{
3089b41ff1aSmrg	  s/.* \([^ ]*\) *$/\1/
3099b41ff1aSmrg	  p
3109b41ff1aSmrg	  q
3119b41ff1aSmrg	}' $infile`
3129b41ff1aSmrg      # ... or it is derived from the source name (dir/f.texi becomes f.info)
3139b41ff1aSmrg      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
314fdb3d228Smrg    fi
3159b41ff1aSmrg    # If the file does not exist, the user really needs makeinfo;
3169b41ff1aSmrg    # let's fail without touching anything.
3179b41ff1aSmrg    test -f $file || exit 1
318fdb3d228Smrg    touch $file
319fdb3d228Smrg    ;;
320fdb3d228Smrg
3219b41ff1aSmrg  tar*)
322fdb3d228Smrg    shift
323fdb3d228Smrg
324fdb3d228Smrg    # We have already tried tar in the generic part.
325fdb3d228Smrg    # Look for gnutar/gtar before invocation to avoid ugly error
326fdb3d228Smrg    # messages.
327fdb3d228Smrg    if (gnutar --version > /dev/null 2>&1); then
328fdb3d228Smrg       gnutar "$@" && exit 0
329fdb3d228Smrg    fi
330fdb3d228Smrg    if (gtar --version > /dev/null 2>&1); then
331fdb3d228Smrg       gtar "$@" && exit 0
332fdb3d228Smrg    fi
333fdb3d228Smrg    firstarg="$1"
334fdb3d228Smrg    if shift; then
3359b41ff1aSmrg	case $firstarg in
336fdb3d228Smrg	*o*)
337fdb3d228Smrg	    firstarg=`echo "$firstarg" | sed s/o//`
338fdb3d228Smrg	    tar "$firstarg" "$@" && exit 0
339fdb3d228Smrg	    ;;
340fdb3d228Smrg	esac
3419b41ff1aSmrg	case $firstarg in
342fdb3d228Smrg	*h*)
343fdb3d228Smrg	    firstarg=`echo "$firstarg" | sed s/h//`
344fdb3d228Smrg	    tar "$firstarg" "$@" && exit 0
345fdb3d228Smrg	    ;;
346fdb3d228Smrg	esac
347fdb3d228Smrg    fi
348fdb3d228Smrg
349fdb3d228Smrg    echo 1>&2 "\
350fdb3d228SmrgWARNING: I can't seem to be able to run \`tar' with the given arguments.
351fdb3d228Smrg         You may want to install GNU tar or Free paxutils, or check the
352fdb3d228Smrg         command line arguments."
353fdb3d228Smrg    exit 1
354fdb3d228Smrg    ;;
355fdb3d228Smrg
356fdb3d228Smrg  *)
357fdb3d228Smrg    echo 1>&2 "\
3589b41ff1aSmrgWARNING: \`$1' is needed, and is $msg.
3599b41ff1aSmrg         You might have modified some files without having the
360fdb3d228Smrg         proper tools for further handling them.  Check the \`README' file,
361fdb3d228Smrg         it often tells you about the needed prerequisites for installing
362fdb3d228Smrg         this package.  You may also peek at any GNU archive site, in case
363fdb3d228Smrg         some other package would contain this missing \`$1' program."
364fdb3d228Smrg    exit 1
365fdb3d228Smrg    ;;
366fdb3d228Smrgesac
367fdb3d228Smrg
368fdb3d228Smrgexit 0
3699b41ff1aSmrg
3709b41ff1aSmrg# Local variables:
3719b41ff1aSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
3729b41ff1aSmrg# time-stamp-start: "scriptversion="
3739b41ff1aSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
3749b41ff1aSmrg# time-stamp-time-zone: "UTC"
3759b41ff1aSmrg# time-stamp-end: "; # UTC"
3769b41ff1aSmrg# End:
377