missing revision d7accfef
197e8a2e8Smrg#! /bin/sh
297e8a2e8Smrg# Common stub for a few missing GNU programs while installing.
3d7accfefSmrg
4d7accfefSmrgscriptversion=2009-04-28.21; # UTC
5d7accfefSmrg
6d7accfefSmrg# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
7d7accfefSmrg# 2008, 2009 Free Software Foundation, Inc.
897e8a2e8Smrg# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
997e8a2e8Smrg
1097e8a2e8Smrg# This program is free software; you can redistribute it and/or modify
1197e8a2e8Smrg# it under the terms of the GNU General Public License as published by
1297e8a2e8Smrg# the Free Software Foundation; either version 2, or (at your option)
1397e8a2e8Smrg# any later version.
1497e8a2e8Smrg
1597e8a2e8Smrg# This program is distributed in the hope that it will be useful,
1697e8a2e8Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
1797e8a2e8Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1897e8a2e8Smrg# GNU General Public License for more details.
1997e8a2e8Smrg
2097e8a2e8Smrg# You should have received a copy of the GNU General Public License
21d7accfefSmrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
2297e8a2e8Smrg
2397e8a2e8Smrg# As a special exception to the GNU General Public License, if you
2497e8a2e8Smrg# distribute this file as part of a program that contains a
2597e8a2e8Smrg# configuration script generated by Autoconf, you may include it under
2697e8a2e8Smrg# the same distribution terms that you use for the rest of that program.
2797e8a2e8Smrg
2897e8a2e8Smrgif test $# -eq 0; then
2997e8a2e8Smrg  echo 1>&2 "Try \`$0 --help' for more information"
3097e8a2e8Smrg  exit 1
3197e8a2e8Smrgfi
3297e8a2e8Smrg
3397e8a2e8Smrgrun=:
34d7accfefSmrgsed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
35d7accfefSmrgsed_minuso='s/.* -o \([^ ]*\).*/\1/p'
3697e8a2e8Smrg
3797e8a2e8Smrg# In the cases where this matters, `missing' is being run in the
3897e8a2e8Smrg# srcdir already.
3997e8a2e8Smrgif test -f configure.ac; then
4097e8a2e8Smrg  configure_ac=configure.ac
4197e8a2e8Smrgelse
4297e8a2e8Smrg  configure_ac=configure.in
4397e8a2e8Smrgfi
4497e8a2e8Smrg
45d7accfefSmrgmsg="missing on your system"
46d7accfefSmrg
47d7accfefSmrgcase $1 in
4897e8a2e8Smrg--run)
4997e8a2e8Smrg  # Try to run requested program, and just exit if it succeeds.
5097e8a2e8Smrg  run=
5197e8a2e8Smrg  shift
5297e8a2e8Smrg  "$@" && exit 0
53d7accfefSmrg  # Exit code 63 means version mismatch.  This often happens
54d7accfefSmrg  # when the user try to use an ancient version of a tool on
55d7accfefSmrg  # a file that requires a minimum version.  In this case we
56d7accfefSmrg  # we should proceed has if the program had been absent, or
57d7accfefSmrg  # if --run hadn't been passed.
58d7accfefSmrg  if test $? = 63; then
59d7accfefSmrg    run=:
60d7accfefSmrg    msg="probably too old"
61d7accfefSmrg  fi
6297e8a2e8Smrg  ;;
6397e8a2e8Smrg
6497e8a2e8Smrg  -h|--h|--he|--hel|--help)
6597e8a2e8Smrg    echo "\
6697e8a2e8Smrg$0 [OPTION]... PROGRAM [ARGUMENT]...
6797e8a2e8Smrg
6897e8a2e8SmrgHandle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
6997e8a2e8Smrgerror status if there is no known handling for PROGRAM.
7097e8a2e8Smrg
7197e8a2e8SmrgOptions:
7297e8a2e8Smrg  -h, --help      display this help and exit
7397e8a2e8Smrg  -v, --version   output version information and exit
7497e8a2e8Smrg  --run           try to run the given command, and emulate it if it fails
7597e8a2e8Smrg
7697e8a2e8SmrgSupported PROGRAM values:
7797e8a2e8Smrg  aclocal      touch file \`aclocal.m4'
7897e8a2e8Smrg  autoconf     touch file \`configure'
7997e8a2e8Smrg  autoheader   touch file \`config.h.in'
80d7accfefSmrg  autom4te     touch the output file, or create a stub one
8197e8a2e8Smrg  automake     touch all \`Makefile.in' files
8297e8a2e8Smrg  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
8397e8a2e8Smrg  flex         create \`lex.yy.c', if possible, from existing .c
8497e8a2e8Smrg  help2man     touch the output file
8597e8a2e8Smrg  lex          create \`lex.yy.c', if possible, from existing .c
8697e8a2e8Smrg  makeinfo     touch the output file
8797e8a2e8Smrg  tar          try tar, gnutar, gtar, then tar without non-portable flags
88d7accfefSmrg  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
89d7accfefSmrg
90d7accfefSmrgVersion suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
91d7accfefSmrg\`g' are ignored when checking the name.
92d7accfefSmrg
93d7accfefSmrgSend bug reports to <bug-automake@gnu.org>."
94d7accfefSmrg    exit $?
9597e8a2e8Smrg    ;;
9697e8a2e8Smrg
9797e8a2e8Smrg  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
98d7accfefSmrg    echo "missing $scriptversion (GNU Automake)"
99d7accfefSmrg    exit $?
10097e8a2e8Smrg    ;;
10197e8a2e8Smrg
10297e8a2e8Smrg  -*)
10397e8a2e8Smrg    echo 1>&2 "$0: Unknown \`$1' option"
10497e8a2e8Smrg    echo 1>&2 "Try \`$0 --help' for more information"
10597e8a2e8Smrg    exit 1
10697e8a2e8Smrg    ;;
10797e8a2e8Smrg
108d7accfefSmrgesac
109d7accfefSmrg
110d7accfefSmrg# normalize program name to check for.
111d7accfefSmrgprogram=`echo "$1" | sed '
112d7accfefSmrg  s/^gnu-//; t
113d7accfefSmrg  s/^gnu//; t
114d7accfefSmrg  s/^g//; t'`
115d7accfefSmrg
116d7accfefSmrg# Now exit if we have it, but it failed.  Also exit now if we
117d7accfefSmrg# don't have it and --version was passed (most likely to detect
118d7accfefSmrg# the program).  This is about non-GNU programs, so use $1 not
119d7accfefSmrg# $program.
120d7accfefSmrgcase $1 in
121d7accfefSmrg  lex*|yacc*)
122d7accfefSmrg    # Not GNU programs, they don't have --version.
123d7accfefSmrg    ;;
124d7accfefSmrg
125d7accfefSmrg  tar*)
126d7accfefSmrg    if test -n "$run"; then
127d7accfefSmrg       echo 1>&2 "ERROR: \`tar' requires --run"
128d7accfefSmrg       exit 1
129d7accfefSmrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
130d7accfefSmrg       exit 1
131d7accfefSmrg    fi
132d7accfefSmrg    ;;
133d7accfefSmrg
134d7accfefSmrg  *)
13597e8a2e8Smrg    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
13697e8a2e8Smrg       # We have it, but it failed.
13797e8a2e8Smrg       exit 1
138d7accfefSmrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
139d7accfefSmrg       # Could not run --version or --help.  This is probably someone
140d7accfefSmrg       # running `$TOOL --version' or `$TOOL --help' to check whether
141d7accfefSmrg       # $TOOL exists and not knowing $TOOL uses missing.
142d7accfefSmrg       exit 1
14397e8a2e8Smrg    fi
144d7accfefSmrg    ;;
145d7accfefSmrgesac
14697e8a2e8Smrg
147d7accfefSmrg# If it does not exist, or fails to run (possibly an outdated version),
148d7accfefSmrg# try to emulate it.
149d7accfefSmrgcase $program in
150d7accfefSmrg  aclocal*)
15197e8a2e8Smrg    echo 1>&2 "\
152d7accfefSmrgWARNING: \`$1' is $msg.  You should only need it if
15397e8a2e8Smrg         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
15497e8a2e8Smrg         to install the \`Automake' and \`Perl' packages.  Grab them from
15597e8a2e8Smrg         any GNU archive site."
15697e8a2e8Smrg    touch aclocal.m4
15797e8a2e8Smrg    ;;
15897e8a2e8Smrg
159d7accfefSmrg  autoconf*)
16097e8a2e8Smrg    echo 1>&2 "\
161d7accfefSmrgWARNING: \`$1' is $msg.  You should only need it if
16297e8a2e8Smrg         you modified \`${configure_ac}'.  You might want to install the
16397e8a2e8Smrg         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
16497e8a2e8Smrg         archive site."
16597e8a2e8Smrg    touch configure
16697e8a2e8Smrg    ;;
16797e8a2e8Smrg
168d7accfefSmrg  autoheader*)
16997e8a2e8Smrg    echo 1>&2 "\
170d7accfefSmrgWARNING: \`$1' is $msg.  You should only need it if
17197e8a2e8Smrg         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
17297e8a2e8Smrg         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
17397e8a2e8Smrg         from any GNU archive site."
17497e8a2e8Smrg    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
17597e8a2e8Smrg    test -z "$files" && files="config.h"
17697e8a2e8Smrg    touch_files=
17797e8a2e8Smrg    for f in $files; do
178d7accfefSmrg      case $f in
17997e8a2e8Smrg      *:*) touch_files="$touch_files "`echo "$f" |
18097e8a2e8Smrg				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
18197e8a2e8Smrg      *) touch_files="$touch_files $f.in";;
18297e8a2e8Smrg      esac
18397e8a2e8Smrg    done
18497e8a2e8Smrg    touch $touch_files
18597e8a2e8Smrg    ;;
18697e8a2e8Smrg
18797e8a2e8Smrg  automake*)
18897e8a2e8Smrg    echo 1>&2 "\
189d7accfefSmrgWARNING: \`$1' is $msg.  You should only need it if
19097e8a2e8Smrg         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
19197e8a2e8Smrg         You might want to install the \`Automake' and \`Perl' packages.
19297e8a2e8Smrg         Grab them from any GNU archive site."
19397e8a2e8Smrg    find . -type f -name Makefile.am -print |
19497e8a2e8Smrg	   sed 's/\.am$/.in/' |
19597e8a2e8Smrg	   while read f; do touch "$f"; done
19697e8a2e8Smrg    ;;
19797e8a2e8Smrg
198d7accfefSmrg  autom4te*)
19997e8a2e8Smrg    echo 1>&2 "\
200d7accfefSmrgWARNING: \`$1' is needed, but is $msg.
201d7accfefSmrg         You might have modified some files without having the
20297e8a2e8Smrg         proper tools for further handling them.
20397e8a2e8Smrg         You can get \`$1' as part of \`Autoconf' from any GNU
20497e8a2e8Smrg         archive site."
20597e8a2e8Smrg
206d7accfefSmrg    file=`echo "$*" | sed -n "$sed_output"`
207d7accfefSmrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
20897e8a2e8Smrg    if test -f "$file"; then
20997e8a2e8Smrg	touch $file
21097e8a2e8Smrg    else
21197e8a2e8Smrg	test -z "$file" || exec >$file
21297e8a2e8Smrg	echo "#! /bin/sh"
21397e8a2e8Smrg	echo "# Created by GNU Automake missing as a replacement of"
21497e8a2e8Smrg	echo "#  $ $@"
21597e8a2e8Smrg	echo "exit 0"
21697e8a2e8Smrg	chmod +x $file
21797e8a2e8Smrg	exit 1
21897e8a2e8Smrg    fi
21997e8a2e8Smrg    ;;
22097e8a2e8Smrg
221d7accfefSmrg  bison*|yacc*)
22297e8a2e8Smrg    echo 1>&2 "\
223d7accfefSmrgWARNING: \`$1' $msg.  You should only need it if
22497e8a2e8Smrg         you modified a \`.y' file.  You may need the \`Bison' package
22597e8a2e8Smrg         in order for those modifications to take effect.  You can get
22697e8a2e8Smrg         \`Bison' from any GNU archive site."
22797e8a2e8Smrg    rm -f y.tab.c y.tab.h
228d7accfefSmrg    if test $# -ne 1; then
22997e8a2e8Smrg        eval LASTARG="\${$#}"
230d7accfefSmrg	case $LASTARG in
23197e8a2e8Smrg	*.y)
23297e8a2e8Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
233d7accfefSmrg	    if test -f "$SRCFILE"; then
23497e8a2e8Smrg	         cp "$SRCFILE" y.tab.c
23597e8a2e8Smrg	    fi
23697e8a2e8Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
237d7accfefSmrg	    if test -f "$SRCFILE"; then
23897e8a2e8Smrg	         cp "$SRCFILE" y.tab.h
23997e8a2e8Smrg	    fi
24097e8a2e8Smrg	  ;;
24197e8a2e8Smrg	esac
24297e8a2e8Smrg    fi
243d7accfefSmrg    if test ! -f y.tab.h; then
24497e8a2e8Smrg	echo >y.tab.h
24597e8a2e8Smrg    fi
246d7accfefSmrg    if test ! -f y.tab.c; then
24797e8a2e8Smrg	echo 'main() { return 0; }' >y.tab.c
24897e8a2e8Smrg    fi
24997e8a2e8Smrg    ;;
25097e8a2e8Smrg
251d7accfefSmrg  lex*|flex*)
25297e8a2e8Smrg    echo 1>&2 "\
253d7accfefSmrgWARNING: \`$1' is $msg.  You should only need it if
25497e8a2e8Smrg         you modified a \`.l' file.  You may need the \`Flex' package
25597e8a2e8Smrg         in order for those modifications to take effect.  You can get
25697e8a2e8Smrg         \`Flex' from any GNU archive site."
25797e8a2e8Smrg    rm -f lex.yy.c
258d7accfefSmrg    if test $# -ne 1; then
25997e8a2e8Smrg        eval LASTARG="\${$#}"
260d7accfefSmrg	case $LASTARG in
26197e8a2e8Smrg	*.l)
26297e8a2e8Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
263d7accfefSmrg	    if test -f "$SRCFILE"; then
26497e8a2e8Smrg	         cp "$SRCFILE" lex.yy.c
26597e8a2e8Smrg	    fi
26697e8a2e8Smrg	  ;;
26797e8a2e8Smrg	esac
26897e8a2e8Smrg    fi
269d7accfefSmrg    if test ! -f lex.yy.c; then
27097e8a2e8Smrg	echo 'main() { return 0; }' >lex.yy.c
27197e8a2e8Smrg    fi
27297e8a2e8Smrg    ;;
27397e8a2e8Smrg
274d7accfefSmrg  help2man*)
27597e8a2e8Smrg    echo 1>&2 "\
276d7accfefSmrgWARNING: \`$1' is $msg.  You should only need it if
27797e8a2e8Smrg	 you modified a dependency of a manual page.  You may need the
27897e8a2e8Smrg	 \`Help2man' package in order for those modifications to take
27997e8a2e8Smrg	 effect.  You can get \`Help2man' from any GNU archive site."
28097e8a2e8Smrg
281d7accfefSmrg    file=`echo "$*" | sed -n "$sed_output"`
282d7accfefSmrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
283d7accfefSmrg    if test -f "$file"; then
28497e8a2e8Smrg	touch $file
28597e8a2e8Smrg    else
28697e8a2e8Smrg	test -z "$file" || exec >$file
28797e8a2e8Smrg	echo ".ab help2man is required to generate this page"
288d7accfefSmrg	exit $?
28997e8a2e8Smrg    fi
29097e8a2e8Smrg    ;;
29197e8a2e8Smrg
292d7accfefSmrg  makeinfo*)
29397e8a2e8Smrg    echo 1>&2 "\
294d7accfefSmrgWARNING: \`$1' is $msg.  You should only need it if
29597e8a2e8Smrg         you modified a \`.texi' or \`.texinfo' file, or any other file
29697e8a2e8Smrg         indirectly affecting the aspect of the manual.  The spurious
29797e8a2e8Smrg         call might also be the consequence of using a buggy \`make' (AIX,
29897e8a2e8Smrg         DU, IRIX).  You might want to install the \`Texinfo' package or
29997e8a2e8Smrg         the \`GNU make' package.  Grab either from any GNU archive site."
300d7accfefSmrg    # The file to touch is that specified with -o ...
301d7accfefSmrg    file=`echo "$*" | sed -n "$sed_output"`
302d7accfefSmrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
30397e8a2e8Smrg    if test -z "$file"; then
304d7accfefSmrg      # ... or it is the one specified with @setfilename ...
305d7accfefSmrg      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
306d7accfefSmrg      file=`sed -n '
307d7accfefSmrg	/^@setfilename/{
308d7accfefSmrg	  s/.* \([^ ]*\) *$/\1/
309d7accfefSmrg	  p
310d7accfefSmrg	  q
311d7accfefSmrg	}' $infile`
312d7accfefSmrg      # ... or it is derived from the source name (dir/f.texi becomes f.info)
313d7accfefSmrg      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
31497e8a2e8Smrg    fi
315d7accfefSmrg    # If the file does not exist, the user really needs makeinfo;
316d7accfefSmrg    # let's fail without touching anything.
317d7accfefSmrg    test -f $file || exit 1
31897e8a2e8Smrg    touch $file
31997e8a2e8Smrg    ;;
32097e8a2e8Smrg
321d7accfefSmrg  tar*)
32297e8a2e8Smrg    shift
32397e8a2e8Smrg
32497e8a2e8Smrg    # We have already tried tar in the generic part.
32597e8a2e8Smrg    # Look for gnutar/gtar before invocation to avoid ugly error
32697e8a2e8Smrg    # messages.
32797e8a2e8Smrg    if (gnutar --version > /dev/null 2>&1); then
32897e8a2e8Smrg       gnutar "$@" && exit 0
32997e8a2e8Smrg    fi
33097e8a2e8Smrg    if (gtar --version > /dev/null 2>&1); then
33197e8a2e8Smrg       gtar "$@" && exit 0
33297e8a2e8Smrg    fi
33397e8a2e8Smrg    firstarg="$1"
33497e8a2e8Smrg    if shift; then
335d7accfefSmrg	case $firstarg in
33697e8a2e8Smrg	*o*)
33797e8a2e8Smrg	    firstarg=`echo "$firstarg" | sed s/o//`
33897e8a2e8Smrg	    tar "$firstarg" "$@" && exit 0
33997e8a2e8Smrg	    ;;
34097e8a2e8Smrg	esac
341d7accfefSmrg	case $firstarg in
34297e8a2e8Smrg	*h*)
34397e8a2e8Smrg	    firstarg=`echo "$firstarg" | sed s/h//`
34497e8a2e8Smrg	    tar "$firstarg" "$@" && exit 0
34597e8a2e8Smrg	    ;;
34697e8a2e8Smrg	esac
34797e8a2e8Smrg    fi
34897e8a2e8Smrg
34997e8a2e8Smrg    echo 1>&2 "\
35097e8a2e8SmrgWARNING: I can't seem to be able to run \`tar' with the given arguments.
35197e8a2e8Smrg         You may want to install GNU tar or Free paxutils, or check the
35297e8a2e8Smrg         command line arguments."
35397e8a2e8Smrg    exit 1
35497e8a2e8Smrg    ;;
35597e8a2e8Smrg
35697e8a2e8Smrg  *)
35797e8a2e8Smrg    echo 1>&2 "\
358d7accfefSmrgWARNING: \`$1' is needed, and is $msg.
359d7accfefSmrg         You might have modified some files without having the
36097e8a2e8Smrg         proper tools for further handling them.  Check the \`README' file,
36197e8a2e8Smrg         it often tells you about the needed prerequisites for installing
36297e8a2e8Smrg         this package.  You may also peek at any GNU archive site, in case
36397e8a2e8Smrg         some other package would contain this missing \`$1' program."
36497e8a2e8Smrg    exit 1
36597e8a2e8Smrg    ;;
36697e8a2e8Smrgesac
36797e8a2e8Smrg
36897e8a2e8Smrgexit 0
369d7accfefSmrg
370d7accfefSmrg# Local variables:
371d7accfefSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
372d7accfefSmrg# time-stamp-start: "scriptversion="
373d7accfefSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
374d7accfefSmrg# time-stamp-time-zone: "UTC"
375d7accfefSmrg# time-stamp-end: "; # UTC"
376d7accfefSmrg# End:
377