missing revision 3e747e6d
13e747e6dSmrg#! /bin/sh
23e747e6dSmrg# Common stub for a few missing GNU programs while installing.
33e747e6dSmrg
43e747e6dSmrgscriptversion=2006-05-10.23
53e747e6dSmrg
63e747e6dSmrg# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
73e747e6dSmrg#   Free Software Foundation, Inc.
83e747e6dSmrg# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
93e747e6dSmrg
103e747e6dSmrg# This program is free software; you can redistribute it and/or modify
113e747e6dSmrg# it under the terms of the GNU General Public License as published by
123e747e6dSmrg# the Free Software Foundation; either version 2, or (at your option)
133e747e6dSmrg# any later version.
143e747e6dSmrg
153e747e6dSmrg# This program is distributed in the hope that it will be useful,
163e747e6dSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
173e747e6dSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
183e747e6dSmrg# GNU General Public License for more details.
193e747e6dSmrg
203e747e6dSmrg# You should have received a copy of the GNU General Public License
213e747e6dSmrg# along with this program; if not, write to the Free Software
223e747e6dSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
233e747e6dSmrg# 02110-1301, USA.
243e747e6dSmrg
253e747e6dSmrg# As a special exception to the GNU General Public License, if you
263e747e6dSmrg# distribute this file as part of a program that contains a
273e747e6dSmrg# configuration script generated by Autoconf, you may include it under
283e747e6dSmrg# the same distribution terms that you use for the rest of that program.
293e747e6dSmrg
303e747e6dSmrgif test $# -eq 0; then
313e747e6dSmrg  echo 1>&2 "Try \`$0 --help' for more information"
323e747e6dSmrg  exit 1
333e747e6dSmrgfi
343e747e6dSmrg
353e747e6dSmrgrun=:
363e747e6dSmrgsed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
373e747e6dSmrgsed_minuso='s/.* -o \([^ ]*\).*/\1/p'
383e747e6dSmrg
393e747e6dSmrg# In the cases where this matters, `missing' is being run in the
403e747e6dSmrg# srcdir already.
413e747e6dSmrgif test -f configure.ac; then
423e747e6dSmrg  configure_ac=configure.ac
433e747e6dSmrgelse
443e747e6dSmrg  configure_ac=configure.in
453e747e6dSmrgfi
463e747e6dSmrg
473e747e6dSmrgmsg="missing on your system"
483e747e6dSmrg
493e747e6dSmrgcase $1 in
503e747e6dSmrg--run)
513e747e6dSmrg  # Try to run requested program, and just exit if it succeeds.
523e747e6dSmrg  run=
533e747e6dSmrg  shift
543e747e6dSmrg  "$@" && exit 0
553e747e6dSmrg  # Exit code 63 means version mismatch.  This often happens
563e747e6dSmrg  # when the user try to use an ancient version of a tool on
573e747e6dSmrg  # a file that requires a minimum version.  In this case we
583e747e6dSmrg  # we should proceed has if the program had been absent, or
593e747e6dSmrg  # if --run hadn't been passed.
603e747e6dSmrg  if test $? = 63; then
613e747e6dSmrg    run=:
623e747e6dSmrg    msg="probably too old"
633e747e6dSmrg  fi
643e747e6dSmrg  ;;
653e747e6dSmrg
663e747e6dSmrg  -h|--h|--he|--hel|--help)
673e747e6dSmrg    echo "\
683e747e6dSmrg$0 [OPTION]... PROGRAM [ARGUMENT]...
693e747e6dSmrg
703e747e6dSmrgHandle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
713e747e6dSmrgerror status if there is no known handling for PROGRAM.
723e747e6dSmrg
733e747e6dSmrgOptions:
743e747e6dSmrg  -h, --help      display this help and exit
753e747e6dSmrg  -v, --version   output version information and exit
763e747e6dSmrg  --run           try to run the given command, and emulate it if it fails
773e747e6dSmrg
783e747e6dSmrgSupported PROGRAM values:
793e747e6dSmrg  aclocal      touch file \`aclocal.m4'
803e747e6dSmrg  autoconf     touch file \`configure'
813e747e6dSmrg  autoheader   touch file \`config.h.in'
823e747e6dSmrg  autom4te     touch the output file, or create a stub one
833e747e6dSmrg  automake     touch all \`Makefile.in' files
843e747e6dSmrg  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
853e747e6dSmrg  flex         create \`lex.yy.c', if possible, from existing .c
863e747e6dSmrg  help2man     touch the output file
873e747e6dSmrg  lex          create \`lex.yy.c', if possible, from existing .c
883e747e6dSmrg  makeinfo     touch the output file
893e747e6dSmrg  tar          try tar, gnutar, gtar, then tar without non-portable flags
903e747e6dSmrg  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
913e747e6dSmrg
923e747e6dSmrgSend bug reports to <bug-automake@gnu.org>."
933e747e6dSmrg    exit $?
943e747e6dSmrg    ;;
953e747e6dSmrg
963e747e6dSmrg  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
973e747e6dSmrg    echo "missing $scriptversion (GNU Automake)"
983e747e6dSmrg    exit $?
993e747e6dSmrg    ;;
1003e747e6dSmrg
1013e747e6dSmrg  -*)
1023e747e6dSmrg    echo 1>&2 "$0: Unknown \`$1' option"
1033e747e6dSmrg    echo 1>&2 "Try \`$0 --help' for more information"
1043e747e6dSmrg    exit 1
1053e747e6dSmrg    ;;
1063e747e6dSmrg
1073e747e6dSmrgesac
1083e747e6dSmrg
1093e747e6dSmrg# Now exit if we have it, but it failed.  Also exit now if we
1103e747e6dSmrg# don't have it and --version was passed (most likely to detect
1113e747e6dSmrg# the program).
1123e747e6dSmrgcase $1 in
1133e747e6dSmrg  lex|yacc)
1143e747e6dSmrg    # Not GNU programs, they don't have --version.
1153e747e6dSmrg    ;;
1163e747e6dSmrg
1173e747e6dSmrg  tar)
1183e747e6dSmrg    if test -n "$run"; then
1193e747e6dSmrg       echo 1>&2 "ERROR: \`tar' requires --run"
1203e747e6dSmrg       exit 1
1213e747e6dSmrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
1223e747e6dSmrg       exit 1
1233e747e6dSmrg    fi
1243e747e6dSmrg    ;;
1253e747e6dSmrg
1263e747e6dSmrg  *)
1273e747e6dSmrg    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
1283e747e6dSmrg       # We have it, but it failed.
1293e747e6dSmrg       exit 1
1303e747e6dSmrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
1313e747e6dSmrg       # Could not run --version or --help.  This is probably someone
1323e747e6dSmrg       # running `$TOOL --version' or `$TOOL --help' to check whether
1333e747e6dSmrg       # $TOOL exists and not knowing $TOOL uses missing.
1343e747e6dSmrg       exit 1
1353e747e6dSmrg    fi
1363e747e6dSmrg    ;;
1373e747e6dSmrgesac
1383e747e6dSmrg
1393e747e6dSmrg# If it does not exist, or fails to run (possibly an outdated version),
1403e747e6dSmrg# try to emulate it.
1413e747e6dSmrgcase $1 in
1423e747e6dSmrg  aclocal*)
1433e747e6dSmrg    echo 1>&2 "\
1443e747e6dSmrgWARNING: \`$1' is $msg.  You should only need it if
1453e747e6dSmrg         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
1463e747e6dSmrg         to install the \`Automake' and \`Perl' packages.  Grab them from
1473e747e6dSmrg         any GNU archive site."
1483e747e6dSmrg    touch aclocal.m4
1493e747e6dSmrg    ;;
1503e747e6dSmrg
1513e747e6dSmrg  autoconf)
1523e747e6dSmrg    echo 1>&2 "\
1533e747e6dSmrgWARNING: \`$1' is $msg.  You should only need it if
1543e747e6dSmrg         you modified \`${configure_ac}'.  You might want to install the
1553e747e6dSmrg         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
1563e747e6dSmrg         archive site."
1573e747e6dSmrg    touch configure
1583e747e6dSmrg    ;;
1593e747e6dSmrg
1603e747e6dSmrg  autoheader)
1613e747e6dSmrg    echo 1>&2 "\
1623e747e6dSmrgWARNING: \`$1' is $msg.  You should only need it if
1633e747e6dSmrg         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
1643e747e6dSmrg         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
1653e747e6dSmrg         from any GNU archive site."
1663e747e6dSmrg    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
1673e747e6dSmrg    test -z "$files" && files="config.h"
1683e747e6dSmrg    touch_files=
1693e747e6dSmrg    for f in $files; do
1703e747e6dSmrg      case $f in
1713e747e6dSmrg      *:*) touch_files="$touch_files "`echo "$f" |
1723e747e6dSmrg				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
1733e747e6dSmrg      *) touch_files="$touch_files $f.in";;
1743e747e6dSmrg      esac
1753e747e6dSmrg    done
1763e747e6dSmrg    touch $touch_files
1773e747e6dSmrg    ;;
1783e747e6dSmrg
1793e747e6dSmrg  automake*)
1803e747e6dSmrg    echo 1>&2 "\
1813e747e6dSmrgWARNING: \`$1' is $msg.  You should only need it if
1823e747e6dSmrg         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
1833e747e6dSmrg         You might want to install the \`Automake' and \`Perl' packages.
1843e747e6dSmrg         Grab them from any GNU archive site."
1853e747e6dSmrg    find . -type f -name Makefile.am -print |
1863e747e6dSmrg	   sed 's/\.am$/.in/' |
1873e747e6dSmrg	   while read f; do touch "$f"; done
1883e747e6dSmrg    ;;
1893e747e6dSmrg
1903e747e6dSmrg  autom4te)
1913e747e6dSmrg    echo 1>&2 "\
1923e747e6dSmrgWARNING: \`$1' is needed, but is $msg.
1933e747e6dSmrg         You might have modified some files without having the
1943e747e6dSmrg         proper tools for further handling them.
1953e747e6dSmrg         You can get \`$1' as part of \`Autoconf' from any GNU
1963e747e6dSmrg         archive site."
1973e747e6dSmrg
1983e747e6dSmrg    file=`echo "$*" | sed -n "$sed_output"`
1993e747e6dSmrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
2003e747e6dSmrg    if test -f "$file"; then
2013e747e6dSmrg	touch $file
2023e747e6dSmrg    else
2033e747e6dSmrg	test -z "$file" || exec >$file
2043e747e6dSmrg	echo "#! /bin/sh"
2053e747e6dSmrg	echo "# Created by GNU Automake missing as a replacement of"
2063e747e6dSmrg	echo "#  $ $@"
2073e747e6dSmrg	echo "exit 0"
2083e747e6dSmrg	chmod +x $file
2093e747e6dSmrg	exit 1
2103e747e6dSmrg    fi
2113e747e6dSmrg    ;;
2123e747e6dSmrg
2133e747e6dSmrg  bison|yacc)
2143e747e6dSmrg    echo 1>&2 "\
2153e747e6dSmrgWARNING: \`$1' $msg.  You should only need it if
2163e747e6dSmrg         you modified a \`.y' file.  You may need the \`Bison' package
2173e747e6dSmrg         in order for those modifications to take effect.  You can get
2183e747e6dSmrg         \`Bison' from any GNU archive site."
2193e747e6dSmrg    rm -f y.tab.c y.tab.h
2203e747e6dSmrg    if test $# -ne 1; then
2213e747e6dSmrg        eval LASTARG="\${$#}"
2223e747e6dSmrg	case $LASTARG in
2233e747e6dSmrg	*.y)
2243e747e6dSmrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
2253e747e6dSmrg	    if test -f "$SRCFILE"; then
2263e747e6dSmrg	         cp "$SRCFILE" y.tab.c
2273e747e6dSmrg	    fi
2283e747e6dSmrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
2293e747e6dSmrg	    if test -f "$SRCFILE"; then
2303e747e6dSmrg	         cp "$SRCFILE" y.tab.h
2313e747e6dSmrg	    fi
2323e747e6dSmrg	  ;;
2333e747e6dSmrg	esac
2343e747e6dSmrg    fi
2353e747e6dSmrg    if test ! -f y.tab.h; then
2363e747e6dSmrg	echo >y.tab.h
2373e747e6dSmrg    fi
2383e747e6dSmrg    if test ! -f y.tab.c; then
2393e747e6dSmrg	echo 'main() { return 0; }' >y.tab.c
2403e747e6dSmrg    fi
2413e747e6dSmrg    ;;
2423e747e6dSmrg
2433e747e6dSmrg  lex|flex)
2443e747e6dSmrg    echo 1>&2 "\
2453e747e6dSmrgWARNING: \`$1' is $msg.  You should only need it if
2463e747e6dSmrg         you modified a \`.l' file.  You may need the \`Flex' package
2473e747e6dSmrg         in order for those modifications to take effect.  You can get
2483e747e6dSmrg         \`Flex' from any GNU archive site."
2493e747e6dSmrg    rm -f lex.yy.c
2503e747e6dSmrg    if test $# -ne 1; then
2513e747e6dSmrg        eval LASTARG="\${$#}"
2523e747e6dSmrg	case $LASTARG in
2533e747e6dSmrg	*.l)
2543e747e6dSmrg	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
2553e747e6dSmrg	    if test -f "$SRCFILE"; then
2563e747e6dSmrg	         cp "$SRCFILE" lex.yy.c
2573e747e6dSmrg	    fi
2583e747e6dSmrg	  ;;
2593e747e6dSmrg	esac
2603e747e6dSmrg    fi
2613e747e6dSmrg    if test ! -f lex.yy.c; then
2623e747e6dSmrg	echo 'main() { return 0; }' >lex.yy.c
2633e747e6dSmrg    fi
2643e747e6dSmrg    ;;
2653e747e6dSmrg
2663e747e6dSmrg  help2man)
2673e747e6dSmrg    echo 1>&2 "\
2683e747e6dSmrgWARNING: \`$1' is $msg.  You should only need it if
2693e747e6dSmrg	 you modified a dependency of a manual page.  You may need the
2703e747e6dSmrg	 \`Help2man' package in order for those modifications to take
2713e747e6dSmrg	 effect.  You can get \`Help2man' from any GNU archive site."
2723e747e6dSmrg
2733e747e6dSmrg    file=`echo "$*" | sed -n "$sed_output"`
2743e747e6dSmrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
2753e747e6dSmrg    if test -f "$file"; then
2763e747e6dSmrg	touch $file
2773e747e6dSmrg    else
2783e747e6dSmrg	test -z "$file" || exec >$file
2793e747e6dSmrg	echo ".ab help2man is required to generate this page"
2803e747e6dSmrg	exit 1
2813e747e6dSmrg    fi
2823e747e6dSmrg    ;;
2833e747e6dSmrg
2843e747e6dSmrg  makeinfo)
2853e747e6dSmrg    echo 1>&2 "\
2863e747e6dSmrgWARNING: \`$1' is $msg.  You should only need it if
2873e747e6dSmrg         you modified a \`.texi' or \`.texinfo' file, or any other file
2883e747e6dSmrg         indirectly affecting the aspect of the manual.  The spurious
2893e747e6dSmrg         call might also be the consequence of using a buggy \`make' (AIX,
2903e747e6dSmrg         DU, IRIX).  You might want to install the \`Texinfo' package or
2913e747e6dSmrg         the \`GNU make' package.  Grab either from any GNU archive site."
2923e747e6dSmrg    # The file to touch is that specified with -o ...
2933e747e6dSmrg    file=`echo "$*" | sed -n "$sed_output"`
2943e747e6dSmrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
2953e747e6dSmrg    if test -z "$file"; then
2963e747e6dSmrg      # ... or it is the one specified with @setfilename ...
2973e747e6dSmrg      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
2983e747e6dSmrg      file=`sed -n '
2993e747e6dSmrg	/^@setfilename/{
3003e747e6dSmrg	  s/.* \([^ ]*\) *$/\1/
3013e747e6dSmrg	  p
3023e747e6dSmrg	  q
3033e747e6dSmrg	}' $infile`
3043e747e6dSmrg      # ... or it is derived from the source name (dir/f.texi becomes f.info)
3053e747e6dSmrg      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
3063e747e6dSmrg    fi
3073e747e6dSmrg    # If the file does not exist, the user really needs makeinfo;
3083e747e6dSmrg    # let's fail without touching anything.
3093e747e6dSmrg    test -f $file || exit 1
3103e747e6dSmrg    touch $file
3113e747e6dSmrg    ;;
3123e747e6dSmrg
3133e747e6dSmrg  tar)
3143e747e6dSmrg    shift
3153e747e6dSmrg
3163e747e6dSmrg    # We have already tried tar in the generic part.
3173e747e6dSmrg    # Look for gnutar/gtar before invocation to avoid ugly error
3183e747e6dSmrg    # messages.
3193e747e6dSmrg    if (gnutar --version > /dev/null 2>&1); then
3203e747e6dSmrg       gnutar "$@" && exit 0
3213e747e6dSmrg    fi
3223e747e6dSmrg    if (gtar --version > /dev/null 2>&1); then
3233e747e6dSmrg       gtar "$@" && exit 0
3243e747e6dSmrg    fi
3253e747e6dSmrg    firstarg="$1"
3263e747e6dSmrg    if shift; then
3273e747e6dSmrg	case $firstarg in
3283e747e6dSmrg	*o*)
3293e747e6dSmrg	    firstarg=`echo "$firstarg" | sed s/o//`
3303e747e6dSmrg	    tar "$firstarg" "$@" && exit 0
3313e747e6dSmrg	    ;;
3323e747e6dSmrg	esac
3333e747e6dSmrg	case $firstarg in
3343e747e6dSmrg	*h*)
3353e747e6dSmrg	    firstarg=`echo "$firstarg" | sed s/h//`
3363e747e6dSmrg	    tar "$firstarg" "$@" && exit 0
3373e747e6dSmrg	    ;;
3383e747e6dSmrg	esac
3393e747e6dSmrg    fi
3403e747e6dSmrg
3413e747e6dSmrg    echo 1>&2 "\
3423e747e6dSmrgWARNING: I can't seem to be able to run \`tar' with the given arguments.
3433e747e6dSmrg         You may want to install GNU tar or Free paxutils, or check the
3443e747e6dSmrg         command line arguments."
3453e747e6dSmrg    exit 1
3463e747e6dSmrg    ;;
3473e747e6dSmrg
3483e747e6dSmrg  *)
3493e747e6dSmrg    echo 1>&2 "\
3503e747e6dSmrgWARNING: \`$1' is needed, and is $msg.
3513e747e6dSmrg         You might have modified some files without having the
3523e747e6dSmrg         proper tools for further handling them.  Check the \`README' file,
3533e747e6dSmrg         it often tells you about the needed prerequisites for installing
3543e747e6dSmrg         this package.  You may also peek at any GNU archive site, in case
3553e747e6dSmrg         some other package would contain this missing \`$1' program."
3563e747e6dSmrg    exit 1
3573e747e6dSmrg    ;;
3583e747e6dSmrgesac
3593e747e6dSmrg
3603e747e6dSmrgexit 0
3613e747e6dSmrg
3623e747e6dSmrg# Local variables:
3633e747e6dSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
3643e747e6dSmrg# time-stamp-start: "scriptversion="
3653e747e6dSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
3663e747e6dSmrg# time-stamp-end: "$"
3673e747e6dSmrg# End:
368