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