missing revision 8ff16396
10bd0e222Smrg#! /bin/sh
20bd0e222Smrg# Common stub for a few missing GNU programs while installing.
38ff16396Smrg
48ff16396Smrgscriptversion=2009-04-28.21; # UTC
58ff16396Smrg
68ff16396Smrg# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
78ff16396Smrg# 2008, 2009 Free Software Foundation, Inc.
80bd0e222Smrg# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
90bd0e222Smrg
100bd0e222Smrg# This program is free software; you can redistribute it and/or modify
110bd0e222Smrg# it under the terms of the GNU General Public License as published by
120bd0e222Smrg# the Free Software Foundation; either version 2, or (at your option)
130bd0e222Smrg# any later version.
140bd0e222Smrg
150bd0e222Smrg# This program is distributed in the hope that it will be useful,
160bd0e222Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
170bd0e222Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
180bd0e222Smrg# GNU General Public License for more details.
190bd0e222Smrg
200bd0e222Smrg# You should have received a copy of the GNU General Public License
218ff16396Smrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
220bd0e222Smrg
230bd0e222Smrg# As a special exception to the GNU General Public License, if you
240bd0e222Smrg# distribute this file as part of a program that contains a
250bd0e222Smrg# configuration script generated by Autoconf, you may include it under
260bd0e222Smrg# the same distribution terms that you use for the rest of that program.
270bd0e222Smrg
280bd0e222Smrgif test $# -eq 0; then
290bd0e222Smrg  echo 1>&2 "Try \`$0 --help' for more information"
300bd0e222Smrg  exit 1
310bd0e222Smrgfi
320bd0e222Smrg
330bd0e222Smrgrun=:
348ff16396Smrgsed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
358ff16396Smrgsed_minuso='s/.* -o \([^ ]*\).*/\1/p'
360bd0e222Smrg
370bd0e222Smrg# In the cases where this matters, `missing' is being run in the
380bd0e222Smrg# srcdir already.
390bd0e222Smrgif test -f configure.ac; then
400bd0e222Smrg  configure_ac=configure.ac
410bd0e222Smrgelse
420bd0e222Smrg  configure_ac=configure.in
430bd0e222Smrgfi
440bd0e222Smrg
458ff16396Smrgmsg="missing on your system"
468ff16396Smrg
478ff16396Smrgcase $1 in
480bd0e222Smrg--run)
490bd0e222Smrg  # Try to run requested program, and just exit if it succeeds.
500bd0e222Smrg  run=
510bd0e222Smrg  shift
520bd0e222Smrg  "$@" && exit 0
538ff16396Smrg  # Exit code 63 means version mismatch.  This often happens
548ff16396Smrg  # when the user try to use an ancient version of a tool on
558ff16396Smrg  # a file that requires a minimum version.  In this case we
568ff16396Smrg  # we should proceed has if the program had been absent, or
578ff16396Smrg  # if --run hadn't been passed.
588ff16396Smrg  if test $? = 63; then
598ff16396Smrg    run=:
608ff16396Smrg    msg="probably too old"
618ff16396Smrg  fi
620bd0e222Smrg  ;;
630bd0e222Smrg
640bd0e222Smrg  -h|--h|--he|--hel|--help)
650bd0e222Smrg    echo "\
660bd0e222Smrg$0 [OPTION]... PROGRAM [ARGUMENT]...
670bd0e222Smrg
680bd0e222SmrgHandle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
690bd0e222Smrgerror status if there is no known handling for PROGRAM.
700bd0e222Smrg
710bd0e222SmrgOptions:
720bd0e222Smrg  -h, --help      display this help and exit
730bd0e222Smrg  -v, --version   output version information and exit
740bd0e222Smrg  --run           try to run the given command, and emulate it if it fails
750bd0e222Smrg
760bd0e222SmrgSupported PROGRAM values:
770bd0e222Smrg  aclocal      touch file \`aclocal.m4'
780bd0e222Smrg  autoconf     touch file \`configure'
790bd0e222Smrg  autoheader   touch file \`config.h.in'
808ff16396Smrg  autom4te     touch the output file, or create a stub one
810bd0e222Smrg  automake     touch all \`Makefile.in' files
820bd0e222Smrg  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
830bd0e222Smrg  flex         create \`lex.yy.c', if possible, from existing .c
840bd0e222Smrg  help2man     touch the output file
850bd0e222Smrg  lex          create \`lex.yy.c', if possible, from existing .c
860bd0e222Smrg  makeinfo     touch the output file
870bd0e222Smrg  tar          try tar, gnutar, gtar, then tar without non-portable flags
888ff16396Smrg  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
898ff16396Smrg
908ff16396SmrgVersion suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
918ff16396Smrg\`g' are ignored when checking the name.
928ff16396Smrg
938ff16396SmrgSend bug reports to <bug-automake@gnu.org>."
948ff16396Smrg    exit $?
950bd0e222Smrg    ;;
960bd0e222Smrg
970bd0e222Smrg  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
988ff16396Smrg    echo "missing $scriptversion (GNU Automake)"
998ff16396Smrg    exit $?
1000bd0e222Smrg    ;;
1010bd0e222Smrg
1020bd0e222Smrg  -*)
1030bd0e222Smrg    echo 1>&2 "$0: Unknown \`$1' option"
1040bd0e222Smrg    echo 1>&2 "Try \`$0 --help' for more information"
1050bd0e222Smrg    exit 1
1060bd0e222Smrg    ;;
1070bd0e222Smrg
1088ff16396Smrgesac
1098ff16396Smrg
1108ff16396Smrg# normalize program name to check for.
1118ff16396Smrgprogram=`echo "$1" | sed '
1128ff16396Smrg  s/^gnu-//; t
1138ff16396Smrg  s/^gnu//; t
1148ff16396Smrg  s/^g//; t'`
1158ff16396Smrg
1168ff16396Smrg# Now exit if we have it, but it failed.  Also exit now if we
1178ff16396Smrg# don't have it and --version was passed (most likely to detect
1188ff16396Smrg# the program).  This is about non-GNU programs, so use $1 not
1198ff16396Smrg# $program.
1208ff16396Smrgcase $1 in
1218ff16396Smrg  lex*|yacc*)
1228ff16396Smrg    # Not GNU programs, they don't have --version.
1238ff16396Smrg    ;;
1248ff16396Smrg
1258ff16396Smrg  tar*)
1268ff16396Smrg    if test -n "$run"; then
1278ff16396Smrg       echo 1>&2 "ERROR: \`tar' requires --run"
1288ff16396Smrg       exit 1
1298ff16396Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
1308ff16396Smrg       exit 1
1318ff16396Smrg    fi
1328ff16396Smrg    ;;
1338ff16396Smrg
1348ff16396Smrg  *)
1350bd0e222Smrg    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
1360bd0e222Smrg       # We have it, but it failed.
1370bd0e222Smrg       exit 1
1388ff16396Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
1398ff16396Smrg       # Could not run --version or --help.  This is probably someone
1408ff16396Smrg       # running `$TOOL --version' or `$TOOL --help' to check whether
1418ff16396Smrg       # $TOOL exists and not knowing $TOOL uses missing.
1428ff16396Smrg       exit 1
1430bd0e222Smrg    fi
1448ff16396Smrg    ;;
1458ff16396Smrgesac
1460bd0e222Smrg
1478ff16396Smrg# If it does not exist, or fails to run (possibly an outdated version),
1488ff16396Smrg# try to emulate it.
1498ff16396Smrgcase $program in
1508ff16396Smrg  aclocal*)
1510bd0e222Smrg    echo 1>&2 "\
1528ff16396SmrgWARNING: \`$1' is $msg.  You should only need it if
1530bd0e222Smrg         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
1540bd0e222Smrg         to install the \`Automake' and \`Perl' packages.  Grab them from
1550bd0e222Smrg         any GNU archive site."
1560bd0e222Smrg    touch aclocal.m4
1570bd0e222Smrg    ;;
1580bd0e222Smrg
1598ff16396Smrg  autoconf*)
1600bd0e222Smrg    echo 1>&2 "\
1618ff16396SmrgWARNING: \`$1' is $msg.  You should only need it if
1620bd0e222Smrg         you modified \`${configure_ac}'.  You might want to install the
1630bd0e222Smrg         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
1640bd0e222Smrg         archive site."
1650bd0e222Smrg    touch configure
1660bd0e222Smrg    ;;
1670bd0e222Smrg
1688ff16396Smrg  autoheader*)
1690bd0e222Smrg    echo 1>&2 "\
1708ff16396SmrgWARNING: \`$1' is $msg.  You should only need it if
1710bd0e222Smrg         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
1720bd0e222Smrg         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
1730bd0e222Smrg         from any GNU archive site."
1740bd0e222Smrg    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
1750bd0e222Smrg    test -z "$files" && files="config.h"
1760bd0e222Smrg    touch_files=
1770bd0e222Smrg    for f in $files; do
1788ff16396Smrg      case $f in
1790bd0e222Smrg      *:*) touch_files="$touch_files "`echo "$f" |
1800bd0e222Smrg				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
1810bd0e222Smrg      *) touch_files="$touch_files $f.in";;
1820bd0e222Smrg      esac
1830bd0e222Smrg    done
1840bd0e222Smrg    touch $touch_files
1850bd0e222Smrg    ;;
1860bd0e222Smrg
1870bd0e222Smrg  automake*)
1880bd0e222Smrg    echo 1>&2 "\
1898ff16396SmrgWARNING: \`$1' is $msg.  You should only need it if
1900bd0e222Smrg         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
1910bd0e222Smrg         You might want to install the \`Automake' and \`Perl' packages.
1920bd0e222Smrg         Grab them from any GNU archive site."
1930bd0e222Smrg    find . -type f -name Makefile.am -print |
1940bd0e222Smrg	   sed 's/\.am$/.in/' |
1950bd0e222Smrg	   while read f; do touch "$f"; done
1960bd0e222Smrg    ;;
1970bd0e222Smrg
1988ff16396Smrg  autom4te*)
1990bd0e222Smrg    echo 1>&2 "\
2008ff16396SmrgWARNING: \`$1' is needed, but is $msg.
2018ff16396Smrg         You might have modified some files without having the
2020bd0e222Smrg         proper tools for further handling them.
2030bd0e222Smrg         You can get \`$1' as part of \`Autoconf' from any GNU
2040bd0e222Smrg         archive site."
2050bd0e222Smrg
2068ff16396Smrg    file=`echo "$*" | sed -n "$sed_output"`
2078ff16396Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
2080bd0e222Smrg    if test -f "$file"; then
2090bd0e222Smrg	touch $file
2100bd0e222Smrg    else
2110bd0e222Smrg	test -z "$file" || exec >$file
2120bd0e222Smrg	echo "#! /bin/sh"
2130bd0e222Smrg	echo "# Created by GNU Automake missing as a replacement of"
2140bd0e222Smrg	echo "#  $ $@"
2150bd0e222Smrg	echo "exit 0"
2160bd0e222Smrg	chmod +x $file
2170bd0e222Smrg	exit 1
2180bd0e222Smrg    fi
2190bd0e222Smrg    ;;
2200bd0e222Smrg
2218ff16396Smrg  bison*|yacc*)
2220bd0e222Smrg    echo 1>&2 "\
2238ff16396SmrgWARNING: \`$1' $msg.  You should only need it if
2240bd0e222Smrg         you modified a \`.y' file.  You may need the \`Bison' package
2250bd0e222Smrg         in order for those modifications to take effect.  You can get
2260bd0e222Smrg         \`Bison' from any GNU archive site."
2270bd0e222Smrg    rm -f y.tab.c y.tab.h
2288ff16396Smrg    if test $# -ne 1; then
2290bd0e222Smrg        eval LASTARG="\${$#}"
2308ff16396Smrg	case $LASTARG in
2310bd0e222Smrg	*.y)
2320bd0e222Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
2338ff16396Smrg	    if test -f "$SRCFILE"; then
2340bd0e222Smrg	         cp "$SRCFILE" y.tab.c
2350bd0e222Smrg	    fi
2360bd0e222Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
2378ff16396Smrg	    if test -f "$SRCFILE"; then
2380bd0e222Smrg	         cp "$SRCFILE" y.tab.h
2390bd0e222Smrg	    fi
2400bd0e222Smrg	  ;;
2410bd0e222Smrg	esac
2420bd0e222Smrg    fi
2438ff16396Smrg    if test ! -f y.tab.h; then
2440bd0e222Smrg	echo >y.tab.h
2450bd0e222Smrg    fi
2468ff16396Smrg    if test ! -f y.tab.c; then
2470bd0e222Smrg	echo 'main() { return 0; }' >y.tab.c
2480bd0e222Smrg    fi
2490bd0e222Smrg    ;;
2500bd0e222Smrg
2518ff16396Smrg  lex*|flex*)
2520bd0e222Smrg    echo 1>&2 "\
2538ff16396SmrgWARNING: \`$1' is $msg.  You should only need it if
2540bd0e222Smrg         you modified a \`.l' file.  You may need the \`Flex' package
2550bd0e222Smrg         in order for those modifications to take effect.  You can get
2560bd0e222Smrg         \`Flex' from any GNU archive site."
2570bd0e222Smrg    rm -f lex.yy.c
2588ff16396Smrg    if test $# -ne 1; then
2590bd0e222Smrg        eval LASTARG="\${$#}"
2608ff16396Smrg	case $LASTARG in
2610bd0e222Smrg	*.l)
2620bd0e222Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
2638ff16396Smrg	    if test -f "$SRCFILE"; then
2640bd0e222Smrg	         cp "$SRCFILE" lex.yy.c
2650bd0e222Smrg	    fi
2660bd0e222Smrg	  ;;
2670bd0e222Smrg	esac
2680bd0e222Smrg    fi
2698ff16396Smrg    if test ! -f lex.yy.c; then
2700bd0e222Smrg	echo 'main() { return 0; }' >lex.yy.c
2710bd0e222Smrg    fi
2720bd0e222Smrg    ;;
2730bd0e222Smrg
2748ff16396Smrg  help2man*)
2750bd0e222Smrg    echo 1>&2 "\
2768ff16396SmrgWARNING: \`$1' is $msg.  You should only need it if
2770bd0e222Smrg	 you modified a dependency of a manual page.  You may need the
2780bd0e222Smrg	 \`Help2man' package in order for those modifications to take
2790bd0e222Smrg	 effect.  You can get \`Help2man' from any GNU archive site."
2800bd0e222Smrg
2818ff16396Smrg    file=`echo "$*" | sed -n "$sed_output"`
2828ff16396Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
2838ff16396Smrg    if test -f "$file"; then
2840bd0e222Smrg	touch $file
2850bd0e222Smrg    else
2860bd0e222Smrg	test -z "$file" || exec >$file
2870bd0e222Smrg	echo ".ab help2man is required to generate this page"
2888ff16396Smrg	exit $?
2890bd0e222Smrg    fi
2900bd0e222Smrg    ;;
2910bd0e222Smrg
2928ff16396Smrg  makeinfo*)
2930bd0e222Smrg    echo 1>&2 "\
2948ff16396SmrgWARNING: \`$1' is $msg.  You should only need it if
2950bd0e222Smrg         you modified a \`.texi' or \`.texinfo' file, or any other file
2960bd0e222Smrg         indirectly affecting the aspect of the manual.  The spurious
2970bd0e222Smrg         call might also be the consequence of using a buggy \`make' (AIX,
2980bd0e222Smrg         DU, IRIX).  You might want to install the \`Texinfo' package or
2990bd0e222Smrg         the \`GNU make' package.  Grab either from any GNU archive site."
3008ff16396Smrg    # The file to touch is that specified with -o ...
3018ff16396Smrg    file=`echo "$*" | sed -n "$sed_output"`
3028ff16396Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
3030bd0e222Smrg    if test -z "$file"; then
3048ff16396Smrg      # ... or it is the one specified with @setfilename ...
3058ff16396Smrg      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
3068ff16396Smrg      file=`sed -n '
3078ff16396Smrg	/^@setfilename/{
3088ff16396Smrg	  s/.* \([^ ]*\) *$/\1/
3098ff16396Smrg	  p
3108ff16396Smrg	  q
3118ff16396Smrg	}' $infile`
3128ff16396Smrg      # ... or it is derived from the source name (dir/f.texi becomes f.info)
3138ff16396Smrg      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
3140bd0e222Smrg    fi
3158ff16396Smrg    # If the file does not exist, the user really needs makeinfo;
3168ff16396Smrg    # let's fail without touching anything.
3178ff16396Smrg    test -f $file || exit 1
3180bd0e222Smrg    touch $file
3190bd0e222Smrg    ;;
3200bd0e222Smrg
3218ff16396Smrg  tar*)
3220bd0e222Smrg    shift
3230bd0e222Smrg
3240bd0e222Smrg    # We have already tried tar in the generic part.
3250bd0e222Smrg    # Look for gnutar/gtar before invocation to avoid ugly error
3260bd0e222Smrg    # messages.
3270bd0e222Smrg    if (gnutar --version > /dev/null 2>&1); then
3280bd0e222Smrg       gnutar "$@" && exit 0
3290bd0e222Smrg    fi
3300bd0e222Smrg    if (gtar --version > /dev/null 2>&1); then
3310bd0e222Smrg       gtar "$@" && exit 0
3320bd0e222Smrg    fi
3330bd0e222Smrg    firstarg="$1"
3340bd0e222Smrg    if shift; then
3358ff16396Smrg	case $firstarg in
3360bd0e222Smrg	*o*)
3370bd0e222Smrg	    firstarg=`echo "$firstarg" | sed s/o//`
3380bd0e222Smrg	    tar "$firstarg" "$@" && exit 0
3390bd0e222Smrg	    ;;
3400bd0e222Smrg	esac
3418ff16396Smrg	case $firstarg in
3420bd0e222Smrg	*h*)
3430bd0e222Smrg	    firstarg=`echo "$firstarg" | sed s/h//`
3440bd0e222Smrg	    tar "$firstarg" "$@" && exit 0
3450bd0e222Smrg	    ;;
3460bd0e222Smrg	esac
3470bd0e222Smrg    fi
3480bd0e222Smrg
3490bd0e222Smrg    echo 1>&2 "\
3500bd0e222SmrgWARNING: I can't seem to be able to run \`tar' with the given arguments.
3510bd0e222Smrg         You may want to install GNU tar or Free paxutils, or check the
3520bd0e222Smrg         command line arguments."
3530bd0e222Smrg    exit 1
3540bd0e222Smrg    ;;
3550bd0e222Smrg
3560bd0e222Smrg  *)
3570bd0e222Smrg    echo 1>&2 "\
3588ff16396SmrgWARNING: \`$1' is needed, and is $msg.
3598ff16396Smrg         You might have modified some files without having the
3600bd0e222Smrg         proper tools for further handling them.  Check the \`README' file,
3610bd0e222Smrg         it often tells you about the needed prerequisites for installing
3620bd0e222Smrg         this package.  You may also peek at any GNU archive site, in case
3630bd0e222Smrg         some other package would contain this missing \`$1' program."
3640bd0e222Smrg    exit 1
3650bd0e222Smrg    ;;
3660bd0e222Smrgesac
3670bd0e222Smrg
3680bd0e222Smrgexit 0
3698ff16396Smrg
3708ff16396Smrg# Local variables:
3718ff16396Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
3728ff16396Smrg# time-stamp-start: "scriptversion="
3738ff16396Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
3748ff16396Smrg# time-stamp-time-zone: "UTC"
3758ff16396Smrg# time-stamp-end: "; # UTC"
3768ff16396Smrg# End:
377