missing revision 21ecb1ef
11e00de39Smrg#! /bin/sh
21e00de39Smrg# Common stub for a few missing GNU programs while installing.
31e00de39Smrg
421ecb1efSmrgscriptversion=2009-04-28.21; # UTC
51e00de39Smrg
621ecb1efSmrg# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
721ecb1efSmrg# 2008, 2009 Free Software Foundation, Inc.
81e00de39Smrg# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
91e00de39Smrg
101e00de39Smrg# This program is free software; you can redistribute it and/or modify
111e00de39Smrg# it under the terms of the GNU General Public License as published by
121e00de39Smrg# the Free Software Foundation; either version 2, or (at your option)
131e00de39Smrg# any later version.
141e00de39Smrg
151e00de39Smrg# This program is distributed in the hope that it will be useful,
161e00de39Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
171e00de39Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
181e00de39Smrg# GNU General Public License for more details.
191e00de39Smrg
201e00de39Smrg# You should have received a copy of the GNU General Public License
2121ecb1efSmrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
221e00de39Smrg
231e00de39Smrg# As a special exception to the GNU General Public License, if you
241e00de39Smrg# distribute this file as part of a program that contains a
251e00de39Smrg# configuration script generated by Autoconf, you may include it under
261e00de39Smrg# the same distribution terms that you use for the rest of that program.
271e00de39Smrg
281e00de39Smrgif test $# -eq 0; then
291e00de39Smrg  echo 1>&2 "Try \`$0 --help' for more information"
301e00de39Smrg  exit 1
311e00de39Smrgfi
321e00de39Smrg
331e00de39Smrgrun=:
341e00de39Smrgsed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
351e00de39Smrgsed_minuso='s/.* -o \([^ ]*\).*/\1/p'
361e00de39Smrg
371e00de39Smrg# In the cases where this matters, `missing' is being run in the
381e00de39Smrg# srcdir already.
391e00de39Smrgif test -f configure.ac; then
401e00de39Smrg  configure_ac=configure.ac
411e00de39Smrgelse
421e00de39Smrg  configure_ac=configure.in
431e00de39Smrgfi
441e00de39Smrg
451e00de39Smrgmsg="missing on your system"
461e00de39Smrg
471e00de39Smrgcase $1 in
481e00de39Smrg--run)
491e00de39Smrg  # Try to run requested program, and just exit if it succeeds.
501e00de39Smrg  run=
511e00de39Smrg  shift
521e00de39Smrg  "$@" && exit 0
531e00de39Smrg  # Exit code 63 means version mismatch.  This often happens
541e00de39Smrg  # when the user try to use an ancient version of a tool on
551e00de39Smrg  # a file that requires a minimum version.  In this case we
561e00de39Smrg  # we should proceed has if the program had been absent, or
571e00de39Smrg  # if --run hadn't been passed.
581e00de39Smrg  if test $? = 63; then
591e00de39Smrg    run=:
601e00de39Smrg    msg="probably too old"
611e00de39Smrg  fi
621e00de39Smrg  ;;
631e00de39Smrg
641e00de39Smrg  -h|--h|--he|--hel|--help)
651e00de39Smrg    echo "\
661e00de39Smrg$0 [OPTION]... PROGRAM [ARGUMENT]...
671e00de39Smrg
681e00de39SmrgHandle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
691e00de39Smrgerror status if there is no known handling for PROGRAM.
701e00de39Smrg
711e00de39SmrgOptions:
721e00de39Smrg  -h, --help      display this help and exit
731e00de39Smrg  -v, --version   output version information and exit
741e00de39Smrg  --run           try to run the given command, and emulate it if it fails
751e00de39Smrg
761e00de39SmrgSupported PROGRAM values:
771e00de39Smrg  aclocal      touch file \`aclocal.m4'
781e00de39Smrg  autoconf     touch file \`configure'
791e00de39Smrg  autoheader   touch file \`config.h.in'
801e00de39Smrg  autom4te     touch the output file, or create a stub one
811e00de39Smrg  automake     touch all \`Makefile.in' files
821e00de39Smrg  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
831e00de39Smrg  flex         create \`lex.yy.c', if possible, from existing .c
841e00de39Smrg  help2man     touch the output file
851e00de39Smrg  lex          create \`lex.yy.c', if possible, from existing .c
861e00de39Smrg  makeinfo     touch the output file
871e00de39Smrg  tar          try tar, gnutar, gtar, then tar without non-portable flags
881e00de39Smrg  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
891e00de39Smrg
9021ecb1efSmrgVersion suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
9121ecb1efSmrg\`g' are ignored when checking the name.
9221ecb1efSmrg
931e00de39SmrgSend bug reports to <bug-automake@gnu.org>."
941e00de39Smrg    exit $?
951e00de39Smrg    ;;
961e00de39Smrg
971e00de39Smrg  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
981e00de39Smrg    echo "missing $scriptversion (GNU Automake)"
991e00de39Smrg    exit $?
1001e00de39Smrg    ;;
1011e00de39Smrg
1021e00de39Smrg  -*)
1031e00de39Smrg    echo 1>&2 "$0: Unknown \`$1' option"
1041e00de39Smrg    echo 1>&2 "Try \`$0 --help' for more information"
1051e00de39Smrg    exit 1
1061e00de39Smrg    ;;
1071e00de39Smrg
1081e00de39Smrgesac
1091e00de39Smrg
11021ecb1efSmrg# normalize program name to check for.
11121ecb1efSmrgprogram=`echo "$1" | sed '
11221ecb1efSmrg  s/^gnu-//; t
11321ecb1efSmrg  s/^gnu//; t
11421ecb1efSmrg  s/^g//; t'`
11521ecb1efSmrg
1161e00de39Smrg# Now exit if we have it, but it failed.  Also exit now if we
1171e00de39Smrg# don't have it and --version was passed (most likely to detect
11821ecb1efSmrg# the program).  This is about non-GNU programs, so use $1 not
11921ecb1efSmrg# $program.
1201e00de39Smrgcase $1 in
12121ecb1efSmrg  lex*|yacc*)
1221e00de39Smrg    # Not GNU programs, they don't have --version.
1231e00de39Smrg    ;;
1241e00de39Smrg
12521ecb1efSmrg  tar*)
1261e00de39Smrg    if test -n "$run"; then
1271e00de39Smrg       echo 1>&2 "ERROR: \`tar' requires --run"
1281e00de39Smrg       exit 1
1291e00de39Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
1301e00de39Smrg       exit 1
1311e00de39Smrg    fi
1321e00de39Smrg    ;;
1331e00de39Smrg
1341e00de39Smrg  *)
1351e00de39Smrg    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
1361e00de39Smrg       # We have it, but it failed.
1371e00de39Smrg       exit 1
1381e00de39Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
1391e00de39Smrg       # Could not run --version or --help.  This is probably someone
1401e00de39Smrg       # running `$TOOL --version' or `$TOOL --help' to check whether
1411e00de39Smrg       # $TOOL exists and not knowing $TOOL uses missing.
1421e00de39Smrg       exit 1
1431e00de39Smrg    fi
1441e00de39Smrg    ;;
1451e00de39Smrgesac
1461e00de39Smrg
1471e00de39Smrg# If it does not exist, or fails to run (possibly an outdated version),
1481e00de39Smrg# try to emulate it.
14921ecb1efSmrgcase $program in
1501e00de39Smrg  aclocal*)
1511e00de39Smrg    echo 1>&2 "\
1521e00de39SmrgWARNING: \`$1' is $msg.  You should only need it if
1531e00de39Smrg         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
1541e00de39Smrg         to install the \`Automake' and \`Perl' packages.  Grab them from
1551e00de39Smrg         any GNU archive site."
1561e00de39Smrg    touch aclocal.m4
1571e00de39Smrg    ;;
1581e00de39Smrg
15921ecb1efSmrg  autoconf*)
1601e00de39Smrg    echo 1>&2 "\
1611e00de39SmrgWARNING: \`$1' is $msg.  You should only need it if
1621e00de39Smrg         you modified \`${configure_ac}'.  You might want to install the
1631e00de39Smrg         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
1641e00de39Smrg         archive site."
1651e00de39Smrg    touch configure
1661e00de39Smrg    ;;
1671e00de39Smrg
16821ecb1efSmrg  autoheader*)
1691e00de39Smrg    echo 1>&2 "\
1701e00de39SmrgWARNING: \`$1' is $msg.  You should only need it if
1711e00de39Smrg         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
1721e00de39Smrg         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
1731e00de39Smrg         from any GNU archive site."
1741e00de39Smrg    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
1751e00de39Smrg    test -z "$files" && files="config.h"
1761e00de39Smrg    touch_files=
1771e00de39Smrg    for f in $files; do
1781e00de39Smrg      case $f in
1791e00de39Smrg      *:*) touch_files="$touch_files "`echo "$f" |
1801e00de39Smrg				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
1811e00de39Smrg      *) touch_files="$touch_files $f.in";;
1821e00de39Smrg      esac
1831e00de39Smrg    done
1841e00de39Smrg    touch $touch_files
1851e00de39Smrg    ;;
1861e00de39Smrg
1871e00de39Smrg  automake*)
1881e00de39Smrg    echo 1>&2 "\
1891e00de39SmrgWARNING: \`$1' is $msg.  You should only need it if
1901e00de39Smrg         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
1911e00de39Smrg         You might want to install the \`Automake' and \`Perl' packages.
1921e00de39Smrg         Grab them from any GNU archive site."
1931e00de39Smrg    find . -type f -name Makefile.am -print |
1941e00de39Smrg	   sed 's/\.am$/.in/' |
1951e00de39Smrg	   while read f; do touch "$f"; done
1961e00de39Smrg    ;;
1971e00de39Smrg
19821ecb1efSmrg  autom4te*)
1991e00de39Smrg    echo 1>&2 "\
2001e00de39SmrgWARNING: \`$1' is needed, but is $msg.
2011e00de39Smrg         You might have modified some files without having the
2021e00de39Smrg         proper tools for further handling them.
2031e00de39Smrg         You can get \`$1' as part of \`Autoconf' from any GNU
2041e00de39Smrg         archive site."
2051e00de39Smrg
2061e00de39Smrg    file=`echo "$*" | sed -n "$sed_output"`
2071e00de39Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
2081e00de39Smrg    if test -f "$file"; then
2091e00de39Smrg	touch $file
2101e00de39Smrg    else
2111e00de39Smrg	test -z "$file" || exec >$file
2121e00de39Smrg	echo "#! /bin/sh"
2131e00de39Smrg	echo "# Created by GNU Automake missing as a replacement of"
2141e00de39Smrg	echo "#  $ $@"
2151e00de39Smrg	echo "exit 0"
2161e00de39Smrg	chmod +x $file
2171e00de39Smrg	exit 1
2181e00de39Smrg    fi
2191e00de39Smrg    ;;
2201e00de39Smrg
22121ecb1efSmrg  bison*|yacc*)
2221e00de39Smrg    echo 1>&2 "\
2231e00de39SmrgWARNING: \`$1' $msg.  You should only need it if
2241e00de39Smrg         you modified a \`.y' file.  You may need the \`Bison' package
2251e00de39Smrg         in order for those modifications to take effect.  You can get
2261e00de39Smrg         \`Bison' from any GNU archive site."
2271e00de39Smrg    rm -f y.tab.c y.tab.h
2281e00de39Smrg    if test $# -ne 1; then
2291e00de39Smrg        eval LASTARG="\${$#}"
2301e00de39Smrg	case $LASTARG in
2311e00de39Smrg	*.y)
2321e00de39Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
2331e00de39Smrg	    if test -f "$SRCFILE"; then
2341e00de39Smrg	         cp "$SRCFILE" y.tab.c
2351e00de39Smrg	    fi
2361e00de39Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
2371e00de39Smrg	    if test -f "$SRCFILE"; then
2381e00de39Smrg	         cp "$SRCFILE" y.tab.h
2391e00de39Smrg	    fi
2401e00de39Smrg	  ;;
2411e00de39Smrg	esac
2421e00de39Smrg    fi
2431e00de39Smrg    if test ! -f y.tab.h; then
2441e00de39Smrg	echo >y.tab.h
2451e00de39Smrg    fi
2461e00de39Smrg    if test ! -f y.tab.c; then
2471e00de39Smrg	echo 'main() { return 0; }' >y.tab.c
2481e00de39Smrg    fi
2491e00de39Smrg    ;;
2501e00de39Smrg
25121ecb1efSmrg  lex*|flex*)
2521e00de39Smrg    echo 1>&2 "\
2531e00de39SmrgWARNING: \`$1' is $msg.  You should only need it if
2541e00de39Smrg         you modified a \`.l' file.  You may need the \`Flex' package
2551e00de39Smrg         in order for those modifications to take effect.  You can get
2561e00de39Smrg         \`Flex' from any GNU archive site."
2571e00de39Smrg    rm -f lex.yy.c
2581e00de39Smrg    if test $# -ne 1; then
2591e00de39Smrg        eval LASTARG="\${$#}"
2601e00de39Smrg	case $LASTARG in
2611e00de39Smrg	*.l)
2621e00de39Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
2631e00de39Smrg	    if test -f "$SRCFILE"; then
2641e00de39Smrg	         cp "$SRCFILE" lex.yy.c
2651e00de39Smrg	    fi
2661e00de39Smrg	  ;;
2671e00de39Smrg	esac
2681e00de39Smrg    fi
2691e00de39Smrg    if test ! -f lex.yy.c; then
2701e00de39Smrg	echo 'main() { return 0; }' >lex.yy.c
2711e00de39Smrg    fi
2721e00de39Smrg    ;;
2731e00de39Smrg
27421ecb1efSmrg  help2man*)
2751e00de39Smrg    echo 1>&2 "\
2761e00de39SmrgWARNING: \`$1' is $msg.  You should only need it if
2771e00de39Smrg	 you modified a dependency of a manual page.  You may need the
2781e00de39Smrg	 \`Help2man' package in order for those modifications to take
2791e00de39Smrg	 effect.  You can get \`Help2man' from any GNU archive site."
2801e00de39Smrg
2811e00de39Smrg    file=`echo "$*" | sed -n "$sed_output"`
2821e00de39Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
2831e00de39Smrg    if test -f "$file"; then
2841e00de39Smrg	touch $file
2851e00de39Smrg    else
2861e00de39Smrg	test -z "$file" || exec >$file
2871e00de39Smrg	echo ".ab help2man is required to generate this page"
28821ecb1efSmrg	exit $?
2891e00de39Smrg    fi
2901e00de39Smrg    ;;
2911e00de39Smrg
29221ecb1efSmrg  makeinfo*)
2931e00de39Smrg    echo 1>&2 "\
2941e00de39SmrgWARNING: \`$1' is $msg.  You should only need it if
2951e00de39Smrg         you modified a \`.texi' or \`.texinfo' file, or any other file
2961e00de39Smrg         indirectly affecting the aspect of the manual.  The spurious
2971e00de39Smrg         call might also be the consequence of using a buggy \`make' (AIX,
2981e00de39Smrg         DU, IRIX).  You might want to install the \`Texinfo' package or
2991e00de39Smrg         the \`GNU make' package.  Grab either from any GNU archive site."
3001e00de39Smrg    # The file to touch is that specified with -o ...
3011e00de39Smrg    file=`echo "$*" | sed -n "$sed_output"`
3021e00de39Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
3031e00de39Smrg    if test -z "$file"; then
3041e00de39Smrg      # ... or it is the one specified with @setfilename ...
3051e00de39Smrg      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
3061e00de39Smrg      file=`sed -n '
3071e00de39Smrg	/^@setfilename/{
3081e00de39Smrg	  s/.* \([^ ]*\) *$/\1/
3091e00de39Smrg	  p
3101e00de39Smrg	  q
3111e00de39Smrg	}' $infile`
3121e00de39Smrg      # ... or it is derived from the source name (dir/f.texi becomes f.info)
3131e00de39Smrg      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
3141e00de39Smrg    fi
3151e00de39Smrg    # If the file does not exist, the user really needs makeinfo;
3161e00de39Smrg    # let's fail without touching anything.
3171e00de39Smrg    test -f $file || exit 1
3181e00de39Smrg    touch $file
3191e00de39Smrg    ;;
3201e00de39Smrg
32121ecb1efSmrg  tar*)
3221e00de39Smrg    shift
3231e00de39Smrg
3241e00de39Smrg    # We have already tried tar in the generic part.
3251e00de39Smrg    # Look for gnutar/gtar before invocation to avoid ugly error
3261e00de39Smrg    # messages.
3271e00de39Smrg    if (gnutar --version > /dev/null 2>&1); then
3281e00de39Smrg       gnutar "$@" && exit 0
3291e00de39Smrg    fi
3301e00de39Smrg    if (gtar --version > /dev/null 2>&1); then
3311e00de39Smrg       gtar "$@" && exit 0
3321e00de39Smrg    fi
3331e00de39Smrg    firstarg="$1"
3341e00de39Smrg    if shift; then
3351e00de39Smrg	case $firstarg in
3361e00de39Smrg	*o*)
3371e00de39Smrg	    firstarg=`echo "$firstarg" | sed s/o//`
3381e00de39Smrg	    tar "$firstarg" "$@" && exit 0
3391e00de39Smrg	    ;;
3401e00de39Smrg	esac
3411e00de39Smrg	case $firstarg in
3421e00de39Smrg	*h*)
3431e00de39Smrg	    firstarg=`echo "$firstarg" | sed s/h//`
3441e00de39Smrg	    tar "$firstarg" "$@" && exit 0
3451e00de39Smrg	    ;;
3461e00de39Smrg	esac
3471e00de39Smrg    fi
3481e00de39Smrg
3491e00de39Smrg    echo 1>&2 "\
3501e00de39SmrgWARNING: I can't seem to be able to run \`tar' with the given arguments.
3511e00de39Smrg         You may want to install GNU tar or Free paxutils, or check the
3521e00de39Smrg         command line arguments."
3531e00de39Smrg    exit 1
3541e00de39Smrg    ;;
3551e00de39Smrg
3561e00de39Smrg  *)
3571e00de39Smrg    echo 1>&2 "\
3581e00de39SmrgWARNING: \`$1' is needed, and is $msg.
3591e00de39Smrg         You might have modified some files without having the
3601e00de39Smrg         proper tools for further handling them.  Check the \`README' file,
3611e00de39Smrg         it often tells you about the needed prerequisites for installing
3621e00de39Smrg         this package.  You may also peek at any GNU archive site, in case
3631e00de39Smrg         some other package would contain this missing \`$1' program."
3641e00de39Smrg    exit 1
3651e00de39Smrg    ;;
3661e00de39Smrgesac
3671e00de39Smrg
3681e00de39Smrgexit 0
3691e00de39Smrg
3701e00de39Smrg# Local variables:
3711e00de39Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
3721e00de39Smrg# time-stamp-start: "scriptversion="
3731e00de39Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
37421ecb1efSmrg# time-stamp-time-zone: "UTC"
37521ecb1efSmrg# time-stamp-end: "; # UTC"
3761e00de39Smrg# End:
377