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