missing revision 0eb10989
10eb10989Smrg#! /bin/sh 20eb10989Smrg# Common stub for a few missing GNU programs while installing. 30eb10989Smrg 40eb10989Smrgscriptversion=2005-06-08.21 50eb10989Smrg 60eb10989Smrg# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005 70eb10989Smrg# Free Software Foundation, Inc. 80eb10989Smrg# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. 90eb10989Smrg 100eb10989Smrg# This program is free software; you can redistribute it and/or modify 110eb10989Smrg# it under the terms of the GNU General Public License as published by 120eb10989Smrg# the Free Software Foundation; either version 2, or (at your option) 130eb10989Smrg# any later version. 140eb10989Smrg 150eb10989Smrg# This program is distributed in the hope that it will be useful, 160eb10989Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 170eb10989Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 180eb10989Smrg# GNU General Public License for more details. 190eb10989Smrg 200eb10989Smrg# You should have received a copy of the GNU General Public License 210eb10989Smrg# along with this program; if not, write to the Free Software 220eb10989Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 230eb10989Smrg# 02110-1301, USA. 240eb10989Smrg 250eb10989Smrg# As a special exception to the GNU General Public License, if you 260eb10989Smrg# distribute this file as part of a program that contains a 270eb10989Smrg# configuration script generated by Autoconf, you may include it under 280eb10989Smrg# the same distribution terms that you use for the rest of that program. 290eb10989Smrg 300eb10989Smrgif test $# -eq 0; then 310eb10989Smrg echo 1>&2 "Try \`$0 --help' for more information" 320eb10989Smrg exit 1 330eb10989Smrgfi 340eb10989Smrg 350eb10989Smrgrun=: 360eb10989Smrg 370eb10989Smrg# In the cases where this matters, `missing' is being run in the 380eb10989Smrg# srcdir already. 390eb10989Smrgif test -f configure.ac; then 400eb10989Smrg configure_ac=configure.ac 410eb10989Smrgelse 420eb10989Smrg configure_ac=configure.in 430eb10989Smrgfi 440eb10989Smrg 450eb10989Smrgmsg="missing on your system" 460eb10989Smrg 470eb10989Smrgcase "$1" in 480eb10989Smrg--run) 490eb10989Smrg # Try to run requested program, and just exit if it succeeds. 500eb10989Smrg run= 510eb10989Smrg shift 520eb10989Smrg "$@" && exit 0 530eb10989Smrg # Exit code 63 means version mismatch. This often happens 540eb10989Smrg # when the user try to use an ancient version of a tool on 550eb10989Smrg # a file that requires a minimum version. In this case we 560eb10989Smrg # we should proceed has if the program had been absent, or 570eb10989Smrg # if --run hadn't been passed. 580eb10989Smrg if test $? = 63; then 590eb10989Smrg run=: 600eb10989Smrg msg="probably too old" 610eb10989Smrg fi 620eb10989Smrg ;; 630eb10989Smrg 640eb10989Smrg -h|--h|--he|--hel|--help) 650eb10989Smrg echo "\ 660eb10989Smrg$0 [OPTION]... PROGRAM [ARGUMENT]... 670eb10989Smrg 680eb10989SmrgHandle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an 690eb10989Smrgerror status if there is no known handling for PROGRAM. 700eb10989Smrg 710eb10989SmrgOptions: 720eb10989Smrg -h, --help display this help and exit 730eb10989Smrg -v, --version output version information and exit 740eb10989Smrg --run try to run the given command, and emulate it if it fails 750eb10989Smrg 760eb10989SmrgSupported PROGRAM values: 770eb10989Smrg aclocal touch file \`aclocal.m4' 780eb10989Smrg autoconf touch file \`configure' 790eb10989Smrg autoheader touch file \`config.h.in' 800eb10989Smrg automake touch all \`Makefile.in' files 810eb10989Smrg bison create \`y.tab.[ch]', if possible, from existing .[ch] 820eb10989Smrg flex create \`lex.yy.c', if possible, from existing .c 830eb10989Smrg help2man touch the output file 840eb10989Smrg lex create \`lex.yy.c', if possible, from existing .c 850eb10989Smrg makeinfo touch the output file 860eb10989Smrg tar try tar, gnutar, gtar, then tar without non-portable flags 870eb10989Smrg yacc create \`y.tab.[ch]', if possible, from existing .[ch] 880eb10989Smrg 890eb10989SmrgSend bug reports to <bug-automake@gnu.org>." 900eb10989Smrg exit $? 910eb10989Smrg ;; 920eb10989Smrg 930eb10989Smrg -v|--v|--ve|--ver|--vers|--versi|--versio|--version) 940eb10989Smrg echo "missing $scriptversion (GNU Automake)" 950eb10989Smrg exit $? 960eb10989Smrg ;; 970eb10989Smrg 980eb10989Smrg -*) 990eb10989Smrg echo 1>&2 "$0: Unknown \`$1' option" 1000eb10989Smrg echo 1>&2 "Try \`$0 --help' for more information" 1010eb10989Smrg exit 1 1020eb10989Smrg ;; 1030eb10989Smrg 1040eb10989Smrgesac 1050eb10989Smrg 1060eb10989Smrg# Now exit if we have it, but it failed. Also exit now if we 1070eb10989Smrg# don't have it and --version was passed (most likely to detect 1080eb10989Smrg# the program). 1090eb10989Smrgcase "$1" in 1100eb10989Smrg lex|yacc) 1110eb10989Smrg # Not GNU programs, they don't have --version. 1120eb10989Smrg ;; 1130eb10989Smrg 1140eb10989Smrg tar) 1150eb10989Smrg if test -n "$run"; then 1160eb10989Smrg echo 1>&2 "ERROR: \`tar' requires --run" 1170eb10989Smrg exit 1 1180eb10989Smrg elif test "x$2" = "x--version" || test "x$2" = "x--help"; then 1190eb10989Smrg exit 1 1200eb10989Smrg fi 1210eb10989Smrg ;; 1220eb10989Smrg 1230eb10989Smrg *) 1240eb10989Smrg if test -z "$run" && ($1 --version) > /dev/null 2>&1; then 1250eb10989Smrg # We have it, but it failed. 1260eb10989Smrg exit 1 1270eb10989Smrg elif test "x$2" = "x--version" || test "x$2" = "x--help"; then 1280eb10989Smrg # Could not run --version or --help. This is probably someone 1290eb10989Smrg # running `$TOOL --version' or `$TOOL --help' to check whether 1300eb10989Smrg # $TOOL exists and not knowing $TOOL uses missing. 1310eb10989Smrg exit 1 1320eb10989Smrg fi 1330eb10989Smrg ;; 1340eb10989Smrgesac 1350eb10989Smrg 1360eb10989Smrg# If it does not exist, or fails to run (possibly an outdated version), 1370eb10989Smrg# try to emulate it. 1380eb10989Smrgcase "$1" in 1390eb10989Smrg aclocal*) 1400eb10989Smrg echo 1>&2 "\ 1410eb10989SmrgWARNING: \`$1' is $msg. You should only need it if 1420eb10989Smrg you modified \`acinclude.m4' or \`${configure_ac}'. You might want 1430eb10989Smrg to install the \`Automake' and \`Perl' packages. Grab them from 1440eb10989Smrg any GNU archive site." 1450eb10989Smrg touch aclocal.m4 1460eb10989Smrg ;; 1470eb10989Smrg 1480eb10989Smrg autoconf) 1490eb10989Smrg echo 1>&2 "\ 1500eb10989SmrgWARNING: \`$1' is $msg. You should only need it if 1510eb10989Smrg you modified \`${configure_ac}'. You might want to install the 1520eb10989Smrg \`Autoconf' and \`GNU m4' packages. Grab them from any GNU 1530eb10989Smrg archive site." 1540eb10989Smrg touch configure 1550eb10989Smrg ;; 1560eb10989Smrg 1570eb10989Smrg autoheader) 1580eb10989Smrg echo 1>&2 "\ 1590eb10989SmrgWARNING: \`$1' is $msg. You should only need it if 1600eb10989Smrg you modified \`acconfig.h' or \`${configure_ac}'. You might want 1610eb10989Smrg to install the \`Autoconf' and \`GNU m4' packages. Grab them 1620eb10989Smrg from any GNU archive site." 1630eb10989Smrg files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` 1640eb10989Smrg test -z "$files" && files="config.h" 1650eb10989Smrg touch_files= 1660eb10989Smrg for f in $files; do 1670eb10989Smrg case "$f" in 1680eb10989Smrg *:*) touch_files="$touch_files "`echo "$f" | 1690eb10989Smrg sed -e 's/^[^:]*://' -e 's/:.*//'`;; 1700eb10989Smrg *) touch_files="$touch_files $f.in";; 1710eb10989Smrg esac 1720eb10989Smrg done 1730eb10989Smrg touch $touch_files 1740eb10989Smrg ;; 1750eb10989Smrg 1760eb10989Smrg automake*) 1770eb10989Smrg echo 1>&2 "\ 1780eb10989SmrgWARNING: \`$1' is $msg. You should only need it if 1790eb10989Smrg you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. 1800eb10989Smrg You might want to install the \`Automake' and \`Perl' packages. 1810eb10989Smrg Grab them from any GNU archive site." 1820eb10989Smrg find . -type f -name Makefile.am -print | 1830eb10989Smrg sed 's/\.am$/.in/' | 1840eb10989Smrg while read f; do touch "$f"; done 1850eb10989Smrg ;; 1860eb10989Smrg 1870eb10989Smrg autom4te) 1880eb10989Smrg echo 1>&2 "\ 1890eb10989SmrgWARNING: \`$1' is needed, but is $msg. 1900eb10989Smrg You might have modified some files without having the 1910eb10989Smrg proper tools for further handling them. 1920eb10989Smrg You can get \`$1' as part of \`Autoconf' from any GNU 1930eb10989Smrg archive site." 1940eb10989Smrg 1950eb10989Smrg file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` 1960eb10989Smrg test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` 1970eb10989Smrg if test -f "$file"; then 1980eb10989Smrg touch $file 1990eb10989Smrg else 2000eb10989Smrg test -z "$file" || exec >$file 2010eb10989Smrg echo "#! /bin/sh" 2020eb10989Smrg echo "# Created by GNU Automake missing as a replacement of" 2030eb10989Smrg echo "# $ $@" 2040eb10989Smrg echo "exit 0" 2050eb10989Smrg chmod +x $file 2060eb10989Smrg exit 1 2070eb10989Smrg fi 2080eb10989Smrg ;; 2090eb10989Smrg 2100eb10989Smrg bison|yacc) 2110eb10989Smrg echo 1>&2 "\ 2120eb10989SmrgWARNING: \`$1' $msg. You should only need it if 2130eb10989Smrg you modified a \`.y' file. You may need the \`Bison' package 2140eb10989Smrg in order for those modifications to take effect. You can get 2150eb10989Smrg \`Bison' from any GNU archive site." 2160eb10989Smrg rm -f y.tab.c y.tab.h 2170eb10989Smrg if [ $# -ne 1 ]; then 2180eb10989Smrg eval LASTARG="\${$#}" 2190eb10989Smrg case "$LASTARG" in 2200eb10989Smrg *.y) 2210eb10989Smrg SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` 2220eb10989Smrg if [ -f "$SRCFILE" ]; then 2230eb10989Smrg cp "$SRCFILE" y.tab.c 2240eb10989Smrg fi 2250eb10989Smrg SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` 2260eb10989Smrg if [ -f "$SRCFILE" ]; then 2270eb10989Smrg cp "$SRCFILE" y.tab.h 2280eb10989Smrg fi 2290eb10989Smrg ;; 2300eb10989Smrg esac 2310eb10989Smrg fi 2320eb10989Smrg if [ ! -f y.tab.h ]; then 2330eb10989Smrg echo >y.tab.h 2340eb10989Smrg fi 2350eb10989Smrg if [ ! -f y.tab.c ]; then 2360eb10989Smrg echo 'main() { return 0; }' >y.tab.c 2370eb10989Smrg fi 2380eb10989Smrg ;; 2390eb10989Smrg 2400eb10989Smrg lex|flex) 2410eb10989Smrg echo 1>&2 "\ 2420eb10989SmrgWARNING: \`$1' is $msg. You should only need it if 2430eb10989Smrg you modified a \`.l' file. You may need the \`Flex' package 2440eb10989Smrg in order for those modifications to take effect. You can get 2450eb10989Smrg \`Flex' from any GNU archive site." 2460eb10989Smrg rm -f lex.yy.c 2470eb10989Smrg if [ $# -ne 1 ]; then 2480eb10989Smrg eval LASTARG="\${$#}" 2490eb10989Smrg case "$LASTARG" in 2500eb10989Smrg *.l) 2510eb10989Smrg SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` 2520eb10989Smrg if [ -f "$SRCFILE" ]; then 2530eb10989Smrg cp "$SRCFILE" lex.yy.c 2540eb10989Smrg fi 2550eb10989Smrg ;; 2560eb10989Smrg esac 2570eb10989Smrg fi 2580eb10989Smrg if [ ! -f lex.yy.c ]; then 2590eb10989Smrg echo 'main() { return 0; }' >lex.yy.c 2600eb10989Smrg fi 2610eb10989Smrg ;; 2620eb10989Smrg 2630eb10989Smrg help2man) 2640eb10989Smrg echo 1>&2 "\ 2650eb10989SmrgWARNING: \`$1' is $msg. You should only need it if 2660eb10989Smrg you modified a dependency of a manual page. You may need the 2670eb10989Smrg \`Help2man' package in order for those modifications to take 2680eb10989Smrg effect. You can get \`Help2man' from any GNU archive site." 2690eb10989Smrg 2700eb10989Smrg file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` 2710eb10989Smrg if test -z "$file"; then 2720eb10989Smrg file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` 2730eb10989Smrg fi 2740eb10989Smrg if [ -f "$file" ]; then 2750eb10989Smrg touch $file 2760eb10989Smrg else 2770eb10989Smrg test -z "$file" || exec >$file 2780eb10989Smrg echo ".ab help2man is required to generate this page" 2790eb10989Smrg exit 1 2800eb10989Smrg fi 2810eb10989Smrg ;; 2820eb10989Smrg 2830eb10989Smrg makeinfo) 2840eb10989Smrg echo 1>&2 "\ 2850eb10989SmrgWARNING: \`$1' is $msg. You should only need it if 2860eb10989Smrg you modified a \`.texi' or \`.texinfo' file, or any other file 2870eb10989Smrg indirectly affecting the aspect of the manual. The spurious 2880eb10989Smrg call might also be the consequence of using a buggy \`make' (AIX, 2890eb10989Smrg DU, IRIX). You might want to install the \`Texinfo' package or 2900eb10989Smrg the \`GNU make' package. Grab either from any GNU archive site." 2910eb10989Smrg # The file to touch is that specified with -o ... 2920eb10989Smrg file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` 2930eb10989Smrg if test -z "$file"; then 2940eb10989Smrg # ... or it is the one specified with @setfilename ... 2950eb10989Smrg infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` 2960eb10989Smrg file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile` 2970eb10989Smrg # ... or it is derived from the source name (dir/f.texi becomes f.info) 2980eb10989Smrg test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info 2990eb10989Smrg fi 3000eb10989Smrg # If the file does not exist, the user really needs makeinfo; 3010eb10989Smrg # let's fail without touching anything. 3020eb10989Smrg test -f $file || exit 1 3030eb10989Smrg touch $file 3040eb10989Smrg ;; 3050eb10989Smrg 3060eb10989Smrg tar) 3070eb10989Smrg shift 3080eb10989Smrg 3090eb10989Smrg # We have already tried tar in the generic part. 3100eb10989Smrg # Look for gnutar/gtar before invocation to avoid ugly error 3110eb10989Smrg # messages. 3120eb10989Smrg if (gnutar --version > /dev/null 2>&1); then 3130eb10989Smrg gnutar "$@" && exit 0 3140eb10989Smrg fi 3150eb10989Smrg if (gtar --version > /dev/null 2>&1); then 3160eb10989Smrg gtar "$@" && exit 0 3170eb10989Smrg fi 3180eb10989Smrg firstarg="$1" 3190eb10989Smrg if shift; then 3200eb10989Smrg case "$firstarg" in 3210eb10989Smrg *o*) 3220eb10989Smrg firstarg=`echo "$firstarg" | sed s/o//` 3230eb10989Smrg tar "$firstarg" "$@" && exit 0 3240eb10989Smrg ;; 3250eb10989Smrg esac 3260eb10989Smrg case "$firstarg" in 3270eb10989Smrg *h*) 3280eb10989Smrg firstarg=`echo "$firstarg" | sed s/h//` 3290eb10989Smrg tar "$firstarg" "$@" && exit 0 3300eb10989Smrg ;; 3310eb10989Smrg esac 3320eb10989Smrg fi 3330eb10989Smrg 3340eb10989Smrg echo 1>&2 "\ 3350eb10989SmrgWARNING: I can't seem to be able to run \`tar' with the given arguments. 3360eb10989Smrg You may want to install GNU tar or Free paxutils, or check the 3370eb10989Smrg command line arguments." 3380eb10989Smrg exit 1 3390eb10989Smrg ;; 3400eb10989Smrg 3410eb10989Smrg *) 3420eb10989Smrg echo 1>&2 "\ 3430eb10989SmrgWARNING: \`$1' is needed, and is $msg. 3440eb10989Smrg You might have modified some files without having the 3450eb10989Smrg proper tools for further handling them. Check the \`README' file, 3460eb10989Smrg it often tells you about the needed prerequisites for installing 3470eb10989Smrg this package. You may also peek at any GNU archive site, in case 3480eb10989Smrg some other package would contain this missing \`$1' program." 3490eb10989Smrg exit 1 3500eb10989Smrg ;; 3510eb10989Smrgesac 3520eb10989Smrg 3530eb10989Smrgexit 0 3540eb10989Smrg 3550eb10989Smrg# Local variables: 3560eb10989Smrg# eval: (add-hook 'write-file-hooks 'time-stamp) 3570eb10989Smrg# time-stamp-start: "scriptversion=" 3580eb10989Smrg# time-stamp-format: "%:y-%02m-%02d.%02H" 3590eb10989Smrg# time-stamp-end: "$" 3600eb10989Smrg# End: 361