missing revision 9b41ff1a
1fdb3d228Smrg#! /bin/sh 2fdb3d228Smrg# Common stub for a few missing GNU programs while installing. 39b41ff1aSmrg 49b41ff1aSmrgscriptversion=2009-04-28.21; # UTC 59b41ff1aSmrg 69b41ff1aSmrg# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 79b41ff1aSmrg# 2008, 2009 Free Software Foundation, Inc. 8fdb3d228Smrg# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. 9fdb3d228Smrg 10fdb3d228Smrg# This program is free software; you can redistribute it and/or modify 11fdb3d228Smrg# it under the terms of the GNU General Public License as published by 12fdb3d228Smrg# the Free Software Foundation; either version 2, or (at your option) 13fdb3d228Smrg# any later version. 14fdb3d228Smrg 15fdb3d228Smrg# This program is distributed in the hope that it will be useful, 16fdb3d228Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 17fdb3d228Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18fdb3d228Smrg# GNU General Public License for more details. 19fdb3d228Smrg 20fdb3d228Smrg# You should have received a copy of the GNU General Public License 219b41ff1aSmrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 22fdb3d228Smrg 23fdb3d228Smrg# As a special exception to the GNU General Public License, if you 24fdb3d228Smrg# distribute this file as part of a program that contains a 25fdb3d228Smrg# configuration script generated by Autoconf, you may include it under 26fdb3d228Smrg# the same distribution terms that you use for the rest of that program. 27fdb3d228Smrg 28fdb3d228Smrgif test $# -eq 0; then 29fdb3d228Smrg echo 1>&2 "Try \`$0 --help' for more information" 30fdb3d228Smrg exit 1 31fdb3d228Smrgfi 32fdb3d228Smrg 33fdb3d228Smrgrun=: 349b41ff1aSmrgsed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' 359b41ff1aSmrgsed_minuso='s/.* -o \([^ ]*\).*/\1/p' 36fdb3d228Smrg 37fdb3d228Smrg# In the cases where this matters, `missing' is being run in the 38fdb3d228Smrg# srcdir already. 39fdb3d228Smrgif test -f configure.ac; then 40fdb3d228Smrg configure_ac=configure.ac 41fdb3d228Smrgelse 42fdb3d228Smrg configure_ac=configure.in 43fdb3d228Smrgfi 44fdb3d228Smrg 459b41ff1aSmrgmsg="missing on your system" 469b41ff1aSmrg 479b41ff1aSmrgcase $1 in 48fdb3d228Smrg--run) 49fdb3d228Smrg # Try to run requested program, and just exit if it succeeds. 50fdb3d228Smrg run= 51fdb3d228Smrg shift 52fdb3d228Smrg "$@" && exit 0 539b41ff1aSmrg # Exit code 63 means version mismatch. This often happens 549b41ff1aSmrg # when the user try to use an ancient version of a tool on 559b41ff1aSmrg # a file that requires a minimum version. In this case we 569b41ff1aSmrg # we should proceed has if the program had been absent, or 579b41ff1aSmrg # if --run hadn't been passed. 589b41ff1aSmrg if test $? = 63; then 599b41ff1aSmrg run=: 609b41ff1aSmrg msg="probably too old" 619b41ff1aSmrg fi 62fdb3d228Smrg ;; 63fdb3d228Smrg 64fdb3d228Smrg -h|--h|--he|--hel|--help) 65fdb3d228Smrg echo "\ 66fdb3d228Smrg$0 [OPTION]... PROGRAM [ARGUMENT]... 67fdb3d228Smrg 68fdb3d228SmrgHandle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an 69fdb3d228Smrgerror status if there is no known handling for PROGRAM. 70fdb3d228Smrg 71fdb3d228SmrgOptions: 72fdb3d228Smrg -h, --help display this help and exit 73fdb3d228Smrg -v, --version output version information and exit 74fdb3d228Smrg --run try to run the given command, and emulate it if it fails 75fdb3d228Smrg 76fdb3d228SmrgSupported PROGRAM values: 77fdb3d228Smrg aclocal touch file \`aclocal.m4' 78fdb3d228Smrg autoconf touch file \`configure' 79fdb3d228Smrg autoheader touch file \`config.h.in' 809b41ff1aSmrg autom4te touch the output file, or create a stub one 81fdb3d228Smrg automake touch all \`Makefile.in' files 82fdb3d228Smrg bison create \`y.tab.[ch]', if possible, from existing .[ch] 83fdb3d228Smrg flex create \`lex.yy.c', if possible, from existing .c 84fdb3d228Smrg help2man touch the output file 85fdb3d228Smrg lex create \`lex.yy.c', if possible, from existing .c 86fdb3d228Smrg makeinfo touch the output file 87fdb3d228Smrg tar try tar, gnutar, gtar, then tar without non-portable flags 889b41ff1aSmrg yacc create \`y.tab.[ch]', if possible, from existing .[ch] 899b41ff1aSmrg 909b41ff1aSmrgVersion suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and 919b41ff1aSmrg\`g' are ignored when checking the name. 929b41ff1aSmrg 939b41ff1aSmrgSend bug reports to <bug-automake@gnu.org>." 949b41ff1aSmrg exit $? 95fdb3d228Smrg ;; 96fdb3d228Smrg 97fdb3d228Smrg -v|--v|--ve|--ver|--vers|--versi|--versio|--version) 989b41ff1aSmrg echo "missing $scriptversion (GNU Automake)" 999b41ff1aSmrg exit $? 100fdb3d228Smrg ;; 101fdb3d228Smrg 102fdb3d228Smrg -*) 103fdb3d228Smrg echo 1>&2 "$0: Unknown \`$1' option" 104fdb3d228Smrg echo 1>&2 "Try \`$0 --help' for more information" 105fdb3d228Smrg exit 1 106fdb3d228Smrg ;; 107fdb3d228Smrg 1089b41ff1aSmrgesac 1099b41ff1aSmrg 1109b41ff1aSmrg# normalize program name to check for. 1119b41ff1aSmrgprogram=`echo "$1" | sed ' 1129b41ff1aSmrg s/^gnu-//; t 1139b41ff1aSmrg s/^gnu//; t 1149b41ff1aSmrg s/^g//; t'` 1159b41ff1aSmrg 1169b41ff1aSmrg# Now exit if we have it, but it failed. Also exit now if we 1179b41ff1aSmrg# don't have it and --version was passed (most likely to detect 1189b41ff1aSmrg# the program). This is about non-GNU programs, so use $1 not 1199b41ff1aSmrg# $program. 1209b41ff1aSmrgcase $1 in 1219b41ff1aSmrg lex*|yacc*) 1229b41ff1aSmrg # Not GNU programs, they don't have --version. 1239b41ff1aSmrg ;; 1249b41ff1aSmrg 1259b41ff1aSmrg tar*) 1269b41ff1aSmrg if test -n "$run"; then 1279b41ff1aSmrg echo 1>&2 "ERROR: \`tar' requires --run" 1289b41ff1aSmrg exit 1 1299b41ff1aSmrg elif test "x$2" = "x--version" || test "x$2" = "x--help"; then 1309b41ff1aSmrg exit 1 1319b41ff1aSmrg fi 1329b41ff1aSmrg ;; 1339b41ff1aSmrg 1349b41ff1aSmrg *) 135fdb3d228Smrg if test -z "$run" && ($1 --version) > /dev/null 2>&1; then 136fdb3d228Smrg # We have it, but it failed. 137fdb3d228Smrg exit 1 1389b41ff1aSmrg elif test "x$2" = "x--version" || test "x$2" = "x--help"; then 1399b41ff1aSmrg # Could not run --version or --help. This is probably someone 1409b41ff1aSmrg # running `$TOOL --version' or `$TOOL --help' to check whether 1419b41ff1aSmrg # $TOOL exists and not knowing $TOOL uses missing. 1429b41ff1aSmrg exit 1 143fdb3d228Smrg fi 1449b41ff1aSmrg ;; 1459b41ff1aSmrgesac 146fdb3d228Smrg 1479b41ff1aSmrg# If it does not exist, or fails to run (possibly an outdated version), 1489b41ff1aSmrg# try to emulate it. 1499b41ff1aSmrgcase $program in 1509b41ff1aSmrg aclocal*) 151fdb3d228Smrg echo 1>&2 "\ 1529b41ff1aSmrgWARNING: \`$1' is $msg. You should only need it if 153fdb3d228Smrg you modified \`acinclude.m4' or \`${configure_ac}'. You might want 154fdb3d228Smrg to install the \`Automake' and \`Perl' packages. Grab them from 155fdb3d228Smrg any GNU archive site." 156fdb3d228Smrg touch aclocal.m4 157fdb3d228Smrg ;; 158fdb3d228Smrg 1599b41ff1aSmrg autoconf*) 160fdb3d228Smrg echo 1>&2 "\ 1619b41ff1aSmrgWARNING: \`$1' is $msg. You should only need it if 162fdb3d228Smrg you modified \`${configure_ac}'. You might want to install the 163fdb3d228Smrg \`Autoconf' and \`GNU m4' packages. Grab them from any GNU 164fdb3d228Smrg archive site." 165fdb3d228Smrg touch configure 166fdb3d228Smrg ;; 167fdb3d228Smrg 1689b41ff1aSmrg autoheader*) 169fdb3d228Smrg echo 1>&2 "\ 1709b41ff1aSmrgWARNING: \`$1' is $msg. You should only need it if 171fdb3d228Smrg you modified \`acconfig.h' or \`${configure_ac}'. You might want 172fdb3d228Smrg to install the \`Autoconf' and \`GNU m4' packages. Grab them 173fdb3d228Smrg from any GNU archive site." 174fdb3d228Smrg files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` 175fdb3d228Smrg test -z "$files" && files="config.h" 176fdb3d228Smrg touch_files= 177fdb3d228Smrg for f in $files; do 1789b41ff1aSmrg case $f in 179fdb3d228Smrg *:*) touch_files="$touch_files "`echo "$f" | 180fdb3d228Smrg sed -e 's/^[^:]*://' -e 's/:.*//'`;; 181fdb3d228Smrg *) touch_files="$touch_files $f.in";; 182fdb3d228Smrg esac 183fdb3d228Smrg done 184fdb3d228Smrg touch $touch_files 185fdb3d228Smrg ;; 186fdb3d228Smrg 187fdb3d228Smrg automake*) 188fdb3d228Smrg echo 1>&2 "\ 1899b41ff1aSmrgWARNING: \`$1' is $msg. You should only need it if 190fdb3d228Smrg you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. 191fdb3d228Smrg You might want to install the \`Automake' and \`Perl' packages. 192fdb3d228Smrg Grab them from any GNU archive site." 193fdb3d228Smrg find . -type f -name Makefile.am -print | 194fdb3d228Smrg sed 's/\.am$/.in/' | 195fdb3d228Smrg while read f; do touch "$f"; done 196fdb3d228Smrg ;; 197fdb3d228Smrg 1989b41ff1aSmrg autom4te*) 199fdb3d228Smrg echo 1>&2 "\ 2009b41ff1aSmrgWARNING: \`$1' is needed, but is $msg. 2019b41ff1aSmrg You might have modified some files without having the 202fdb3d228Smrg proper tools for further handling them. 203fdb3d228Smrg You can get \`$1' as part of \`Autoconf' from any GNU 204fdb3d228Smrg archive site." 205fdb3d228Smrg 2069b41ff1aSmrg file=`echo "$*" | sed -n "$sed_output"` 2079b41ff1aSmrg test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` 208fdb3d228Smrg if test -f "$file"; then 209fdb3d228Smrg touch $file 210fdb3d228Smrg else 211fdb3d228Smrg test -z "$file" || exec >$file 212fdb3d228Smrg echo "#! /bin/sh" 213fdb3d228Smrg echo "# Created by GNU Automake missing as a replacement of" 214fdb3d228Smrg echo "# $ $@" 215fdb3d228Smrg echo "exit 0" 216fdb3d228Smrg chmod +x $file 217fdb3d228Smrg exit 1 218fdb3d228Smrg fi 219fdb3d228Smrg ;; 220fdb3d228Smrg 2219b41ff1aSmrg bison*|yacc*) 222fdb3d228Smrg echo 1>&2 "\ 2239b41ff1aSmrgWARNING: \`$1' $msg. You should only need it if 224fdb3d228Smrg you modified a \`.y' file. You may need the \`Bison' package 225fdb3d228Smrg in order for those modifications to take effect. You can get 226fdb3d228Smrg \`Bison' from any GNU archive site." 227fdb3d228Smrg rm -f y.tab.c y.tab.h 2289b41ff1aSmrg if test $# -ne 1; then 229fdb3d228Smrg eval LASTARG="\${$#}" 2309b41ff1aSmrg case $LASTARG in 231fdb3d228Smrg *.y) 232fdb3d228Smrg SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` 2339b41ff1aSmrg if test -f "$SRCFILE"; then 234fdb3d228Smrg cp "$SRCFILE" y.tab.c 235fdb3d228Smrg fi 236fdb3d228Smrg SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` 2379b41ff1aSmrg if test -f "$SRCFILE"; then 238fdb3d228Smrg cp "$SRCFILE" y.tab.h 239fdb3d228Smrg fi 240fdb3d228Smrg ;; 241fdb3d228Smrg esac 242fdb3d228Smrg fi 2439b41ff1aSmrg if test ! -f y.tab.h; then 244fdb3d228Smrg echo >y.tab.h 245fdb3d228Smrg fi 2469b41ff1aSmrg if test ! -f y.tab.c; then 247fdb3d228Smrg echo 'main() { return 0; }' >y.tab.c 248fdb3d228Smrg fi 249fdb3d228Smrg ;; 250fdb3d228Smrg 2519b41ff1aSmrg lex*|flex*) 252fdb3d228Smrg echo 1>&2 "\ 2539b41ff1aSmrgWARNING: \`$1' is $msg. You should only need it if 254fdb3d228Smrg you modified a \`.l' file. You may need the \`Flex' package 255fdb3d228Smrg in order for those modifications to take effect. You can get 256fdb3d228Smrg \`Flex' from any GNU archive site." 257fdb3d228Smrg rm -f lex.yy.c 2589b41ff1aSmrg if test $# -ne 1; then 259fdb3d228Smrg eval LASTARG="\${$#}" 2609b41ff1aSmrg case $LASTARG in 261fdb3d228Smrg *.l) 262fdb3d228Smrg SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` 2639b41ff1aSmrg if test -f "$SRCFILE"; then 264fdb3d228Smrg cp "$SRCFILE" lex.yy.c 265fdb3d228Smrg fi 266fdb3d228Smrg ;; 267fdb3d228Smrg esac 268fdb3d228Smrg fi 2699b41ff1aSmrg if test ! -f lex.yy.c; then 270fdb3d228Smrg echo 'main() { return 0; }' >lex.yy.c 271fdb3d228Smrg fi 272fdb3d228Smrg ;; 273fdb3d228Smrg 2749b41ff1aSmrg help2man*) 275fdb3d228Smrg echo 1>&2 "\ 2769b41ff1aSmrgWARNING: \`$1' is $msg. You should only need it if 277fdb3d228Smrg you modified a dependency of a manual page. You may need the 278fdb3d228Smrg \`Help2man' package in order for those modifications to take 279fdb3d228Smrg effect. You can get \`Help2man' from any GNU archive site." 280fdb3d228Smrg 2819b41ff1aSmrg file=`echo "$*" | sed -n "$sed_output"` 2829b41ff1aSmrg test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` 2839b41ff1aSmrg if test -f "$file"; then 284fdb3d228Smrg touch $file 285fdb3d228Smrg else 286fdb3d228Smrg test -z "$file" || exec >$file 287fdb3d228Smrg echo ".ab help2man is required to generate this page" 2889b41ff1aSmrg exit $? 289fdb3d228Smrg fi 290fdb3d228Smrg ;; 291fdb3d228Smrg 2929b41ff1aSmrg makeinfo*) 293fdb3d228Smrg echo 1>&2 "\ 2949b41ff1aSmrgWARNING: \`$1' is $msg. You should only need it if 295fdb3d228Smrg you modified a \`.texi' or \`.texinfo' file, or any other file 296fdb3d228Smrg indirectly affecting the aspect of the manual. The spurious 297fdb3d228Smrg call might also be the consequence of using a buggy \`make' (AIX, 298fdb3d228Smrg DU, IRIX). You might want to install the \`Texinfo' package or 299fdb3d228Smrg the \`GNU make' package. Grab either from any GNU archive site." 3009b41ff1aSmrg # The file to touch is that specified with -o ... 3019b41ff1aSmrg file=`echo "$*" | sed -n "$sed_output"` 3029b41ff1aSmrg test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` 303fdb3d228Smrg if test -z "$file"; then 3049b41ff1aSmrg # ... or it is the one specified with @setfilename ... 3059b41ff1aSmrg infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` 3069b41ff1aSmrg file=`sed -n ' 3079b41ff1aSmrg /^@setfilename/{ 3089b41ff1aSmrg s/.* \([^ ]*\) *$/\1/ 3099b41ff1aSmrg p 3109b41ff1aSmrg q 3119b41ff1aSmrg }' $infile` 3129b41ff1aSmrg # ... or it is derived from the source name (dir/f.texi becomes f.info) 3139b41ff1aSmrg test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info 314fdb3d228Smrg fi 3159b41ff1aSmrg # If the file does not exist, the user really needs makeinfo; 3169b41ff1aSmrg # let's fail without touching anything. 3179b41ff1aSmrg test -f $file || exit 1 318fdb3d228Smrg touch $file 319fdb3d228Smrg ;; 320fdb3d228Smrg 3219b41ff1aSmrg tar*) 322fdb3d228Smrg shift 323fdb3d228Smrg 324fdb3d228Smrg # We have already tried tar in the generic part. 325fdb3d228Smrg # Look for gnutar/gtar before invocation to avoid ugly error 326fdb3d228Smrg # messages. 327fdb3d228Smrg if (gnutar --version > /dev/null 2>&1); then 328fdb3d228Smrg gnutar "$@" && exit 0 329fdb3d228Smrg fi 330fdb3d228Smrg if (gtar --version > /dev/null 2>&1); then 331fdb3d228Smrg gtar "$@" && exit 0 332fdb3d228Smrg fi 333fdb3d228Smrg firstarg="$1" 334fdb3d228Smrg if shift; then 3359b41ff1aSmrg case $firstarg in 336fdb3d228Smrg *o*) 337fdb3d228Smrg firstarg=`echo "$firstarg" | sed s/o//` 338fdb3d228Smrg tar "$firstarg" "$@" && exit 0 339fdb3d228Smrg ;; 340fdb3d228Smrg esac 3419b41ff1aSmrg case $firstarg in 342fdb3d228Smrg *h*) 343fdb3d228Smrg firstarg=`echo "$firstarg" | sed s/h//` 344fdb3d228Smrg tar "$firstarg" "$@" && exit 0 345fdb3d228Smrg ;; 346fdb3d228Smrg esac 347fdb3d228Smrg fi 348fdb3d228Smrg 349fdb3d228Smrg echo 1>&2 "\ 350fdb3d228SmrgWARNING: I can't seem to be able to run \`tar' with the given arguments. 351fdb3d228Smrg You may want to install GNU tar or Free paxutils, or check the 352fdb3d228Smrg command line arguments." 353fdb3d228Smrg exit 1 354fdb3d228Smrg ;; 355fdb3d228Smrg 356fdb3d228Smrg *) 357fdb3d228Smrg echo 1>&2 "\ 3589b41ff1aSmrgWARNING: \`$1' is needed, and is $msg. 3599b41ff1aSmrg You might have modified some files without having the 360fdb3d228Smrg proper tools for further handling them. Check the \`README' file, 361fdb3d228Smrg it often tells you about the needed prerequisites for installing 362fdb3d228Smrg this package. You may also peek at any GNU archive site, in case 363fdb3d228Smrg some other package would contain this missing \`$1' program." 364fdb3d228Smrg exit 1 365fdb3d228Smrg ;; 366fdb3d228Smrgesac 367fdb3d228Smrg 368fdb3d228Smrgexit 0 3699b41ff1aSmrg 3709b41ff1aSmrg# Local variables: 3719b41ff1aSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 3729b41ff1aSmrg# time-stamp-start: "scriptversion=" 3739b41ff1aSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 3749b41ff1aSmrg# time-stamp-time-zone: "UTC" 3759b41ff1aSmrg# time-stamp-end: "; # UTC" 3769b41ff1aSmrg# End: 377