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