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