missing revision 35d5702b
1a6fdc6faSmrg#! /bin/sh
2a6fdc6faSmrg# Common stub for a few missing GNU programs while installing.
335d5702bSmrg
435d5702bSmrgscriptversion=2009-04-28.21; # UTC
535d5702bSmrg
635d5702bSmrg# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
735d5702bSmrg# 2008, 2009 Free Software Foundation, Inc.
8a6fdc6faSmrg# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
9a6fdc6faSmrg
10a6fdc6faSmrg# This program is free software; you can redistribute it and/or modify
11a6fdc6faSmrg# it under the terms of the GNU General Public License as published by
12a6fdc6faSmrg# the Free Software Foundation; either version 2, or (at your option)
13a6fdc6faSmrg# any later version.
14a6fdc6faSmrg
15a6fdc6faSmrg# This program is distributed in the hope that it will be useful,
16a6fdc6faSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
17a6fdc6faSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18a6fdc6faSmrg# GNU General Public License for more details.
19a6fdc6faSmrg
20a6fdc6faSmrg# You should have received a copy of the GNU General Public License
2135d5702bSmrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
22a6fdc6faSmrg
23a6fdc6faSmrg# As a special exception to the GNU General Public License, if you
24a6fdc6faSmrg# distribute this file as part of a program that contains a
25a6fdc6faSmrg# configuration script generated by Autoconf, you may include it under
26a6fdc6faSmrg# the same distribution terms that you use for the rest of that program.
27a6fdc6faSmrg
28a6fdc6faSmrgif test $# -eq 0; then
29a6fdc6faSmrg  echo 1>&2 "Try \`$0 --help' for more information"
30a6fdc6faSmrg  exit 1
31a6fdc6faSmrgfi
32a6fdc6faSmrg
33a6fdc6faSmrgrun=:
3435d5702bSmrgsed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
3535d5702bSmrgsed_minuso='s/.* -o \([^ ]*\).*/\1/p'
36a6fdc6faSmrg
37a6fdc6faSmrg# In the cases where this matters, `missing' is being run in the
38a6fdc6faSmrg# srcdir already.
39a6fdc6faSmrgif test -f configure.ac; then
40a6fdc6faSmrg  configure_ac=configure.ac
41a6fdc6faSmrgelse
42a6fdc6faSmrg  configure_ac=configure.in
43a6fdc6faSmrgfi
44a6fdc6faSmrg
4535d5702bSmrgmsg="missing on your system"
4635d5702bSmrg
4735d5702bSmrgcase $1 in
48a6fdc6faSmrg--run)
49a6fdc6faSmrg  # Try to run requested program, and just exit if it succeeds.
50a6fdc6faSmrg  run=
51a6fdc6faSmrg  shift
52a6fdc6faSmrg  "$@" && exit 0
5335d5702bSmrg  # Exit code 63 means version mismatch.  This often happens
5435d5702bSmrg  # when the user try to use an ancient version of a tool on
5535d5702bSmrg  # a file that requires a minimum version.  In this case we
5635d5702bSmrg  # we should proceed has if the program had been absent, or
5735d5702bSmrg  # if --run hadn't been passed.
5835d5702bSmrg  if test $? = 63; then
5935d5702bSmrg    run=:
6035d5702bSmrg    msg="probably too old"
6135d5702bSmrg  fi
62a6fdc6faSmrg  ;;
63a6fdc6faSmrg
64a6fdc6faSmrg  -h|--h|--he|--hel|--help)
65a6fdc6faSmrg    echo "\
66a6fdc6faSmrg$0 [OPTION]... PROGRAM [ARGUMENT]...
67a6fdc6faSmrg
68a6fdc6faSmrgHandle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
69a6fdc6faSmrgerror status if there is no known handling for PROGRAM.
70a6fdc6faSmrg
71a6fdc6faSmrgOptions:
72a6fdc6faSmrg  -h, --help      display this help and exit
73a6fdc6faSmrg  -v, --version   output version information and exit
74a6fdc6faSmrg  --run           try to run the given command, and emulate it if it fails
75a6fdc6faSmrg
76a6fdc6faSmrgSupported PROGRAM values:
77a6fdc6faSmrg  aclocal      touch file \`aclocal.m4'
78a6fdc6faSmrg  autoconf     touch file \`configure'
79a6fdc6faSmrg  autoheader   touch file \`config.h.in'
8035d5702bSmrg  autom4te     touch the output file, or create a stub one
81a6fdc6faSmrg  automake     touch all \`Makefile.in' files
82a6fdc6faSmrg  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
83a6fdc6faSmrg  flex         create \`lex.yy.c', if possible, from existing .c
84a6fdc6faSmrg  help2man     touch the output file
85a6fdc6faSmrg  lex          create \`lex.yy.c', if possible, from existing .c
86a6fdc6faSmrg  makeinfo     touch the output file
87a6fdc6faSmrg  tar          try tar, gnutar, gtar, then tar without non-portable flags
8835d5702bSmrg  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
8935d5702bSmrg
9035d5702bSmrgVersion suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
9135d5702bSmrg\`g' are ignored when checking the name.
9235d5702bSmrg
9335d5702bSmrgSend bug reports to <bug-automake@gnu.org>."
9435d5702bSmrg    exit $?
95a6fdc6faSmrg    ;;
96a6fdc6faSmrg
97a6fdc6faSmrg  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
9835d5702bSmrg    echo "missing $scriptversion (GNU Automake)"
9935d5702bSmrg    exit $?
100a6fdc6faSmrg    ;;
101a6fdc6faSmrg
102a6fdc6faSmrg  -*)
103a6fdc6faSmrg    echo 1>&2 "$0: Unknown \`$1' option"
104a6fdc6faSmrg    echo 1>&2 "Try \`$0 --help' for more information"
105a6fdc6faSmrg    exit 1
106a6fdc6faSmrg    ;;
107a6fdc6faSmrg
10835d5702bSmrgesac
10935d5702bSmrg
11035d5702bSmrg# normalize program name to check for.
11135d5702bSmrgprogram=`echo "$1" | sed '
11235d5702bSmrg  s/^gnu-//; t
11335d5702bSmrg  s/^gnu//; t
11435d5702bSmrg  s/^g//; t'`
11535d5702bSmrg
11635d5702bSmrg# Now exit if we have it, but it failed.  Also exit now if we
11735d5702bSmrg# don't have it and --version was passed (most likely to detect
11835d5702bSmrg# the program).  This is about non-GNU programs, so use $1 not
11935d5702bSmrg# $program.
12035d5702bSmrgcase $1 in
12135d5702bSmrg  lex*|yacc*)
12235d5702bSmrg    # Not GNU programs, they don't have --version.
12335d5702bSmrg    ;;
12435d5702bSmrg
12535d5702bSmrg  tar*)
12635d5702bSmrg    if test -n "$run"; then
12735d5702bSmrg       echo 1>&2 "ERROR: \`tar' requires --run"
12835d5702bSmrg       exit 1
12935d5702bSmrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
13035d5702bSmrg       exit 1
13135d5702bSmrg    fi
13235d5702bSmrg    ;;
13335d5702bSmrg
13435d5702bSmrg  *)
135a6fdc6faSmrg    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
136a6fdc6faSmrg       # We have it, but it failed.
137a6fdc6faSmrg       exit 1
13835d5702bSmrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
13935d5702bSmrg       # Could not run --version or --help.  This is probably someone
14035d5702bSmrg       # running `$TOOL --version' or `$TOOL --help' to check whether
14135d5702bSmrg       # $TOOL exists and not knowing $TOOL uses missing.
14235d5702bSmrg       exit 1
143a6fdc6faSmrg    fi
14435d5702bSmrg    ;;
14535d5702bSmrgesac
146a6fdc6faSmrg
14735d5702bSmrg# If it does not exist, or fails to run (possibly an outdated version),
14835d5702bSmrg# try to emulate it.
14935d5702bSmrgcase $program in
15035d5702bSmrg  aclocal*)
151a6fdc6faSmrg    echo 1>&2 "\
15235d5702bSmrgWARNING: \`$1' is $msg.  You should only need it if
153a6fdc6faSmrg         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
154a6fdc6faSmrg         to install the \`Automake' and \`Perl' packages.  Grab them from
155a6fdc6faSmrg         any GNU archive site."
156a6fdc6faSmrg    touch aclocal.m4
157a6fdc6faSmrg    ;;
158a6fdc6faSmrg
15935d5702bSmrg  autoconf*)
160a6fdc6faSmrg    echo 1>&2 "\
16135d5702bSmrgWARNING: \`$1' is $msg.  You should only need it if
162a6fdc6faSmrg         you modified \`${configure_ac}'.  You might want to install the
163a6fdc6faSmrg         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
164a6fdc6faSmrg         archive site."
165a6fdc6faSmrg    touch configure
166a6fdc6faSmrg    ;;
167a6fdc6faSmrg
16835d5702bSmrg  autoheader*)
169a6fdc6faSmrg    echo 1>&2 "\
17035d5702bSmrgWARNING: \`$1' is $msg.  You should only need it if
171a6fdc6faSmrg         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
172a6fdc6faSmrg         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
173a6fdc6faSmrg         from any GNU archive site."
174a6fdc6faSmrg    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
175a6fdc6faSmrg    test -z "$files" && files="config.h"
176a6fdc6faSmrg    touch_files=
177a6fdc6faSmrg    for f in $files; do
17835d5702bSmrg      case $f in
179a6fdc6faSmrg      *:*) touch_files="$touch_files "`echo "$f" |
180a6fdc6faSmrg				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
181a6fdc6faSmrg      *) touch_files="$touch_files $f.in";;
182a6fdc6faSmrg      esac
183a6fdc6faSmrg    done
184a6fdc6faSmrg    touch $touch_files
185a6fdc6faSmrg    ;;
186a6fdc6faSmrg
187a6fdc6faSmrg  automake*)
188a6fdc6faSmrg    echo 1>&2 "\
18935d5702bSmrgWARNING: \`$1' is $msg.  You should only need it if
190a6fdc6faSmrg         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
191a6fdc6faSmrg         You might want to install the \`Automake' and \`Perl' packages.
192a6fdc6faSmrg         Grab them from any GNU archive site."
193a6fdc6faSmrg    find . -type f -name Makefile.am -print |
194a6fdc6faSmrg	   sed 's/\.am$/.in/' |
195a6fdc6faSmrg	   while read f; do touch "$f"; done
196a6fdc6faSmrg    ;;
197a6fdc6faSmrg
19835d5702bSmrg  autom4te*)
199a6fdc6faSmrg    echo 1>&2 "\
20035d5702bSmrgWARNING: \`$1' is needed, but is $msg.
20135d5702bSmrg         You might have modified some files without having the
202a6fdc6faSmrg         proper tools for further handling them.
203a6fdc6faSmrg         You can get \`$1' as part of \`Autoconf' from any GNU
204a6fdc6faSmrg         archive site."
205a6fdc6faSmrg
20635d5702bSmrg    file=`echo "$*" | sed -n "$sed_output"`
20735d5702bSmrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
208a6fdc6faSmrg    if test -f "$file"; then
209a6fdc6faSmrg	touch $file
210a6fdc6faSmrg    else
211a6fdc6faSmrg	test -z "$file" || exec >$file
212a6fdc6faSmrg	echo "#! /bin/sh"
213a6fdc6faSmrg	echo "# Created by GNU Automake missing as a replacement of"
214a6fdc6faSmrg	echo "#  $ $@"
215a6fdc6faSmrg	echo "exit 0"
216a6fdc6faSmrg	chmod +x $file
217a6fdc6faSmrg	exit 1
218a6fdc6faSmrg    fi
219a6fdc6faSmrg    ;;
220a6fdc6faSmrg
22135d5702bSmrg  bison*|yacc*)
222a6fdc6faSmrg    echo 1>&2 "\
22335d5702bSmrgWARNING: \`$1' $msg.  You should only need it if
224a6fdc6faSmrg         you modified a \`.y' file.  You may need the \`Bison' package
225a6fdc6faSmrg         in order for those modifications to take effect.  You can get
226a6fdc6faSmrg         \`Bison' from any GNU archive site."
227a6fdc6faSmrg    rm -f y.tab.c y.tab.h
22835d5702bSmrg    if test $# -ne 1; then
229a6fdc6faSmrg        eval LASTARG="\${$#}"
23035d5702bSmrg	case $LASTARG in
231a6fdc6faSmrg	*.y)
232a6fdc6faSmrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
23335d5702bSmrg	    if test -f "$SRCFILE"; then
234a6fdc6faSmrg	         cp "$SRCFILE" y.tab.c
235a6fdc6faSmrg	    fi
236a6fdc6faSmrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
23735d5702bSmrg	    if test -f "$SRCFILE"; then
238a6fdc6faSmrg	         cp "$SRCFILE" y.tab.h
239a6fdc6faSmrg	    fi
240a6fdc6faSmrg	  ;;
241a6fdc6faSmrg	esac
242a6fdc6faSmrg    fi
24335d5702bSmrg    if test ! -f y.tab.h; then
244a6fdc6faSmrg	echo >y.tab.h
245a6fdc6faSmrg    fi
24635d5702bSmrg    if test ! -f y.tab.c; then
247a6fdc6faSmrg	echo 'main() { return 0; }' >y.tab.c
248a6fdc6faSmrg    fi
249a6fdc6faSmrg    ;;
250a6fdc6faSmrg
25135d5702bSmrg  lex*|flex*)
252a6fdc6faSmrg    echo 1>&2 "\
25335d5702bSmrgWARNING: \`$1' is $msg.  You should only need it if
254a6fdc6faSmrg         you modified a \`.l' file.  You may need the \`Flex' package
255a6fdc6faSmrg         in order for those modifications to take effect.  You can get
256a6fdc6faSmrg         \`Flex' from any GNU archive site."
257a6fdc6faSmrg    rm -f lex.yy.c
25835d5702bSmrg    if test $# -ne 1; then
259a6fdc6faSmrg        eval LASTARG="\${$#}"
26035d5702bSmrg	case $LASTARG in
261a6fdc6faSmrg	*.l)
262a6fdc6faSmrg	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
26335d5702bSmrg	    if test -f "$SRCFILE"; then
264a6fdc6faSmrg	         cp "$SRCFILE" lex.yy.c
265a6fdc6faSmrg	    fi
266a6fdc6faSmrg	  ;;
267a6fdc6faSmrg	esac
268a6fdc6faSmrg    fi
26935d5702bSmrg    if test ! -f lex.yy.c; then
270a6fdc6faSmrg	echo 'main() { return 0; }' >lex.yy.c
271a6fdc6faSmrg    fi
272a6fdc6faSmrg    ;;
273a6fdc6faSmrg
27435d5702bSmrg  help2man*)
275a6fdc6faSmrg    echo 1>&2 "\
27635d5702bSmrgWARNING: \`$1' is $msg.  You should only need it if
277a6fdc6faSmrg	 you modified a dependency of a manual page.  You may need the
278a6fdc6faSmrg	 \`Help2man' package in order for those modifications to take
279a6fdc6faSmrg	 effect.  You can get \`Help2man' from any GNU archive site."
280a6fdc6faSmrg
28135d5702bSmrg    file=`echo "$*" | sed -n "$sed_output"`
28235d5702bSmrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
28335d5702bSmrg    if test -f "$file"; then
284a6fdc6faSmrg	touch $file
285a6fdc6faSmrg    else
286a6fdc6faSmrg	test -z "$file" || exec >$file
287a6fdc6faSmrg	echo ".ab help2man is required to generate this page"
28835d5702bSmrg	exit $?
289a6fdc6faSmrg    fi
290a6fdc6faSmrg    ;;
291a6fdc6faSmrg
29235d5702bSmrg  makeinfo*)
293a6fdc6faSmrg    echo 1>&2 "\
29435d5702bSmrgWARNING: \`$1' is $msg.  You should only need it if
295a6fdc6faSmrg         you modified a \`.texi' or \`.texinfo' file, or any other file
296a6fdc6faSmrg         indirectly affecting the aspect of the manual.  The spurious
297a6fdc6faSmrg         call might also be the consequence of using a buggy \`make' (AIX,
298a6fdc6faSmrg         DU, IRIX).  You might want to install the \`Texinfo' package or
299a6fdc6faSmrg         the \`GNU make' package.  Grab either from any GNU archive site."
30035d5702bSmrg    # The file to touch is that specified with -o ...
30135d5702bSmrg    file=`echo "$*" | sed -n "$sed_output"`
30235d5702bSmrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
303a6fdc6faSmrg    if test -z "$file"; then
30435d5702bSmrg      # ... or it is the one specified with @setfilename ...
30535d5702bSmrg      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
30635d5702bSmrg      file=`sed -n '
30735d5702bSmrg	/^@setfilename/{
30835d5702bSmrg	  s/.* \([^ ]*\) *$/\1/
30935d5702bSmrg	  p
31035d5702bSmrg	  q
31135d5702bSmrg	}' $infile`
31235d5702bSmrg      # ... or it is derived from the source name (dir/f.texi becomes f.info)
31335d5702bSmrg      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
314a6fdc6faSmrg    fi
31535d5702bSmrg    # If the file does not exist, the user really needs makeinfo;
31635d5702bSmrg    # let's fail without touching anything.
31735d5702bSmrg    test -f $file || exit 1
318a6fdc6faSmrg    touch $file
319a6fdc6faSmrg    ;;
320a6fdc6faSmrg
32135d5702bSmrg  tar*)
322a6fdc6faSmrg    shift
323a6fdc6faSmrg
324a6fdc6faSmrg    # We have already tried tar in the generic part.
325a6fdc6faSmrg    # Look for gnutar/gtar before invocation to avoid ugly error
326a6fdc6faSmrg    # messages.
327a6fdc6faSmrg    if (gnutar --version > /dev/null 2>&1); then
328a6fdc6faSmrg       gnutar "$@" && exit 0
329a6fdc6faSmrg    fi
330a6fdc6faSmrg    if (gtar --version > /dev/null 2>&1); then
331a6fdc6faSmrg       gtar "$@" && exit 0
332a6fdc6faSmrg    fi
333a6fdc6faSmrg    firstarg="$1"
334a6fdc6faSmrg    if shift; then
33535d5702bSmrg	case $firstarg in
336a6fdc6faSmrg	*o*)
337a6fdc6faSmrg	    firstarg=`echo "$firstarg" | sed s/o//`
338a6fdc6faSmrg	    tar "$firstarg" "$@" && exit 0
339a6fdc6faSmrg	    ;;
340a6fdc6faSmrg	esac
34135d5702bSmrg	case $firstarg in
342a6fdc6faSmrg	*h*)
343a6fdc6faSmrg	    firstarg=`echo "$firstarg" | sed s/h//`
344a6fdc6faSmrg	    tar "$firstarg" "$@" && exit 0
345a6fdc6faSmrg	    ;;
346a6fdc6faSmrg	esac
347a6fdc6faSmrg    fi
348a6fdc6faSmrg
349a6fdc6faSmrg    echo 1>&2 "\
350a6fdc6faSmrgWARNING: I can't seem to be able to run \`tar' with the given arguments.
351a6fdc6faSmrg         You may want to install GNU tar or Free paxutils, or check the
352a6fdc6faSmrg         command line arguments."
353a6fdc6faSmrg    exit 1
354a6fdc6faSmrg    ;;
355a6fdc6faSmrg
356a6fdc6faSmrg  *)
357a6fdc6faSmrg    echo 1>&2 "\
35835d5702bSmrgWARNING: \`$1' is needed, and is $msg.
35935d5702bSmrg         You might have modified some files without having the
360a6fdc6faSmrg         proper tools for further handling them.  Check the \`README' file,
361a6fdc6faSmrg         it often tells you about the needed prerequisites for installing
362a6fdc6faSmrg         this package.  You may also peek at any GNU archive site, in case
363a6fdc6faSmrg         some other package would contain this missing \`$1' program."
364a6fdc6faSmrg    exit 1
365a6fdc6faSmrg    ;;
366a6fdc6faSmrgesac
367a6fdc6faSmrg
368a6fdc6faSmrgexit 0
36935d5702bSmrg
37035d5702bSmrg# Local variables:
37135d5702bSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
37235d5702bSmrg# time-stamp-start: "scriptversion="
37335d5702bSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
37435d5702bSmrg# time-stamp-time-zone: "UTC"
37535d5702bSmrg# time-stamp-end: "; # UTC"
37635d5702bSmrg# End:
377