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