Home | History | Annotate | Line # | Download | only in dist
      1 #! /bin/sh
      2 # Common stub for a few missing GNU programs while installing.
      3 # Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
      4 # Originally by Fran,cois Pinard <pinard (at] 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.3 - 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     echo 1>&2 "\
     92 WARNING: \`$1' is missing on your system.  You should only need it if
     93          you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
     94          to install the \`Automake' and \`Perl' packages.  Grab them from
     95          any GNU archive site."
     96     touch aclocal.m4
     97     ;;
     98 
     99   autoconf)
    100     echo 1>&2 "\
    101 WARNING: \`$1' is missing on your system.  You should only need it if
    102          you modified \`${configure_ac}'.  You might want to install the
    103          \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
    104          archive site."
    105     touch configure
    106     ;;
    107 
    108   autoheader)
    109     echo 1>&2 "\
    110 WARNING: \`$1' is missing on your system.  You should only need it if
    111          you modified \`acconfig.h' or \`${configure_ac}'.  You might want
    112          to install the \`Autoconf' and \`GNU m4' packages.  Grab them
    113          from any GNU archive site."
    114     files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
    115     test -z "$files" && files="config.h"
    116     touch_files=
    117     for f in $files; do
    118       case "$f" in
    119       *:*) touch_files="$touch_files "`echo "$f" |
    120 				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
    121       *) touch_files="$touch_files $f.in";;
    122       esac
    123     done
    124     touch $touch_files
    125     ;;
    126 
    127   automake)
    128     echo 1>&2 "\
    129 WARNING: \`$1' is missing on your system.  You should only need it if
    130          you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
    131          You might want to install the \`Automake' and \`Perl' packages.
    132          Grab them from any GNU archive site."
    133     find . -type f -name Makefile.am -print |
    134 	   sed 's/\.am$/.in/' |
    135 	   while read f; do touch "$f"; done
    136     ;;
    137 
    138   bison|yacc)
    139     echo 1>&2 "\
    140 WARNING: \`$1' is missing on your system.  You should only need it if
    141          you modified a \`.y' file.  You may need the \`Bison' package
    142          in order for those modifications to take effect.  You can get
    143          \`Bison' from any GNU archive site."
    144     rm -f y.tab.c y.tab.h
    145     if [ $# -ne 1 ]; then
    146         eval LASTARG="\${$#}"
    147 	case "$LASTARG" in
    148 	*.y)
    149 	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
    150 	    if [ -f "$SRCFILE" ]; then
    151 	         cp "$SRCFILE" y.tab.c
    152 	    fi
    153 	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
    154 	    if [ -f "$SRCFILE" ]; then
    155 	         cp "$SRCFILE" y.tab.h
    156 	    fi
    157 	  ;;
    158 	esac
    159     fi
    160     if [ ! -f y.tab.h ]; then
    161 	echo >y.tab.h
    162     fi
    163     if [ ! -f y.tab.c ]; then
    164 	echo 'main() { return 0; }' >y.tab.c
    165     fi
    166     ;;
    167 
    168   lex|flex)
    169     echo 1>&2 "\
    170 WARNING: \`$1' is missing on your system.  You should only need it if
    171          you modified a \`.l' file.  You may need the \`Flex' package
    172          in order for those modifications to take effect.  You can get
    173          \`Flex' from any GNU archive site."
    174     rm -f lex.yy.c
    175     if [ $# -ne 1 ]; then
    176         eval LASTARG="\${$#}"
    177 	case "$LASTARG" in
    178 	*.l)
    179 	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
    180 	    if [ -f "$SRCFILE" ]; then
    181 	         cp "$SRCFILE" lex.yy.c
    182 	    fi
    183 	  ;;
    184 	esac
    185     fi
    186     if [ ! -f lex.yy.c ]; then
    187 	echo 'main() { return 0; }' >lex.yy.c
    188     fi
    189     ;;
    190 
    191   help2man)
    192     echo 1>&2 "\
    193 WARNING: \`$1' is missing on your system.  You should only need it if
    194 	 you modified a dependency of a manual page.  You may need the
    195 	 \`Help2man' package in order for those modifications to take
    196 	 effect.  You can get \`Help2man' from any GNU archive site."
    197 
    198     file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
    199     if test -z "$file"; then
    200 	file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
    201     fi
    202     if [ -f "$file" ]; then
    203 	touch $file
    204     else
    205 	test -z "$file" || exec >$file
    206 	echo ".ab help2man is required to generate this page"
    207 	exit 1
    208     fi
    209     ;;
    210 
    211   makeinfo)
    212     if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
    213        # We have makeinfo, but it failed.
    214        exit 1
    215     fi
    216 
    217     echo 1>&2 "\
    218 WARNING: \`$1' is missing on your system.  You should only need it if
    219          you modified a \`.texi' or \`.texinfo' file, or any other file
    220          indirectly affecting the aspect of the manual.  The spurious
    221          call might also be the consequence of using a buggy \`make' (AIX,
    222          DU, IRIX).  You might want to install the \`Texinfo' package or
    223          the \`GNU make' package.  Grab either from any GNU archive site."
    224     file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
    225     if test -z "$file"; then
    226       file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
    227       file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
    228     fi
    229     touch $file
    230     ;;
    231 
    232   tar)
    233     shift
    234     if test -n "$run"; then
    235       echo 1>&2 "ERROR: \`tar' requires --run"
    236       exit 1
    237     fi
    238 
    239     # We have already tried tar in the generic part.
    240     # Look for gnutar/gtar before invocation to avoid ugly error
    241     # messages.
    242     if (gnutar --version > /dev/null 2>&1); then
    243        gnutar ${1+"$@"} && exit 0
    244     fi
    245     if (gtar --version > /dev/null 2>&1); then
    246        gtar ${1+"$@"} && exit 0
    247     fi
    248     firstarg="$1"
    249     if shift; then
    250 	case "$firstarg" in
    251 	*o*)
    252 	    firstarg=`echo "$firstarg" | sed s/o//`
    253 	    tar "$firstarg" ${1+"$@"} && exit 0
    254 	    ;;
    255 	esac
    256 	case "$firstarg" in
    257 	*h*)
    258 	    firstarg=`echo "$firstarg" | sed s/h//`
    259 	    tar "$firstarg" ${1+"$@"} && exit 0
    260 	    ;;
    261 	esac
    262     fi
    263 
    264     echo 1>&2 "\
    265 WARNING: I can't seem to be able to run \`tar' with the given arguments.
    266          You may want to install GNU tar or Free paxutils, or check the
    267          command line arguments."
    268     exit 1
    269     ;;
    270 
    271   *)
    272     echo 1>&2 "\
    273 WARNING: \`$1' is needed, and you do not seem to have it handy on your
    274          system.  You might have modified some files without having the
    275          proper tools for further handling them.  Check the \`README' file,
    276          it often tells you about the needed prerequirements for installing
    277          this package.  You may also peek at any GNU archive site, in case
    278          some other package would contain this missing \`$1' program."
    279     exit 1
    280     ;;
    281 esac
    282 
    283 exit 0
    284