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