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