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