summaryrefslogtreecommitdiff
path: root/missing
blob: 6a37006e8f0a69ddbf5b383c882beb60cbe04d12 (plain)
    1 #! /bin/sh
    2 # Common stub for a few missing GNU programs while installing.
    3 # Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
    4 # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
    5 
    6 # This program is free software; you can redistribute it and/or modify
    7 # it under the terms of the GNU General Public License as published by
    8 # the Free Software Foundation; either version 2, or (at your option)
    9 # any later version.
   10 
   11 # This program is distributed in the hope that it will be useful,
   12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
   13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   14 # GNU General Public License for more details.
   15 
   16 # You should have received a copy of the GNU General Public License
   17 # along with this program; if not, write to the Free Software
   18 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
   19 # 02111-1307, USA.
   20 
   21 # As a special exception to the GNU General Public License, if you
   22 # distribute this file as part of a program that contains a
   23 # configuration script generated by Autoconf, you may include it under
   24 # the same distribution terms that you use for the rest of that program.
   25 
   26 if test $# -eq 0; then
   27   echo 1>&2 "Try \`$0 --help' for more information"
   28   exit 1
   29 fi
   30 
   31 run=:
   32 
   33 # In the cases where this matters, `missing' is being run in the
   34 # srcdir already.
   35 if test -f configure.ac; then
   36   configure_ac=configure.ac
   37 else
   38   configure_ac=configure.in
   39 fi
   40 
   41 case "$1" in
   42 --run)
   43   # Try to run requested program, and just exit if it succeeds.
   44   run=
   45   shift
   46   "$@" && exit 0
   47   ;;
   48 esac
   49 
   50 # If it does not exist, or fails to run (possibly an outdated version),
   51 # try to emulate it.
   52 case "$1" in
   53 
   54   -h|--h|--he|--hel|--help)
   55     echo "\
   56 $0 [OPTION]... PROGRAM [ARGUMENT]...
   57 
   58 Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
   59 error status if there is no known handling for PROGRAM.
   60 
   61 Options:
   62   -h, --help      display this help and exit
   63   -v, --version   output version information and exit
   64   --run           try to run the given command, and emulate it if it fails
   65 
   66 Supported PROGRAM values:
   67   aclocal      touch file \`aclocal.m4'
   68   autoconf     touch file \`configure'
   69   autoheader   touch file \`config.h.in'
   70   automake     touch all \`Makefile.in' files
   71   bison        create \`y.tab.[ch]', if possible, from existing .[ch]
   72   flex         create \`lex.yy.c', if possible, from existing .c
   73   help2man     touch the output file
   74   lex          create \`lex.yy.c', if possible, from existing .c
   75   makeinfo     touch the output file
   76   tar          try tar, gnutar, gtar, then tar without non-portable flags
   77   yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
   78     ;;
   79 
   80   -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
   81     echo "missing 0.4 - GNU automake"
   82     ;;
   83 
   84   -*)
   85     echo 1>&2 "$0: Unknown \`$1' option"
   86     echo 1>&2 "Try \`$0 --help' for more information"
   87     exit 1
   88     ;;
   89 
   90   aclocal*)
   91     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
   92        # We have it, but it failed.
   93        exit 1
   94     fi
   95 
   96     echo 1>&2 "\
   97 WARNING: \`$1' is missing on your system.  You should only need it if
   98          you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
   99          to install the \`Automake' and \`Perl' packages.  Grab them from
  100          any GNU archive site."
  101     touch aclocal.m4
  102     ;;
  103 
  104   autoconf)
  105     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
  106        # We have it, but it failed.
  107        exit 1
  108     fi
  109 
  110     echo 1>&2 "\
  111 WARNING: \`$1' is missing on your system.  You should only need it if
  112          you modified \`${configure_ac}'.  You might want to install the
  113          \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
  114          archive site."
  115     touch configure
  116     ;;
  117 
  118   autoheader)
  119     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
  120        # We have it, but it failed.
  121        exit 1
  122     fi
  123 
  124     echo 1>&2 "\
  125 WARNING: \`$1' is missing on your system.  You should only need it if
  126          you modified \`acconfig.h' or \`${configure_ac}'.  You might want
  127          to install the \`Autoconf' and \`GNU m4' packages.  Grab them
  128          from any GNU archive site."
  129     files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
  130     test -z "$files" && files="config.h"
  131     touch_files=
  132     for f in $files; do
  133       case "$f" in
  134       *:*) touch_files="$touch_files "`echo "$f" |
  135 				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
  136       *) touch_files="$touch_files $f.in";;
  137       esac
  138     done
  139     touch $touch_files
  140     ;;
  141 
  142   automake*)
  143     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
  144        # We have it, but it failed.
  145        exit 1
  146     fi
  147 
  148     echo 1>&2 "\
  149 WARNING: \`$1' is missing on your system.  You should only need it if
  150          you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
  151          You might want to install the \`Automake' and \`Perl' packages.
  152          Grab them from any GNU archive site."
  153     find . -type f -name Makefile.am -print |
  154 	   sed 's/\.am$/.in/' |
  155 	   while read f; do touch "$f"; done
  156     ;;
  157 
  158   autom4te)
  159     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
  160        # We have it, but it failed.
  161        exit 1
  162     fi
  163 
  164     echo 1>&2 "\
  165 WARNING: \`$1' is needed, and you do not seem to have it handy on your
  166          system.  You might have modified some files without having the
  167          proper tools for further handling them.
  168          You can get \`$1Help2man' as part of \`Autoconf' from any GNU
  169          archive site."
  170 
  171     file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
  172     test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
  173     if test -f "$file"; then
  174 	touch $file
  175     else
  176 	test -z "$file" || exec >$file
  177 	echo "#! /bin/sh"
  178 	echo "# Created by GNU Automake missing as a replacement of"
  179 	echo "#  $ $@"
  180 	echo "exit 0"
  181 	chmod +x $file
  182 	exit 1
  183     fi
  184     ;;
  185 
  186   bison|yacc)
  187     echo 1>&2 "\
  188 WARNING: \`$1' is missing on your system.  You should only need it if
  189          you modified a \`.y' file.  You may need the \`Bison' package
  190          in order for those modifications to take effect.  You can get
  191          \`Bison' from any GNU archive site."
  192     rm -f y.tab.c y.tab.h
  193     if [ $# -ne 1 ]; then
  194         eval LASTARG="\${$#}"
  195 	case "$LASTARG" in
  196 	*.y)
  197 	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
  198 	    if [ -f "$SRCFILE" ]; then
  199 	         cp "$SRCFILE" y.tab.c
  200 	    fi
  201 	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
  202 	    if [ -f "$SRCFILE" ]; then
  203 	         cp "$SRCFILE" y.tab.h
  204 	    fi
  205 	  ;;
  206 	esac
  207     fi
  208     if [ ! -f y.tab.h ]; then
  209 	echo >y.tab.h
  210     fi
  211     if [ ! -f y.tab.c ]; then
  212 	echo 'main() { return 0; }' >y.tab.c
  213     fi
  214     ;;
  215 
  216   lex|flex)
  217     echo 1>&2 "\
  218 WARNING: \`$1' is missing on your system.  You should only need it if
  219          you modified a \`.l' file.  You may need the \`Flex' package
  220          in order for those modifications to take effect.  You can get
  221          \`Flex' from any GNU archive site."
  222     rm -f lex.yy.c
  223     if [ $# -ne 1 ]; then
  224         eval LASTARG="\${$#}"
  225 	case "$LASTARG" in
  226 	*.l)
  227 	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
  228 	    if [ -f "$SRCFILE" ]; then
  229 	         cp "$SRCFILE" lex.yy.c
  230 	    fi
  231 	  ;;
  232 	esac
  233     fi
  234     if [ ! -f lex.yy.c ]; then
  235 	echo 'main() { return 0; }' >lex.yy.c
  236     fi
  237     ;;
  238 
  239   help2man)
  240     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
  241        # We have it, but it failed.
  242        exit 1
  243     fi
  244 
  245     echo 1>&2 "\
  246 WARNING: \`$1' is missing on your system.  You should only need it if
  247 	 you modified a dependency of a manual page.  You may need the
  248 	 \`Help2man' package in order for those modifications to take
  249 	 effect.  You can get \`Help2man' from any GNU archive site."
  250 
  251     file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
  252     if test -z "$file"; then
  253 	file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
  254     fi
  255     if [ -f "$file" ]; then
  256 	touch $file
  257     else
  258 	test -z "$file" || exec >$file
  259 	echo ".ab help2man is required to generate this page"
  260 	exit 1
  261     fi
  262     ;;
  263 
  264   makeinfo)
  265     if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
  266        # We have makeinfo, but it failed.
  267        exit 1
  268     fi
  269 
  270     echo 1>&2 "\
  271 WARNING: \`$1' is missing on your system.  You should only need it if
  272          you modified a \`.texi' or \`.texinfo' file, or any other file
  273          indirectly affecting the aspect of the manual.  The spurious
  274          call might also be the consequence of using a buggy \`make' (AIX,
  275          DU, IRIX).  You might want to install the \`Texinfo' package or
  276          the \`GNU make' package.  Grab either from any GNU archive site."
  277     file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
  278     if test -z "$file"; then
  279       file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
  280       file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
  281     fi
  282     touch $file
  283     ;;
  284 
  285   tar)
  286     shift
  287     if test -n "$run"; then
  288       echo 1>&2 "ERROR: \`tar' requires --run"
  289       exit 1
  290     fi
  291 
  292     # We have already tried tar in the generic part.
  293     # Look for gnutar/gtar before invocation to avoid ugly error
  294     # messages.
  295     if (gnutar --version > /dev/null 2>&1); then
  296        gnutar "$@" && exit 0
  297     fi
  298     if (gtar --version > /dev/null 2>&1); then
  299        gtar "$@" && exit 0
  300     fi
  301     firstarg="$1"
  302     if shift; then
  303 	case "$firstarg" in
  304 	*o*)
  305 	    firstarg=`echo "$firstarg" | sed s/o//`
  306 	    tar "$firstarg" "$@" && exit 0
  307 	    ;;
  308 	esac
  309 	case "$firstarg" in
  310 	*h*)
  311 	    firstarg=`echo "$firstarg" | sed s/h//`
  312 	    tar "$firstarg" "$@" && exit 0
  313 	    ;;
  314 	esac
  315     fi
  316 
  317     echo 1>&2 "\
  318 WARNING: I can't seem to be able to run \`tar' with the given arguments.
  319          You may want to install GNU tar or Free paxutils, or check the
  320          command line arguments."
  321     exit 1
  322     ;;
  323 
  324   *)
  325     echo 1>&2 "\
  326 WARNING: \`$1' is needed, and you do not seem to have it handy on your
  327          system.  You might have modified some files without having the
  328          proper tools for further handling them.  Check the \`README' file,
  329          it often tells you about the needed prerequirements for installing
  330          this package.  You may also peek at any GNU archive site, in case
  331          some other package would contain this missing \`$1' program."
  332     exit 1
  333     ;;
  334 esac
  335 
  336 exit 0

Generated by cgit