/ missing
missing
  1  #! /bin/sh
  2  # Common stub for a few missing GNU programs while installing.
  3  
  4  scriptversion=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  
 28  if test $# -eq 0; then
 29    echo 1>&2 "Try \`$0 --help' for more information"
 30    exit 1
 31  fi
 32  
 33  run=:
 34  sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
 35  sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
 36  
 37  # In the cases where this matters, `missing' is being run in the
 38  # srcdir already.
 39  if test -f configure.ac; then
 40    configure_ac=configure.ac
 41  else
 42    configure_ac=configure.in
 43  fi
 44  
 45  msg="missing on your system"
 46  
 47  case $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  
 68  Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
 69  error status if there is no known handling for PROGRAM.
 70  
 71  Options:
 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  
 76  Supported 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  
 90  Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
 91  \`g' are ignored when checking the name.
 92  
 93  Send 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  
108  esac
109  
110  # normalize program name to check for.
111  program=`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.
120  case $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      ;;
145  esac
146  
147  # If it does not exist, or fails to run (possibly an outdated version),
148  # try to emulate it.
149  case $program in
150    aclocal*)
151      echo 1>&2 "\
152  WARNING: \`$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 "\
161  WARNING: \`$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 "\
170  WARNING: \`$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 "\
189  WARNING: \`$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 "\
200  WARNING: \`$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 "\
223  WARNING: \`$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 "\
253  WARNING: \`$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 "\
276  WARNING: \`$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 "\
294  WARNING: \`$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 "\
350  WARNING: 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 "\
358  WARNING: \`$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      ;;
366  esac
367  
368  exit 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: