missing revision 55de1df9
155de1df9Smrg#! /bin/sh
255de1df9Smrg# Common stub for a few missing GNU programs while installing.
355de1df9Smrg
455de1df9Smrgscriptversion=2009-04-28.21; # UTC
555de1df9Smrg
655de1df9Smrg# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
755de1df9Smrg# 2008, 2009 Free Software Foundation, Inc.
855de1df9Smrg# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
955de1df9Smrg
1055de1df9Smrg# This program is free software; you can redistribute it and/or modify
1155de1df9Smrg# it under the terms of the GNU General Public License as published by
1255de1df9Smrg# the Free Software Foundation; either version 2, or (at your option)
1355de1df9Smrg# any later version.
1455de1df9Smrg
1555de1df9Smrg# This program is distributed in the hope that it will be useful,
1655de1df9Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
1755de1df9Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1855de1df9Smrg# GNU General Public License for more details.
1955de1df9Smrg
2055de1df9Smrg# You should have received a copy of the GNU General Public License
2155de1df9Smrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
2255de1df9Smrg
2355de1df9Smrg# As a special exception to the GNU General Public License, if you
2455de1df9Smrg# distribute this file as part of a program that contains a
2555de1df9Smrg# configuration script generated by Autoconf, you may include it under
2655de1df9Smrg# the same distribution terms that you use for the rest of that program.
2755de1df9Smrg
2855de1df9Smrgif test $# -eq 0; then
2955de1df9Smrg  echo 1>&2 "Try \`$0 --help' for more information"
3055de1df9Smrg  exit 1
3155de1df9Smrgfi
3255de1df9Smrg
3355de1df9Smrgrun=:
3455de1df9Smrgsed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
3555de1df9Smrgsed_minuso='s/.* -o \([^ ]*\).*/\1/p'
3655de1df9Smrg
3755de1df9Smrg# In the cases where this matters, `missing' is being run in the
3855de1df9Smrg# srcdir already.
3955de1df9Smrgif test -f configure.ac; then
4055de1df9Smrg  configure_ac=configure.ac
4155de1df9Smrgelse
4255de1df9Smrg  configure_ac=configure.in
4355de1df9Smrgfi
4455de1df9Smrg
4555de1df9Smrgmsg="missing on your system"
4655de1df9Smrg
4755de1df9Smrgcase $1 in
4855de1df9Smrg--run)
4955de1df9Smrg  # Try to run requested program, and just exit if it succeeds.
5055de1df9Smrg  run=
5155de1df9Smrg  shift
5255de1df9Smrg  "$@" && exit 0
5355de1df9Smrg  # Exit code 63 means version mismatch.  This often happens
5455de1df9Smrg  # when the user try to use an ancient version of a tool on
5555de1df9Smrg  # a file that requires a minimum version.  In this case we
5655de1df9Smrg  # we should proceed has if the program had been absent, or
5755de1df9Smrg  # if --run hadn't been passed.
5855de1df9Smrg  if test $? = 63; then
5955de1df9Smrg    run=:
6055de1df9Smrg    msg="probably too old"
6155de1df9Smrg  fi
6255de1df9Smrg  ;;
6355de1df9Smrg
6455de1df9Smrg  -h|--h|--he|--hel|--help)
6555de1df9Smrg    echo "\
6655de1df9Smrg$0 [OPTION]... PROGRAM [ARGUMENT]...
6755de1df9Smrg
6855de1df9SmrgHandle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
6955de1df9Smrgerror status if there is no known handling for PROGRAM.
7055de1df9Smrg
7155de1df9SmrgOptions:
7255de1df9Smrg  -h, --help      display this help and exit
7355de1df9Smrg  -v, --version   output version information and exit
7455de1df9Smrg  --run           try to run the given command, and emulate it if it fails
7555de1df9Smrg
7655de1df9SmrgSupported PROGRAM values:
7755de1df9Smrg  aclocal      touch file \`aclocal.m4'
7855de1df9Smrg  autoconf     touch file \`configure'
7955de1df9Smrg  autoheader   touch file \`config.h.in'
8055de1df9Smrg  autom4te     touch the output file, or create a stub one
8155de1df9Smrg  automake     touch all \`Makefile.in' files
8255de1df9Smrg  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
8355de1df9Smrg  flex         create \`lex.yy.c', if possible, from existing .c
8455de1df9Smrg  help2man     touch the output file
8555de1df9Smrg  lex          create \`lex.yy.c', if possible, from existing .c
8655de1df9Smrg  makeinfo     touch the output file
8755de1df9Smrg  tar          try tar, gnutar, gtar, then tar without non-portable flags
8855de1df9Smrg  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
8955de1df9Smrg
9055de1df9SmrgVersion suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
9155de1df9Smrg\`g' are ignored when checking the name.
9255de1df9Smrg
9355de1df9SmrgSend bug reports to <bug-automake@gnu.org>."
9455de1df9Smrg    exit $?
9555de1df9Smrg    ;;
9655de1df9Smrg
9755de1df9Smrg  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
9855de1df9Smrg    echo "missing $scriptversion (GNU Automake)"
9955de1df9Smrg    exit $?
10055de1df9Smrg    ;;
10155de1df9Smrg
10255de1df9Smrg  -*)
10355de1df9Smrg    echo 1>&2 "$0: Unknown \`$1' option"
10455de1df9Smrg    echo 1>&2 "Try \`$0 --help' for more information"
10555de1df9Smrg    exit 1
10655de1df9Smrg    ;;
10755de1df9Smrg
10855de1df9Smrgesac
10955de1df9Smrg
11055de1df9Smrg# normalize program name to check for.
11155de1df9Smrgprogram=`echo "$1" | sed '
11255de1df9Smrg  s/^gnu-//; t
11355de1df9Smrg  s/^gnu//; t
11455de1df9Smrg  s/^g//; t'`
11555de1df9Smrg
11655de1df9Smrg# Now exit if we have it, but it failed.  Also exit now if we
11755de1df9Smrg# don't have it and --version was passed (most likely to detect
11855de1df9Smrg# the program).  This is about non-GNU programs, so use $1 not
11955de1df9Smrg# $program.
12055de1df9Smrgcase $1 in
12155de1df9Smrg  lex*|yacc*)
12255de1df9Smrg    # Not GNU programs, they don't have --version.
12355de1df9Smrg    ;;
12455de1df9Smrg
12555de1df9Smrg  tar*)
12655de1df9Smrg    if test -n "$run"; then
12755de1df9Smrg       echo 1>&2 "ERROR: \`tar' requires --run"
12855de1df9Smrg       exit 1
12955de1df9Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
13055de1df9Smrg       exit 1
13155de1df9Smrg    fi
13255de1df9Smrg    ;;
13355de1df9Smrg
13455de1df9Smrg  *)
13555de1df9Smrg    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
13655de1df9Smrg       # We have it, but it failed.
13755de1df9Smrg       exit 1
13855de1df9Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
13955de1df9Smrg       # Could not run --version or --help.  This is probably someone
14055de1df9Smrg       # running `$TOOL --version' or `$TOOL --help' to check whether
14155de1df9Smrg       # $TOOL exists and not knowing $TOOL uses missing.
14255de1df9Smrg       exit 1
14355de1df9Smrg    fi
14455de1df9Smrg    ;;
14555de1df9Smrgesac
14655de1df9Smrg
14755de1df9Smrg# If it does not exist, or fails to run (possibly an outdated version),
14855de1df9Smrg# try to emulate it.
14955de1df9Smrgcase $program in
15055de1df9Smrg  aclocal*)
15155de1df9Smrg    echo 1>&2 "\
15255de1df9SmrgWARNING: \`$1' is $msg.  You should only need it if
15355de1df9Smrg         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
15455de1df9Smrg         to install the \`Automake' and \`Perl' packages.  Grab them from
15555de1df9Smrg         any GNU archive site."
15655de1df9Smrg    touch aclocal.m4
15755de1df9Smrg    ;;
15855de1df9Smrg
15955de1df9Smrg  autoconf*)
16055de1df9Smrg    echo 1>&2 "\
16155de1df9SmrgWARNING: \`$1' is $msg.  You should only need it if
16255de1df9Smrg         you modified \`${configure_ac}'.  You might want to install the
16355de1df9Smrg         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
16455de1df9Smrg         archive site."
16555de1df9Smrg    touch configure
16655de1df9Smrg    ;;
16755de1df9Smrg
16855de1df9Smrg  autoheader*)
16955de1df9Smrg    echo 1>&2 "\
17055de1df9SmrgWARNING: \`$1' is $msg.  You should only need it if
17155de1df9Smrg         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
17255de1df9Smrg         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
17355de1df9Smrg         from any GNU archive site."
17455de1df9Smrg    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
17555de1df9Smrg    test -z "$files" && files="config.h"
17655de1df9Smrg    touch_files=
17755de1df9Smrg    for f in $files; do
17855de1df9Smrg      case $f in
17955de1df9Smrg      *:*) touch_files="$touch_files "`echo "$f" |
18055de1df9Smrg				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
18155de1df9Smrg      *) touch_files="$touch_files $f.in";;
18255de1df9Smrg      esac
18355de1df9Smrg    done
18455de1df9Smrg    touch $touch_files
18555de1df9Smrg    ;;
18655de1df9Smrg
18755de1df9Smrg  automake*)
18855de1df9Smrg    echo 1>&2 "\
18955de1df9SmrgWARNING: \`$1' is $msg.  You should only need it if
19055de1df9Smrg         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
19155de1df9Smrg         You might want to install the \`Automake' and \`Perl' packages.
19255de1df9Smrg         Grab them from any GNU archive site."
19355de1df9Smrg    find . -type f -name Makefile.am -print |
19455de1df9Smrg	   sed 's/\.am$/.in/' |
19555de1df9Smrg	   while read f; do touch "$f"; done
19655de1df9Smrg    ;;
19755de1df9Smrg
19855de1df9Smrg  autom4te*)
19955de1df9Smrg    echo 1>&2 "\
20055de1df9SmrgWARNING: \`$1' is needed, but is $msg.
20155de1df9Smrg         You might have modified some files without having the
20255de1df9Smrg         proper tools for further handling them.
20355de1df9Smrg         You can get \`$1' as part of \`Autoconf' from any GNU
20455de1df9Smrg         archive site."
20555de1df9Smrg
20655de1df9Smrg    file=`echo "$*" | sed -n "$sed_output"`
20755de1df9Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
20855de1df9Smrg    if test -f "$file"; then
20955de1df9Smrg	touch $file
21055de1df9Smrg    else
21155de1df9Smrg	test -z "$file" || exec >$file
21255de1df9Smrg	echo "#! /bin/sh"
21355de1df9Smrg	echo "# Created by GNU Automake missing as a replacement of"
21455de1df9Smrg	echo "#  $ $@"
21555de1df9Smrg	echo "exit 0"
21655de1df9Smrg	chmod +x $file
21755de1df9Smrg	exit 1
21855de1df9Smrg    fi
21955de1df9Smrg    ;;
22055de1df9Smrg
22155de1df9Smrg  bison*|yacc*)
22255de1df9Smrg    echo 1>&2 "\
22355de1df9SmrgWARNING: \`$1' $msg.  You should only need it if
22455de1df9Smrg         you modified a \`.y' file.  You may need the \`Bison' package
22555de1df9Smrg         in order for those modifications to take effect.  You can get
22655de1df9Smrg         \`Bison' from any GNU archive site."
22755de1df9Smrg    rm -f y.tab.c y.tab.h
22855de1df9Smrg    if test $# -ne 1; then
22955de1df9Smrg        eval LASTARG="\${$#}"
23055de1df9Smrg	case $LASTARG in
23155de1df9Smrg	*.y)
23255de1df9Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
23355de1df9Smrg	    if test -f "$SRCFILE"; then
23455de1df9Smrg	         cp "$SRCFILE" y.tab.c
23555de1df9Smrg	    fi
23655de1df9Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
23755de1df9Smrg	    if test -f "$SRCFILE"; then
23855de1df9Smrg	         cp "$SRCFILE" y.tab.h
23955de1df9Smrg	    fi
24055de1df9Smrg	  ;;
24155de1df9Smrg	esac
24255de1df9Smrg    fi
24355de1df9Smrg    if test ! -f y.tab.h; then
24455de1df9Smrg	echo >y.tab.h
24555de1df9Smrg    fi
24655de1df9Smrg    if test ! -f y.tab.c; then
24755de1df9Smrg	echo 'main() { return 0; }' >y.tab.c
24855de1df9Smrg    fi
24955de1df9Smrg    ;;
25055de1df9Smrg
25155de1df9Smrg  lex*|flex*)
25255de1df9Smrg    echo 1>&2 "\
25355de1df9SmrgWARNING: \`$1' is $msg.  You should only need it if
25455de1df9Smrg         you modified a \`.l' file.  You may need the \`Flex' package
25555de1df9Smrg         in order for those modifications to take effect.  You can get
25655de1df9Smrg         \`Flex' from any GNU archive site."
25755de1df9Smrg    rm -f lex.yy.c
25855de1df9Smrg    if test $# -ne 1; then
25955de1df9Smrg        eval LASTARG="\${$#}"
26055de1df9Smrg	case $LASTARG in
26155de1df9Smrg	*.l)
26255de1df9Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
26355de1df9Smrg	    if test -f "$SRCFILE"; then
26455de1df9Smrg	         cp "$SRCFILE" lex.yy.c
26555de1df9Smrg	    fi
26655de1df9Smrg	  ;;
26755de1df9Smrg	esac
26855de1df9Smrg    fi
26955de1df9Smrg    if test ! -f lex.yy.c; then
27055de1df9Smrg	echo 'main() { return 0; }' >lex.yy.c
27155de1df9Smrg    fi
27255de1df9Smrg    ;;
27355de1df9Smrg
27455de1df9Smrg  help2man*)
27555de1df9Smrg    echo 1>&2 "\
27655de1df9SmrgWARNING: \`$1' is $msg.  You should only need it if
27755de1df9Smrg	 you modified a dependency of a manual page.  You may need the
27855de1df9Smrg	 \`Help2man' package in order for those modifications to take
27955de1df9Smrg	 effect.  You can get \`Help2man' from any GNU archive site."
28055de1df9Smrg
28155de1df9Smrg    file=`echo "$*" | sed -n "$sed_output"`
28255de1df9Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
28355de1df9Smrg    if test -f "$file"; then
28455de1df9Smrg	touch $file
28555de1df9Smrg    else
28655de1df9Smrg	test -z "$file" || exec >$file
28755de1df9Smrg	echo ".ab help2man is required to generate this page"
28855de1df9Smrg	exit $?
28955de1df9Smrg    fi
29055de1df9Smrg    ;;
29155de1df9Smrg
29255de1df9Smrg  makeinfo*)
29355de1df9Smrg    echo 1>&2 "\
29455de1df9SmrgWARNING: \`$1' is $msg.  You should only need it if
29555de1df9Smrg         you modified a \`.texi' or \`.texinfo' file, or any other file
29655de1df9Smrg         indirectly affecting the aspect of the manual.  The spurious
29755de1df9Smrg         call might also be the consequence of using a buggy \`make' (AIX,
29855de1df9Smrg         DU, IRIX).  You might want to install the \`Texinfo' package or
29955de1df9Smrg         the \`GNU make' package.  Grab either from any GNU archive site."
30055de1df9Smrg    # The file to touch is that specified with -o ...
30155de1df9Smrg    file=`echo "$*" | sed -n "$sed_output"`
30255de1df9Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
30355de1df9Smrg    if test -z "$file"; then
30455de1df9Smrg      # ... or it is the one specified with @setfilename ...
30555de1df9Smrg      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
30655de1df9Smrg      file=`sed -n '
30755de1df9Smrg	/^@setfilename/{
30855de1df9Smrg	  s/.* \([^ ]*\) *$/\1/
30955de1df9Smrg	  p
31055de1df9Smrg	  q
31155de1df9Smrg	}' $infile`
31255de1df9Smrg      # ... or it is derived from the source name (dir/f.texi becomes f.info)
31355de1df9Smrg      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
31455de1df9Smrg    fi
31555de1df9Smrg    # If the file does not exist, the user really needs makeinfo;
31655de1df9Smrg    # let's fail without touching anything.
31755de1df9Smrg    test -f $file || exit 1
31855de1df9Smrg    touch $file
31955de1df9Smrg    ;;
32055de1df9Smrg
32155de1df9Smrg  tar*)
32255de1df9Smrg    shift
32355de1df9Smrg
32455de1df9Smrg    # We have already tried tar in the generic part.
32555de1df9Smrg    # Look for gnutar/gtar before invocation to avoid ugly error
32655de1df9Smrg    # messages.
32755de1df9Smrg    if (gnutar --version > /dev/null 2>&1); then
32855de1df9Smrg       gnutar "$@" && exit 0
32955de1df9Smrg    fi
33055de1df9Smrg    if (gtar --version > /dev/null 2>&1); then
33155de1df9Smrg       gtar "$@" && exit 0
33255de1df9Smrg    fi
33355de1df9Smrg    firstarg="$1"
33455de1df9Smrg    if shift; then
33555de1df9Smrg	case $firstarg in
33655de1df9Smrg	*o*)
33755de1df9Smrg	    firstarg=`echo "$firstarg" | sed s/o//`
33855de1df9Smrg	    tar "$firstarg" "$@" && exit 0
33955de1df9Smrg	    ;;
34055de1df9Smrg	esac
34155de1df9Smrg	case $firstarg in
34255de1df9Smrg	*h*)
34355de1df9Smrg	    firstarg=`echo "$firstarg" | sed s/h//`
34455de1df9Smrg	    tar "$firstarg" "$@" && exit 0
34555de1df9Smrg	    ;;
34655de1df9Smrg	esac
34755de1df9Smrg    fi
34855de1df9Smrg
34955de1df9Smrg    echo 1>&2 "\
35055de1df9SmrgWARNING: I can't seem to be able to run \`tar' with the given arguments.
35155de1df9Smrg         You may want to install GNU tar or Free paxutils, or check the
35255de1df9Smrg         command line arguments."
35355de1df9Smrg    exit 1
35455de1df9Smrg    ;;
35555de1df9Smrg
35655de1df9Smrg  *)
35755de1df9Smrg    echo 1>&2 "\
35855de1df9SmrgWARNING: \`$1' is needed, and is $msg.
35955de1df9Smrg         You might have modified some files without having the
36055de1df9Smrg         proper tools for further handling them.  Check the \`README' file,
36155de1df9Smrg         it often tells you about the needed prerequisites for installing
36255de1df9Smrg         this package.  You may also peek at any GNU archive site, in case
36355de1df9Smrg         some other package would contain this missing \`$1' program."
36455de1df9Smrg    exit 1
36555de1df9Smrg    ;;
36655de1df9Smrgesac
36755de1df9Smrg
36855de1df9Smrgexit 0
36955de1df9Smrg
37055de1df9Smrg# Local variables:
37155de1df9Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
37255de1df9Smrg# time-stamp-start: "scriptversion="
37355de1df9Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
37455de1df9Smrg# time-stamp-time-zone: "UTC"
37555de1df9Smrg# time-stamp-end: "; # UTC"
37655de1df9Smrg# End:
377