missing revision c05e22d7
15dfecf96Smrg#! /bin/sh
25dfecf96Smrg# Common stub for a few missing GNU programs while installing.
35dfecf96Smrg
4c05e22d7Smrgscriptversion=2009-04-28.21; # UTC
55dfecf96Smrg
6c05e22d7Smrg# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
7c05e22d7Smrg# 2008, 2009 Free Software Foundation, Inc.
85dfecf96Smrg# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
95dfecf96Smrg
105dfecf96Smrg# This program is free software; you can redistribute it and/or modify
115dfecf96Smrg# it under the terms of the GNU General Public License as published by
125dfecf96Smrg# the Free Software Foundation; either version 2, or (at your option)
135dfecf96Smrg# any later version.
145dfecf96Smrg
155dfecf96Smrg# This program is distributed in the hope that it will be useful,
165dfecf96Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
175dfecf96Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
185dfecf96Smrg# GNU General Public License for more details.
195dfecf96Smrg
205dfecf96Smrg# You should have received a copy of the GNU General Public License
21c05e22d7Smrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
225dfecf96Smrg
235dfecf96Smrg# As a special exception to the GNU General Public License, if you
245dfecf96Smrg# distribute this file as part of a program that contains a
255dfecf96Smrg# configuration script generated by Autoconf, you may include it under
265dfecf96Smrg# the same distribution terms that you use for the rest of that program.
275dfecf96Smrg
285dfecf96Smrgif test $# -eq 0; then
295dfecf96Smrg  echo 1>&2 "Try \`$0 --help' for more information"
305dfecf96Smrg  exit 1
315dfecf96Smrgfi
325dfecf96Smrg
335dfecf96Smrgrun=:
34f14f4646Smrgsed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
35f14f4646Smrgsed_minuso='s/.* -o \([^ ]*\).*/\1/p'
365dfecf96Smrg
375dfecf96Smrg# In the cases where this matters, `missing' is being run in the
385dfecf96Smrg# srcdir already.
395dfecf96Smrgif test -f configure.ac; then
405dfecf96Smrg  configure_ac=configure.ac
415dfecf96Smrgelse
425dfecf96Smrg  configure_ac=configure.in
435dfecf96Smrgfi
445dfecf96Smrg
455dfecf96Smrgmsg="missing on your system"
465dfecf96Smrg
47f14f4646Smrgcase $1 in
485dfecf96Smrg--run)
495dfecf96Smrg  # Try to run requested program, and just exit if it succeeds.
505dfecf96Smrg  run=
515dfecf96Smrg  shift
525dfecf96Smrg  "$@" && exit 0
535dfecf96Smrg  # Exit code 63 means version mismatch.  This often happens
545dfecf96Smrg  # when the user try to use an ancient version of a tool on
555dfecf96Smrg  # a file that requires a minimum version.  In this case we
565dfecf96Smrg  # we should proceed has if the program had been absent, or
575dfecf96Smrg  # if --run hadn't been passed.
585dfecf96Smrg  if test $? = 63; then
595dfecf96Smrg    run=:
605dfecf96Smrg    msg="probably too old"
615dfecf96Smrg  fi
625dfecf96Smrg  ;;
635dfecf96Smrg
645dfecf96Smrg  -h|--h|--he|--hel|--help)
655dfecf96Smrg    echo "\
665dfecf96Smrg$0 [OPTION]... PROGRAM [ARGUMENT]...
675dfecf96Smrg
685dfecf96SmrgHandle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
695dfecf96Smrgerror status if there is no known handling for PROGRAM.
705dfecf96Smrg
715dfecf96SmrgOptions:
725dfecf96Smrg  -h, --help      display this help and exit
735dfecf96Smrg  -v, --version   output version information and exit
745dfecf96Smrg  --run           try to run the given command, and emulate it if it fails
755dfecf96Smrg
765dfecf96SmrgSupported PROGRAM values:
775dfecf96Smrg  aclocal      touch file \`aclocal.m4'
785dfecf96Smrg  autoconf     touch file \`configure'
795dfecf96Smrg  autoheader   touch file \`config.h.in'
80f14f4646Smrg  autom4te     touch the output file, or create a stub one
815dfecf96Smrg  automake     touch all \`Makefile.in' files
825dfecf96Smrg  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
835dfecf96Smrg  flex         create \`lex.yy.c', if possible, from existing .c
845dfecf96Smrg  help2man     touch the output file
855dfecf96Smrg  lex          create \`lex.yy.c', if possible, from existing .c
865dfecf96Smrg  makeinfo     touch the output file
875dfecf96Smrg  tar          try tar, gnutar, gtar, then tar without non-portable flags
885dfecf96Smrg  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
895dfecf96Smrg
90c05e22d7SmrgVersion suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
91c05e22d7Smrg\`g' are ignored when checking the name.
92c05e22d7Smrg
935dfecf96SmrgSend bug reports to <bug-automake@gnu.org>."
945dfecf96Smrg    exit $?
955dfecf96Smrg    ;;
965dfecf96Smrg
975dfecf96Smrg  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
985dfecf96Smrg    echo "missing $scriptversion (GNU Automake)"
995dfecf96Smrg    exit $?
1005dfecf96Smrg    ;;
1015dfecf96Smrg
1025dfecf96Smrg  -*)
1035dfecf96Smrg    echo 1>&2 "$0: Unknown \`$1' option"
1045dfecf96Smrg    echo 1>&2 "Try \`$0 --help' for more information"
1055dfecf96Smrg    exit 1
1065dfecf96Smrg    ;;
1075dfecf96Smrg
1085dfecf96Smrgesac
1095dfecf96Smrg
110c05e22d7Smrg# normalize program name to check for.
111c05e22d7Smrgprogram=`echo "$1" | sed '
112c05e22d7Smrg  s/^gnu-//; t
113c05e22d7Smrg  s/^gnu//; t
114c05e22d7Smrg  s/^g//; t'`
115c05e22d7Smrg
1165dfecf96Smrg# Now exit if we have it, but it failed.  Also exit now if we
1175dfecf96Smrg# don't have it and --version was passed (most likely to detect
118c05e22d7Smrg# the program).  This is about non-GNU programs, so use $1 not
119c05e22d7Smrg# $program.
120f14f4646Smrgcase $1 in
121c05e22d7Smrg  lex*|yacc*)
1225dfecf96Smrg    # Not GNU programs, they don't have --version.
1235dfecf96Smrg    ;;
1245dfecf96Smrg
125c05e22d7Smrg  tar*)
1265dfecf96Smrg    if test -n "$run"; then
1275dfecf96Smrg       echo 1>&2 "ERROR: \`tar' requires --run"
1285dfecf96Smrg       exit 1
1295dfecf96Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
1305dfecf96Smrg       exit 1
1315dfecf96Smrg    fi
1325dfecf96Smrg    ;;
1335dfecf96Smrg
1345dfecf96Smrg  *)
1355dfecf96Smrg    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
1365dfecf96Smrg       # We have it, but it failed.
1375dfecf96Smrg       exit 1
1385dfecf96Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
1395dfecf96Smrg       # Could not run --version or --help.  This is probably someone
1405dfecf96Smrg       # running `$TOOL --version' or `$TOOL --help' to check whether
1415dfecf96Smrg       # $TOOL exists and not knowing $TOOL uses missing.
1425dfecf96Smrg       exit 1
1435dfecf96Smrg    fi
1445dfecf96Smrg    ;;
1455dfecf96Smrgesac
1465dfecf96Smrg
1475dfecf96Smrg# If it does not exist, or fails to run (possibly an outdated version),
1485dfecf96Smrg# try to emulate it.
149c05e22d7Smrgcase $program in
1505dfecf96Smrg  aclocal*)
1515dfecf96Smrg    echo 1>&2 "\
1525dfecf96SmrgWARNING: \`$1' is $msg.  You should only need it if
1535dfecf96Smrg         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
1545dfecf96Smrg         to install the \`Automake' and \`Perl' packages.  Grab them from
1555dfecf96Smrg         any GNU archive site."
1565dfecf96Smrg    touch aclocal.m4
1575dfecf96Smrg    ;;
1585dfecf96Smrg
159c05e22d7Smrg  autoconf*)
1605dfecf96Smrg    echo 1>&2 "\
1615dfecf96SmrgWARNING: \`$1' is $msg.  You should only need it if
1625dfecf96Smrg         you modified \`${configure_ac}'.  You might want to install the
1635dfecf96Smrg         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
1645dfecf96Smrg         archive site."
1655dfecf96Smrg    touch configure
1665dfecf96Smrg    ;;
1675dfecf96Smrg
168c05e22d7Smrg  autoheader*)
1695dfecf96Smrg    echo 1>&2 "\
1705dfecf96SmrgWARNING: \`$1' is $msg.  You should only need it if
1715dfecf96Smrg         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
1725dfecf96Smrg         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
1735dfecf96Smrg         from any GNU archive site."
1745dfecf96Smrg    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
1755dfecf96Smrg    test -z "$files" && files="config.h"
1765dfecf96Smrg    touch_files=
1775dfecf96Smrg    for f in $files; do
178f14f4646Smrg      case $f in
1795dfecf96Smrg      *:*) touch_files="$touch_files "`echo "$f" |
1805dfecf96Smrg				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
1815dfecf96Smrg      *) touch_files="$touch_files $f.in";;
1825dfecf96Smrg      esac
1835dfecf96Smrg    done
1845dfecf96Smrg    touch $touch_files
1855dfecf96Smrg    ;;
1865dfecf96Smrg
1875dfecf96Smrg  automake*)
1885dfecf96Smrg    echo 1>&2 "\
1895dfecf96SmrgWARNING: \`$1' is $msg.  You should only need it if
1905dfecf96Smrg         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
1915dfecf96Smrg         You might want to install the \`Automake' and \`Perl' packages.
1925dfecf96Smrg         Grab them from any GNU archive site."
1935dfecf96Smrg    find . -type f -name Makefile.am -print |
1945dfecf96Smrg	   sed 's/\.am$/.in/' |
1955dfecf96Smrg	   while read f; do touch "$f"; done
1965dfecf96Smrg    ;;
1975dfecf96Smrg
198c05e22d7Smrg  autom4te*)
1995dfecf96Smrg    echo 1>&2 "\
2005dfecf96SmrgWARNING: \`$1' is needed, but is $msg.
2015dfecf96Smrg         You might have modified some files without having the
2025dfecf96Smrg         proper tools for further handling them.
2035dfecf96Smrg         You can get \`$1' as part of \`Autoconf' from any GNU
2045dfecf96Smrg         archive site."
2055dfecf96Smrg
206f14f4646Smrg    file=`echo "$*" | sed -n "$sed_output"`
207f14f4646Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
2085dfecf96Smrg    if test -f "$file"; then
2095dfecf96Smrg	touch $file
2105dfecf96Smrg    else
2115dfecf96Smrg	test -z "$file" || exec >$file
2125dfecf96Smrg	echo "#! /bin/sh"
2135dfecf96Smrg	echo "# Created by GNU Automake missing as a replacement of"
2145dfecf96Smrg	echo "#  $ $@"
2155dfecf96Smrg	echo "exit 0"
2165dfecf96Smrg	chmod +x $file
2175dfecf96Smrg	exit 1
2185dfecf96Smrg    fi
2195dfecf96Smrg    ;;
2205dfecf96Smrg
221c05e22d7Smrg  bison*|yacc*)
2225dfecf96Smrg    echo 1>&2 "\
2235dfecf96SmrgWARNING: \`$1' $msg.  You should only need it if
2245dfecf96Smrg         you modified a \`.y' file.  You may need the \`Bison' package
2255dfecf96Smrg         in order for those modifications to take effect.  You can get
2265dfecf96Smrg         \`Bison' from any GNU archive site."
2275dfecf96Smrg    rm -f y.tab.c y.tab.h
228f14f4646Smrg    if test $# -ne 1; then
2295dfecf96Smrg        eval LASTARG="\${$#}"
230f14f4646Smrg	case $LASTARG in
2315dfecf96Smrg	*.y)
2325dfecf96Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
233f14f4646Smrg	    if test -f "$SRCFILE"; then
2345dfecf96Smrg	         cp "$SRCFILE" y.tab.c
2355dfecf96Smrg	    fi
2365dfecf96Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
237f14f4646Smrg	    if test -f "$SRCFILE"; then
2385dfecf96Smrg	         cp "$SRCFILE" y.tab.h
2395dfecf96Smrg	    fi
2405dfecf96Smrg	  ;;
2415dfecf96Smrg	esac
2425dfecf96Smrg    fi
243f14f4646Smrg    if test ! -f y.tab.h; then
2445dfecf96Smrg	echo >y.tab.h
2455dfecf96Smrg    fi
246f14f4646Smrg    if test ! -f y.tab.c; then
2475dfecf96Smrg	echo 'main() { return 0; }' >y.tab.c
2485dfecf96Smrg    fi
2495dfecf96Smrg    ;;
2505dfecf96Smrg
251c05e22d7Smrg  lex*|flex*)
2525dfecf96Smrg    echo 1>&2 "\
2535dfecf96SmrgWARNING: \`$1' is $msg.  You should only need it if
2545dfecf96Smrg         you modified a \`.l' file.  You may need the \`Flex' package
2555dfecf96Smrg         in order for those modifications to take effect.  You can get
2565dfecf96Smrg         \`Flex' from any GNU archive site."
2575dfecf96Smrg    rm -f lex.yy.c
258f14f4646Smrg    if test $# -ne 1; then
2595dfecf96Smrg        eval LASTARG="\${$#}"
260f14f4646Smrg	case $LASTARG in
2615dfecf96Smrg	*.l)
2625dfecf96Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
263f14f4646Smrg	    if test -f "$SRCFILE"; then
2645dfecf96Smrg	         cp "$SRCFILE" lex.yy.c
2655dfecf96Smrg	    fi
2665dfecf96Smrg	  ;;
2675dfecf96Smrg	esac
2685dfecf96Smrg    fi
269f14f4646Smrg    if test ! -f lex.yy.c; then
2705dfecf96Smrg	echo 'main() { return 0; }' >lex.yy.c
2715dfecf96Smrg    fi
2725dfecf96Smrg    ;;
2735dfecf96Smrg
274c05e22d7Smrg  help2man*)
2755dfecf96Smrg    echo 1>&2 "\
2765dfecf96SmrgWARNING: \`$1' is $msg.  You should only need it if
2775dfecf96Smrg	 you modified a dependency of a manual page.  You may need the
2785dfecf96Smrg	 \`Help2man' package in order for those modifications to take
2795dfecf96Smrg	 effect.  You can get \`Help2man' from any GNU archive site."
2805dfecf96Smrg
281f14f4646Smrg    file=`echo "$*" | sed -n "$sed_output"`
282f14f4646Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
283f14f4646Smrg    if test -f "$file"; then
2845dfecf96Smrg	touch $file
2855dfecf96Smrg    else
2865dfecf96Smrg	test -z "$file" || exec >$file
2875dfecf96Smrg	echo ".ab help2man is required to generate this page"
288c05e22d7Smrg	exit $?
2895dfecf96Smrg    fi
2905dfecf96Smrg    ;;
2915dfecf96Smrg
292c05e22d7Smrg  makeinfo*)
2935dfecf96Smrg    echo 1>&2 "\
2945dfecf96SmrgWARNING: \`$1' is $msg.  You should only need it if
2955dfecf96Smrg         you modified a \`.texi' or \`.texinfo' file, or any other file
2965dfecf96Smrg         indirectly affecting the aspect of the manual.  The spurious
2975dfecf96Smrg         call might also be the consequence of using a buggy \`make' (AIX,
2985dfecf96Smrg         DU, IRIX).  You might want to install the \`Texinfo' package or
2995dfecf96Smrg         the \`GNU make' package.  Grab either from any GNU archive site."
3005dfecf96Smrg    # The file to touch is that specified with -o ...
301f14f4646Smrg    file=`echo "$*" | sed -n "$sed_output"`
302f14f4646Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
3035dfecf96Smrg    if test -z "$file"; then
3045dfecf96Smrg      # ... or it is the one specified with @setfilename ...
3055dfecf96Smrg      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
306f14f4646Smrg      file=`sed -n '
307f14f4646Smrg	/^@setfilename/{
308f14f4646Smrg	  s/.* \([^ ]*\) *$/\1/
309f14f4646Smrg	  p
310f14f4646Smrg	  q
311f14f4646Smrg	}' $infile`
3125dfecf96Smrg      # ... or it is derived from the source name (dir/f.texi becomes f.info)
3135dfecf96Smrg      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
3145dfecf96Smrg    fi
3155dfecf96Smrg    # If the file does not exist, the user really needs makeinfo;
3165dfecf96Smrg    # let's fail without touching anything.
3175dfecf96Smrg    test -f $file || exit 1
3185dfecf96Smrg    touch $file
3195dfecf96Smrg    ;;
3205dfecf96Smrg
321c05e22d7Smrg  tar*)
3225dfecf96Smrg    shift
3235dfecf96Smrg
3245dfecf96Smrg    # We have already tried tar in the generic part.
3255dfecf96Smrg    # Look for gnutar/gtar before invocation to avoid ugly error
3265dfecf96Smrg    # messages.
3275dfecf96Smrg    if (gnutar --version > /dev/null 2>&1); then
3285dfecf96Smrg       gnutar "$@" && exit 0
3295dfecf96Smrg    fi
3305dfecf96Smrg    if (gtar --version > /dev/null 2>&1); then
3315dfecf96Smrg       gtar "$@" && exit 0
3325dfecf96Smrg    fi
3335dfecf96Smrg    firstarg="$1"
3345dfecf96Smrg    if shift; then
335f14f4646Smrg	case $firstarg in
3365dfecf96Smrg	*o*)
3375dfecf96Smrg	    firstarg=`echo "$firstarg" | sed s/o//`
3385dfecf96Smrg	    tar "$firstarg" "$@" && exit 0
3395dfecf96Smrg	    ;;
3405dfecf96Smrg	esac
341f14f4646Smrg	case $firstarg in
3425dfecf96Smrg	*h*)
3435dfecf96Smrg	    firstarg=`echo "$firstarg" | sed s/h//`
3445dfecf96Smrg	    tar "$firstarg" "$@" && exit 0
3455dfecf96Smrg	    ;;
3465dfecf96Smrg	esac
3475dfecf96Smrg    fi
3485dfecf96Smrg
3495dfecf96Smrg    echo 1>&2 "\
3505dfecf96SmrgWARNING: I can't seem to be able to run \`tar' with the given arguments.
3515dfecf96Smrg         You may want to install GNU tar or Free paxutils, or check the
3525dfecf96Smrg         command line arguments."
3535dfecf96Smrg    exit 1
3545dfecf96Smrg    ;;
3555dfecf96Smrg
3565dfecf96Smrg  *)
3575dfecf96Smrg    echo 1>&2 "\
3585dfecf96SmrgWARNING: \`$1' is needed, and is $msg.
3595dfecf96Smrg         You might have modified some files without having the
3605dfecf96Smrg         proper tools for further handling them.  Check the \`README' file,
3615dfecf96Smrg         it often tells you about the needed prerequisites for installing
3625dfecf96Smrg         this package.  You may also peek at any GNU archive site, in case
3635dfecf96Smrg         some other package would contain this missing \`$1' program."
3645dfecf96Smrg    exit 1
3655dfecf96Smrg    ;;
3665dfecf96Smrgesac
3675dfecf96Smrg
3685dfecf96Smrgexit 0
3695dfecf96Smrg
3705dfecf96Smrg# Local variables:
3715dfecf96Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
3725dfecf96Smrg# time-stamp-start: "scriptversion="
3735dfecf96Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
374c05e22d7Smrg# time-stamp-time-zone: "UTC"
375c05e22d7Smrg# time-stamp-end: "; # UTC"
3765dfecf96Smrg# End:
377