missing revision 0eb10989
10eb10989Smrg#! /bin/sh
20eb10989Smrg# Common stub for a few missing GNU programs while installing.
30eb10989Smrg
40eb10989Smrgscriptversion=2005-06-08.21
50eb10989Smrg
60eb10989Smrg# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
70eb10989Smrg#   Free Software Foundation, Inc.
80eb10989Smrg# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
90eb10989Smrg
100eb10989Smrg# This program is free software; you can redistribute it and/or modify
110eb10989Smrg# it under the terms of the GNU General Public License as published by
120eb10989Smrg# the Free Software Foundation; either version 2, or (at your option)
130eb10989Smrg# any later version.
140eb10989Smrg
150eb10989Smrg# This program is distributed in the hope that it will be useful,
160eb10989Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
170eb10989Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
180eb10989Smrg# GNU General Public License for more details.
190eb10989Smrg
200eb10989Smrg# You should have received a copy of the GNU General Public License
210eb10989Smrg# along with this program; if not, write to the Free Software
220eb10989Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
230eb10989Smrg# 02110-1301, USA.
240eb10989Smrg
250eb10989Smrg# As a special exception to the GNU General Public License, if you
260eb10989Smrg# distribute this file as part of a program that contains a
270eb10989Smrg# configuration script generated by Autoconf, you may include it under
280eb10989Smrg# the same distribution terms that you use for the rest of that program.
290eb10989Smrg
300eb10989Smrgif test $# -eq 0; then
310eb10989Smrg  echo 1>&2 "Try \`$0 --help' for more information"
320eb10989Smrg  exit 1
330eb10989Smrgfi
340eb10989Smrg
350eb10989Smrgrun=:
360eb10989Smrg
370eb10989Smrg# In the cases where this matters, `missing' is being run in the
380eb10989Smrg# srcdir already.
390eb10989Smrgif test -f configure.ac; then
400eb10989Smrg  configure_ac=configure.ac
410eb10989Smrgelse
420eb10989Smrg  configure_ac=configure.in
430eb10989Smrgfi
440eb10989Smrg
450eb10989Smrgmsg="missing on your system"
460eb10989Smrg
470eb10989Smrgcase "$1" in
480eb10989Smrg--run)
490eb10989Smrg  # Try to run requested program, and just exit if it succeeds.
500eb10989Smrg  run=
510eb10989Smrg  shift
520eb10989Smrg  "$@" && exit 0
530eb10989Smrg  # Exit code 63 means version mismatch.  This often happens
540eb10989Smrg  # when the user try to use an ancient version of a tool on
550eb10989Smrg  # a file that requires a minimum version.  In this case we
560eb10989Smrg  # we should proceed has if the program had been absent, or
570eb10989Smrg  # if --run hadn't been passed.
580eb10989Smrg  if test $? = 63; then
590eb10989Smrg    run=:
600eb10989Smrg    msg="probably too old"
610eb10989Smrg  fi
620eb10989Smrg  ;;
630eb10989Smrg
640eb10989Smrg  -h|--h|--he|--hel|--help)
650eb10989Smrg    echo "\
660eb10989Smrg$0 [OPTION]... PROGRAM [ARGUMENT]...
670eb10989Smrg
680eb10989SmrgHandle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
690eb10989Smrgerror status if there is no known handling for PROGRAM.
700eb10989Smrg
710eb10989SmrgOptions:
720eb10989Smrg  -h, --help      display this help and exit
730eb10989Smrg  -v, --version   output version information and exit
740eb10989Smrg  --run           try to run the given command, and emulate it if it fails
750eb10989Smrg
760eb10989SmrgSupported PROGRAM values:
770eb10989Smrg  aclocal      touch file \`aclocal.m4'
780eb10989Smrg  autoconf     touch file \`configure'
790eb10989Smrg  autoheader   touch file \`config.h.in'
800eb10989Smrg  automake     touch all \`Makefile.in' files
810eb10989Smrg  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
820eb10989Smrg  flex         create \`lex.yy.c', if possible, from existing .c
830eb10989Smrg  help2man     touch the output file
840eb10989Smrg  lex          create \`lex.yy.c', if possible, from existing .c
850eb10989Smrg  makeinfo     touch the output file
860eb10989Smrg  tar          try tar, gnutar, gtar, then tar without non-portable flags
870eb10989Smrg  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
880eb10989Smrg
890eb10989SmrgSend bug reports to <bug-automake@gnu.org>."
900eb10989Smrg    exit $?
910eb10989Smrg    ;;
920eb10989Smrg
930eb10989Smrg  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
940eb10989Smrg    echo "missing $scriptversion (GNU Automake)"
950eb10989Smrg    exit $?
960eb10989Smrg    ;;
970eb10989Smrg
980eb10989Smrg  -*)
990eb10989Smrg    echo 1>&2 "$0: Unknown \`$1' option"
1000eb10989Smrg    echo 1>&2 "Try \`$0 --help' for more information"
1010eb10989Smrg    exit 1
1020eb10989Smrg    ;;
1030eb10989Smrg
1040eb10989Smrgesac
1050eb10989Smrg
1060eb10989Smrg# Now exit if we have it, but it failed.  Also exit now if we
1070eb10989Smrg# don't have it and --version was passed (most likely to detect
1080eb10989Smrg# the program).
1090eb10989Smrgcase "$1" in
1100eb10989Smrg  lex|yacc)
1110eb10989Smrg    # Not GNU programs, they don't have --version.
1120eb10989Smrg    ;;
1130eb10989Smrg
1140eb10989Smrg  tar)
1150eb10989Smrg    if test -n "$run"; then
1160eb10989Smrg       echo 1>&2 "ERROR: \`tar' requires --run"
1170eb10989Smrg       exit 1
1180eb10989Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
1190eb10989Smrg       exit 1
1200eb10989Smrg    fi
1210eb10989Smrg    ;;
1220eb10989Smrg
1230eb10989Smrg  *)
1240eb10989Smrg    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
1250eb10989Smrg       # We have it, but it failed.
1260eb10989Smrg       exit 1
1270eb10989Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
1280eb10989Smrg       # Could not run --version or --help.  This is probably someone
1290eb10989Smrg       # running `$TOOL --version' or `$TOOL --help' to check whether
1300eb10989Smrg       # $TOOL exists and not knowing $TOOL uses missing.
1310eb10989Smrg       exit 1
1320eb10989Smrg    fi
1330eb10989Smrg    ;;
1340eb10989Smrgesac
1350eb10989Smrg
1360eb10989Smrg# If it does not exist, or fails to run (possibly an outdated version),
1370eb10989Smrg# try to emulate it.
1380eb10989Smrgcase "$1" in
1390eb10989Smrg  aclocal*)
1400eb10989Smrg    echo 1>&2 "\
1410eb10989SmrgWARNING: \`$1' is $msg.  You should only need it if
1420eb10989Smrg         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
1430eb10989Smrg         to install the \`Automake' and \`Perl' packages.  Grab them from
1440eb10989Smrg         any GNU archive site."
1450eb10989Smrg    touch aclocal.m4
1460eb10989Smrg    ;;
1470eb10989Smrg
1480eb10989Smrg  autoconf)
1490eb10989Smrg    echo 1>&2 "\
1500eb10989SmrgWARNING: \`$1' is $msg.  You should only need it if
1510eb10989Smrg         you modified \`${configure_ac}'.  You might want to install the
1520eb10989Smrg         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
1530eb10989Smrg         archive site."
1540eb10989Smrg    touch configure
1550eb10989Smrg    ;;
1560eb10989Smrg
1570eb10989Smrg  autoheader)
1580eb10989Smrg    echo 1>&2 "\
1590eb10989SmrgWARNING: \`$1' is $msg.  You should only need it if
1600eb10989Smrg         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
1610eb10989Smrg         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
1620eb10989Smrg         from any GNU archive site."
1630eb10989Smrg    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
1640eb10989Smrg    test -z "$files" && files="config.h"
1650eb10989Smrg    touch_files=
1660eb10989Smrg    for f in $files; do
1670eb10989Smrg      case "$f" in
1680eb10989Smrg      *:*) touch_files="$touch_files "`echo "$f" |
1690eb10989Smrg				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
1700eb10989Smrg      *) touch_files="$touch_files $f.in";;
1710eb10989Smrg      esac
1720eb10989Smrg    done
1730eb10989Smrg    touch $touch_files
1740eb10989Smrg    ;;
1750eb10989Smrg
1760eb10989Smrg  automake*)
1770eb10989Smrg    echo 1>&2 "\
1780eb10989SmrgWARNING: \`$1' is $msg.  You should only need it if
1790eb10989Smrg         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
1800eb10989Smrg         You might want to install the \`Automake' and \`Perl' packages.
1810eb10989Smrg         Grab them from any GNU archive site."
1820eb10989Smrg    find . -type f -name Makefile.am -print |
1830eb10989Smrg	   sed 's/\.am$/.in/' |
1840eb10989Smrg	   while read f; do touch "$f"; done
1850eb10989Smrg    ;;
1860eb10989Smrg
1870eb10989Smrg  autom4te)
1880eb10989Smrg    echo 1>&2 "\
1890eb10989SmrgWARNING: \`$1' is needed, but is $msg.
1900eb10989Smrg         You might have modified some files without having the
1910eb10989Smrg         proper tools for further handling them.
1920eb10989Smrg         You can get \`$1' as part of \`Autoconf' from any GNU
1930eb10989Smrg         archive site."
1940eb10989Smrg
1950eb10989Smrg    file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
1960eb10989Smrg    test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
1970eb10989Smrg    if test -f "$file"; then
1980eb10989Smrg	touch $file
1990eb10989Smrg    else
2000eb10989Smrg	test -z "$file" || exec >$file
2010eb10989Smrg	echo "#! /bin/sh"
2020eb10989Smrg	echo "# Created by GNU Automake missing as a replacement of"
2030eb10989Smrg	echo "#  $ $@"
2040eb10989Smrg	echo "exit 0"
2050eb10989Smrg	chmod +x $file
2060eb10989Smrg	exit 1
2070eb10989Smrg    fi
2080eb10989Smrg    ;;
2090eb10989Smrg
2100eb10989Smrg  bison|yacc)
2110eb10989Smrg    echo 1>&2 "\
2120eb10989SmrgWARNING: \`$1' $msg.  You should only need it if
2130eb10989Smrg         you modified a \`.y' file.  You may need the \`Bison' package
2140eb10989Smrg         in order for those modifications to take effect.  You can get
2150eb10989Smrg         \`Bison' from any GNU archive site."
2160eb10989Smrg    rm -f y.tab.c y.tab.h
2170eb10989Smrg    if [ $# -ne 1 ]; then
2180eb10989Smrg        eval LASTARG="\${$#}"
2190eb10989Smrg	case "$LASTARG" in
2200eb10989Smrg	*.y)
2210eb10989Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
2220eb10989Smrg	    if [ -f "$SRCFILE" ]; then
2230eb10989Smrg	         cp "$SRCFILE" y.tab.c
2240eb10989Smrg	    fi
2250eb10989Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
2260eb10989Smrg	    if [ -f "$SRCFILE" ]; then
2270eb10989Smrg	         cp "$SRCFILE" y.tab.h
2280eb10989Smrg	    fi
2290eb10989Smrg	  ;;
2300eb10989Smrg	esac
2310eb10989Smrg    fi
2320eb10989Smrg    if [ ! -f y.tab.h ]; then
2330eb10989Smrg	echo >y.tab.h
2340eb10989Smrg    fi
2350eb10989Smrg    if [ ! -f y.tab.c ]; then
2360eb10989Smrg	echo 'main() { return 0; }' >y.tab.c
2370eb10989Smrg    fi
2380eb10989Smrg    ;;
2390eb10989Smrg
2400eb10989Smrg  lex|flex)
2410eb10989Smrg    echo 1>&2 "\
2420eb10989SmrgWARNING: \`$1' is $msg.  You should only need it if
2430eb10989Smrg         you modified a \`.l' file.  You may need the \`Flex' package
2440eb10989Smrg         in order for those modifications to take effect.  You can get
2450eb10989Smrg         \`Flex' from any GNU archive site."
2460eb10989Smrg    rm -f lex.yy.c
2470eb10989Smrg    if [ $# -ne 1 ]; then
2480eb10989Smrg        eval LASTARG="\${$#}"
2490eb10989Smrg	case "$LASTARG" in
2500eb10989Smrg	*.l)
2510eb10989Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
2520eb10989Smrg	    if [ -f "$SRCFILE" ]; then
2530eb10989Smrg	         cp "$SRCFILE" lex.yy.c
2540eb10989Smrg	    fi
2550eb10989Smrg	  ;;
2560eb10989Smrg	esac
2570eb10989Smrg    fi
2580eb10989Smrg    if [ ! -f lex.yy.c ]; then
2590eb10989Smrg	echo 'main() { return 0; }' >lex.yy.c
2600eb10989Smrg    fi
2610eb10989Smrg    ;;
2620eb10989Smrg
2630eb10989Smrg  help2man)
2640eb10989Smrg    echo 1>&2 "\
2650eb10989SmrgWARNING: \`$1' is $msg.  You should only need it if
2660eb10989Smrg	 you modified a dependency of a manual page.  You may need the
2670eb10989Smrg	 \`Help2man' package in order for those modifications to take
2680eb10989Smrg	 effect.  You can get \`Help2man' from any GNU archive site."
2690eb10989Smrg
2700eb10989Smrg    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
2710eb10989Smrg    if test -z "$file"; then
2720eb10989Smrg	file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
2730eb10989Smrg    fi
2740eb10989Smrg    if [ -f "$file" ]; then
2750eb10989Smrg	touch $file
2760eb10989Smrg    else
2770eb10989Smrg	test -z "$file" || exec >$file
2780eb10989Smrg	echo ".ab help2man is required to generate this page"
2790eb10989Smrg	exit 1
2800eb10989Smrg    fi
2810eb10989Smrg    ;;
2820eb10989Smrg
2830eb10989Smrg  makeinfo)
2840eb10989Smrg    echo 1>&2 "\
2850eb10989SmrgWARNING: \`$1' is $msg.  You should only need it if
2860eb10989Smrg         you modified a \`.texi' or \`.texinfo' file, or any other file
2870eb10989Smrg         indirectly affecting the aspect of the manual.  The spurious
2880eb10989Smrg         call might also be the consequence of using a buggy \`make' (AIX,
2890eb10989Smrg         DU, IRIX).  You might want to install the \`Texinfo' package or
2900eb10989Smrg         the \`GNU make' package.  Grab either from any GNU archive site."
2910eb10989Smrg    # The file to touch is that specified with -o ...
2920eb10989Smrg    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
2930eb10989Smrg    if test -z "$file"; then
2940eb10989Smrg      # ... or it is the one specified with @setfilename ...
2950eb10989Smrg      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
2960eb10989Smrg      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
2970eb10989Smrg      # ... or it is derived from the source name (dir/f.texi becomes f.info)
2980eb10989Smrg      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
2990eb10989Smrg    fi
3000eb10989Smrg    # If the file does not exist, the user really needs makeinfo;
3010eb10989Smrg    # let's fail without touching anything.
3020eb10989Smrg    test -f $file || exit 1
3030eb10989Smrg    touch $file
3040eb10989Smrg    ;;
3050eb10989Smrg
3060eb10989Smrg  tar)
3070eb10989Smrg    shift
3080eb10989Smrg
3090eb10989Smrg    # We have already tried tar in the generic part.
3100eb10989Smrg    # Look for gnutar/gtar before invocation to avoid ugly error
3110eb10989Smrg    # messages.
3120eb10989Smrg    if (gnutar --version > /dev/null 2>&1); then
3130eb10989Smrg       gnutar "$@" && exit 0
3140eb10989Smrg    fi
3150eb10989Smrg    if (gtar --version > /dev/null 2>&1); then
3160eb10989Smrg       gtar "$@" && exit 0
3170eb10989Smrg    fi
3180eb10989Smrg    firstarg="$1"
3190eb10989Smrg    if shift; then
3200eb10989Smrg	case "$firstarg" in
3210eb10989Smrg	*o*)
3220eb10989Smrg	    firstarg=`echo "$firstarg" | sed s/o//`
3230eb10989Smrg	    tar "$firstarg" "$@" && exit 0
3240eb10989Smrg	    ;;
3250eb10989Smrg	esac
3260eb10989Smrg	case "$firstarg" in
3270eb10989Smrg	*h*)
3280eb10989Smrg	    firstarg=`echo "$firstarg" | sed s/h//`
3290eb10989Smrg	    tar "$firstarg" "$@" && exit 0
3300eb10989Smrg	    ;;
3310eb10989Smrg	esac
3320eb10989Smrg    fi
3330eb10989Smrg
3340eb10989Smrg    echo 1>&2 "\
3350eb10989SmrgWARNING: I can't seem to be able to run \`tar' with the given arguments.
3360eb10989Smrg         You may want to install GNU tar or Free paxutils, or check the
3370eb10989Smrg         command line arguments."
3380eb10989Smrg    exit 1
3390eb10989Smrg    ;;
3400eb10989Smrg
3410eb10989Smrg  *)
3420eb10989Smrg    echo 1>&2 "\
3430eb10989SmrgWARNING: \`$1' is needed, and is $msg.
3440eb10989Smrg         You might have modified some files without having the
3450eb10989Smrg         proper tools for further handling them.  Check the \`README' file,
3460eb10989Smrg         it often tells you about the needed prerequisites for installing
3470eb10989Smrg         this package.  You may also peek at any GNU archive site, in case
3480eb10989Smrg         some other package would contain this missing \`$1' program."
3490eb10989Smrg    exit 1
3500eb10989Smrg    ;;
3510eb10989Smrgesac
3520eb10989Smrg
3530eb10989Smrgexit 0
3540eb10989Smrg
3550eb10989Smrg# Local variables:
3560eb10989Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
3570eb10989Smrg# time-stamp-start: "scriptversion="
3580eb10989Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
3590eb10989Smrg# time-stamp-end: "$"
3600eb10989Smrg# End:
361