missing revision 350952b9
1fd7d9bd3Smrg#! /bin/sh
2fd7d9bd3Smrg# Common stub for a few missing GNU programs while installing.
3350952b9Smrg
4350952b9Smrgscriptversion=2009-04-28.21; # UTC
5350952b9Smrg
6350952b9Smrg# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
7350952b9Smrg# 2008, 2009 Free Software Foundation, Inc.
8fd7d9bd3Smrg# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
9fd7d9bd3Smrg
10fd7d9bd3Smrg# This program is free software; you can redistribute it and/or modify
11fd7d9bd3Smrg# it under the terms of the GNU General Public License as published by
12fd7d9bd3Smrg# the Free Software Foundation; either version 2, or (at your option)
13fd7d9bd3Smrg# any later version.
14fd7d9bd3Smrg
15fd7d9bd3Smrg# This program is distributed in the hope that it will be useful,
16fd7d9bd3Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
17fd7d9bd3Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18fd7d9bd3Smrg# GNU General Public License for more details.
19fd7d9bd3Smrg
20fd7d9bd3Smrg# You should have received a copy of the GNU General Public License
21350952b9Smrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
22fd7d9bd3Smrg
23fd7d9bd3Smrg# As a special exception to the GNU General Public License, if you
24fd7d9bd3Smrg# distribute this file as part of a program that contains a
25fd7d9bd3Smrg# configuration script generated by Autoconf, you may include it under
26fd7d9bd3Smrg# the same distribution terms that you use for the rest of that program.
27fd7d9bd3Smrg
28fd7d9bd3Smrgif test $# -eq 0; then
29fd7d9bd3Smrg  echo 1>&2 "Try \`$0 --help' for more information"
30fd7d9bd3Smrg  exit 1
31fd7d9bd3Smrgfi
32fd7d9bd3Smrg
33fd7d9bd3Smrgrun=:
34350952b9Smrgsed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
35350952b9Smrgsed_minuso='s/.* -o \([^ ]*\).*/\1/p'
36fd7d9bd3Smrg
37fd7d9bd3Smrg# In the cases where this matters, `missing' is being run in the
38fd7d9bd3Smrg# srcdir already.
39fd7d9bd3Smrgif test -f configure.ac; then
40fd7d9bd3Smrg  configure_ac=configure.ac
41fd7d9bd3Smrgelse
42fd7d9bd3Smrg  configure_ac=configure.in
43fd7d9bd3Smrgfi
44fd7d9bd3Smrg
45350952b9Smrgmsg="missing on your system"
46350952b9Smrg
47350952b9Smrgcase $1 in
48fd7d9bd3Smrg--run)
49fd7d9bd3Smrg  # Try to run requested program, and just exit if it succeeds.
50fd7d9bd3Smrg  run=
51fd7d9bd3Smrg  shift
52fd7d9bd3Smrg  "$@" && exit 0
53350952b9Smrg  # Exit code 63 means version mismatch.  This often happens
54350952b9Smrg  # when the user try to use an ancient version of a tool on
55350952b9Smrg  # a file that requires a minimum version.  In this case we
56350952b9Smrg  # we should proceed has if the program had been absent, or
57350952b9Smrg  # if --run hadn't been passed.
58350952b9Smrg  if test $? = 63; then
59350952b9Smrg    run=:
60350952b9Smrg    msg="probably too old"
61350952b9Smrg  fi
62fd7d9bd3Smrg  ;;
63fd7d9bd3Smrg
64fd7d9bd3Smrg  -h|--h|--he|--hel|--help)
65fd7d9bd3Smrg    echo "\
66fd7d9bd3Smrg$0 [OPTION]... PROGRAM [ARGUMENT]...
67fd7d9bd3Smrg
68fd7d9bd3SmrgHandle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
69fd7d9bd3Smrgerror status if there is no known handling for PROGRAM.
70fd7d9bd3Smrg
71fd7d9bd3SmrgOptions:
72fd7d9bd3Smrg  -h, --help      display this help and exit
73fd7d9bd3Smrg  -v, --version   output version information and exit
74fd7d9bd3Smrg  --run           try to run the given command, and emulate it if it fails
75fd7d9bd3Smrg
76fd7d9bd3SmrgSupported PROGRAM values:
77fd7d9bd3Smrg  aclocal      touch file \`aclocal.m4'
78fd7d9bd3Smrg  autoconf     touch file \`configure'
79fd7d9bd3Smrg  autoheader   touch file \`config.h.in'
80350952b9Smrg  autom4te     touch the output file, or create a stub one
81fd7d9bd3Smrg  automake     touch all \`Makefile.in' files
82fd7d9bd3Smrg  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
83fd7d9bd3Smrg  flex         create \`lex.yy.c', if possible, from existing .c
84fd7d9bd3Smrg  help2man     touch the output file
85fd7d9bd3Smrg  lex          create \`lex.yy.c', if possible, from existing .c
86fd7d9bd3Smrg  makeinfo     touch the output file
87fd7d9bd3Smrg  tar          try tar, gnutar, gtar, then tar without non-portable flags
88350952b9Smrg  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
89350952b9Smrg
90350952b9SmrgVersion suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
91350952b9Smrg\`g' are ignored when checking the name.
92350952b9Smrg
93350952b9SmrgSend bug reports to <bug-automake@gnu.org>."
94350952b9Smrg    exit $?
95fd7d9bd3Smrg    ;;
96fd7d9bd3Smrg
97fd7d9bd3Smrg  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
98350952b9Smrg    echo "missing $scriptversion (GNU Automake)"
99350952b9Smrg    exit $?
100fd7d9bd3Smrg    ;;
101fd7d9bd3Smrg
102fd7d9bd3Smrg  -*)
103fd7d9bd3Smrg    echo 1>&2 "$0: Unknown \`$1' option"
104fd7d9bd3Smrg    echo 1>&2 "Try \`$0 --help' for more information"
105fd7d9bd3Smrg    exit 1
106fd7d9bd3Smrg    ;;
107fd7d9bd3Smrg
108350952b9Smrgesac
109350952b9Smrg
110350952b9Smrg# normalize program name to check for.
111350952b9Smrgprogram=`echo "$1" | sed '
112350952b9Smrg  s/^gnu-//; t
113350952b9Smrg  s/^gnu//; t
114350952b9Smrg  s/^g//; t'`
115350952b9Smrg
116350952b9Smrg# Now exit if we have it, but it failed.  Also exit now if we
117350952b9Smrg# don't have it and --version was passed (most likely to detect
118350952b9Smrg# the program).  This is about non-GNU programs, so use $1 not
119350952b9Smrg# $program.
120350952b9Smrgcase $1 in
121350952b9Smrg  lex*|yacc*)
122350952b9Smrg    # Not GNU programs, they don't have --version.
123350952b9Smrg    ;;
124350952b9Smrg
125350952b9Smrg  tar*)
126350952b9Smrg    if test -n "$run"; then
127350952b9Smrg       echo 1>&2 "ERROR: \`tar' requires --run"
128350952b9Smrg       exit 1
129350952b9Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
130350952b9Smrg       exit 1
131350952b9Smrg    fi
132350952b9Smrg    ;;
133350952b9Smrg
134350952b9Smrg  *)
135fd7d9bd3Smrg    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
136fd7d9bd3Smrg       # We have it, but it failed.
137fd7d9bd3Smrg       exit 1
138350952b9Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
139350952b9Smrg       # Could not run --version or --help.  This is probably someone
140350952b9Smrg       # running `$TOOL --version' or `$TOOL --help' to check whether
141350952b9Smrg       # $TOOL exists and not knowing $TOOL uses missing.
142350952b9Smrg       exit 1
143fd7d9bd3Smrg    fi
144350952b9Smrg    ;;
145350952b9Smrgesac
146fd7d9bd3Smrg
147350952b9Smrg# If it does not exist, or fails to run (possibly an outdated version),
148350952b9Smrg# try to emulate it.
149350952b9Smrgcase $program in
150350952b9Smrg  aclocal*)
151fd7d9bd3Smrg    echo 1>&2 "\
152350952b9SmrgWARNING: \`$1' is $msg.  You should only need it if
153fd7d9bd3Smrg         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
154fd7d9bd3Smrg         to install the \`Automake' and \`Perl' packages.  Grab them from
155fd7d9bd3Smrg         any GNU archive site."
156fd7d9bd3Smrg    touch aclocal.m4
157fd7d9bd3Smrg    ;;
158fd7d9bd3Smrg
159350952b9Smrg  autoconf*)
160fd7d9bd3Smrg    echo 1>&2 "\
161350952b9SmrgWARNING: \`$1' is $msg.  You should only need it if
162fd7d9bd3Smrg         you modified \`${configure_ac}'.  You might want to install the
163fd7d9bd3Smrg         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
164fd7d9bd3Smrg         archive site."
165fd7d9bd3Smrg    touch configure
166fd7d9bd3Smrg    ;;
167fd7d9bd3Smrg
168350952b9Smrg  autoheader*)
169fd7d9bd3Smrg    echo 1>&2 "\
170350952b9SmrgWARNING: \`$1' is $msg.  You should only need it if
171fd7d9bd3Smrg         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
172fd7d9bd3Smrg         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
173fd7d9bd3Smrg         from any GNU archive site."
174fd7d9bd3Smrg    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
175fd7d9bd3Smrg    test -z "$files" && files="config.h"
176fd7d9bd3Smrg    touch_files=
177fd7d9bd3Smrg    for f in $files; do
178350952b9Smrg      case $f in
179fd7d9bd3Smrg      *:*) touch_files="$touch_files "`echo "$f" |
180fd7d9bd3Smrg				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
181fd7d9bd3Smrg      *) touch_files="$touch_files $f.in";;
182fd7d9bd3Smrg      esac
183fd7d9bd3Smrg    done
184fd7d9bd3Smrg    touch $touch_files
185fd7d9bd3Smrg    ;;
186fd7d9bd3Smrg
187fd7d9bd3Smrg  automake*)
188fd7d9bd3Smrg    echo 1>&2 "\
189350952b9SmrgWARNING: \`$1' is $msg.  You should only need it if
190fd7d9bd3Smrg         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
191fd7d9bd3Smrg         You might want to install the \`Automake' and \`Perl' packages.
192fd7d9bd3Smrg         Grab them from any GNU archive site."
193fd7d9bd3Smrg    find . -type f -name Makefile.am -print |
194fd7d9bd3Smrg	   sed 's/\.am$/.in/' |
195fd7d9bd3Smrg	   while read f; do touch "$f"; done
196fd7d9bd3Smrg    ;;
197fd7d9bd3Smrg
198350952b9Smrg  autom4te*)
199fd7d9bd3Smrg    echo 1>&2 "\
200350952b9SmrgWARNING: \`$1' is needed, but is $msg.
201350952b9Smrg         You might have modified some files without having the
202fd7d9bd3Smrg         proper tools for further handling them.
203fd7d9bd3Smrg         You can get \`$1' as part of \`Autoconf' from any GNU
204fd7d9bd3Smrg         archive site."
205fd7d9bd3Smrg
206350952b9Smrg    file=`echo "$*" | sed -n "$sed_output"`
207350952b9Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
208fd7d9bd3Smrg    if test -f "$file"; then
209fd7d9bd3Smrg	touch $file
210fd7d9bd3Smrg    else
211fd7d9bd3Smrg	test -z "$file" || exec >$file
212fd7d9bd3Smrg	echo "#! /bin/sh"
213fd7d9bd3Smrg	echo "# Created by GNU Automake missing as a replacement of"
214fd7d9bd3Smrg	echo "#  $ $@"
215fd7d9bd3Smrg	echo "exit 0"
216fd7d9bd3Smrg	chmod +x $file
217fd7d9bd3Smrg	exit 1
218fd7d9bd3Smrg    fi
219fd7d9bd3Smrg    ;;
220fd7d9bd3Smrg
221350952b9Smrg  bison*|yacc*)
222fd7d9bd3Smrg    echo 1>&2 "\
223350952b9SmrgWARNING: \`$1' $msg.  You should only need it if
224fd7d9bd3Smrg         you modified a \`.y' file.  You may need the \`Bison' package
225fd7d9bd3Smrg         in order for those modifications to take effect.  You can get
226fd7d9bd3Smrg         \`Bison' from any GNU archive site."
227fd7d9bd3Smrg    rm -f y.tab.c y.tab.h
228350952b9Smrg    if test $# -ne 1; then
229fd7d9bd3Smrg        eval LASTARG="\${$#}"
230350952b9Smrg	case $LASTARG in
231fd7d9bd3Smrg	*.y)
232fd7d9bd3Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
233350952b9Smrg	    if test -f "$SRCFILE"; then
234fd7d9bd3Smrg	         cp "$SRCFILE" y.tab.c
235fd7d9bd3Smrg	    fi
236fd7d9bd3Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
237350952b9Smrg	    if test -f "$SRCFILE"; then
238fd7d9bd3Smrg	         cp "$SRCFILE" y.tab.h
239fd7d9bd3Smrg	    fi
240fd7d9bd3Smrg	  ;;
241fd7d9bd3Smrg	esac
242fd7d9bd3Smrg    fi
243350952b9Smrg    if test ! -f y.tab.h; then
244fd7d9bd3Smrg	echo >y.tab.h
245fd7d9bd3Smrg    fi
246350952b9Smrg    if test ! -f y.tab.c; then
247fd7d9bd3Smrg	echo 'main() { return 0; }' >y.tab.c
248fd7d9bd3Smrg    fi
249fd7d9bd3Smrg    ;;
250fd7d9bd3Smrg
251350952b9Smrg  lex*|flex*)
252fd7d9bd3Smrg    echo 1>&2 "\
253350952b9SmrgWARNING: \`$1' is $msg.  You should only need it if
254fd7d9bd3Smrg         you modified a \`.l' file.  You may need the \`Flex' package
255fd7d9bd3Smrg         in order for those modifications to take effect.  You can get
256fd7d9bd3Smrg         \`Flex' from any GNU archive site."
257fd7d9bd3Smrg    rm -f lex.yy.c
258350952b9Smrg    if test $# -ne 1; then
259fd7d9bd3Smrg        eval LASTARG="\${$#}"
260350952b9Smrg	case $LASTARG in
261fd7d9bd3Smrg	*.l)
262fd7d9bd3Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
263350952b9Smrg	    if test -f "$SRCFILE"; then
264fd7d9bd3Smrg	         cp "$SRCFILE" lex.yy.c
265fd7d9bd3Smrg	    fi
266fd7d9bd3Smrg	  ;;
267fd7d9bd3Smrg	esac
268fd7d9bd3Smrg    fi
269350952b9Smrg    if test ! -f lex.yy.c; then
270fd7d9bd3Smrg	echo 'main() { return 0; }' >lex.yy.c
271fd7d9bd3Smrg    fi
272fd7d9bd3Smrg    ;;
273fd7d9bd3Smrg
274350952b9Smrg  help2man*)
275fd7d9bd3Smrg    echo 1>&2 "\
276350952b9SmrgWARNING: \`$1' is $msg.  You should only need it if
277fd7d9bd3Smrg	 you modified a dependency of a manual page.  You may need the
278fd7d9bd3Smrg	 \`Help2man' package in order for those modifications to take
279fd7d9bd3Smrg	 effect.  You can get \`Help2man' from any GNU archive site."
280fd7d9bd3Smrg
281350952b9Smrg    file=`echo "$*" | sed -n "$sed_output"`
282350952b9Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
283350952b9Smrg    if test -f "$file"; then
284fd7d9bd3Smrg	touch $file
285fd7d9bd3Smrg    else
286fd7d9bd3Smrg	test -z "$file" || exec >$file
287fd7d9bd3Smrg	echo ".ab help2man is required to generate this page"
288350952b9Smrg	exit $?
289fd7d9bd3Smrg    fi
290fd7d9bd3Smrg    ;;
291fd7d9bd3Smrg
292350952b9Smrg  makeinfo*)
293fd7d9bd3Smrg    echo 1>&2 "\
294350952b9SmrgWARNING: \`$1' is $msg.  You should only need it if
295fd7d9bd3Smrg         you modified a \`.texi' or \`.texinfo' file, or any other file
296fd7d9bd3Smrg         indirectly affecting the aspect of the manual.  The spurious
297fd7d9bd3Smrg         call might also be the consequence of using a buggy \`make' (AIX,
298fd7d9bd3Smrg         DU, IRIX).  You might want to install the \`Texinfo' package or
299fd7d9bd3Smrg         the \`GNU make' package.  Grab either from any GNU archive site."
300350952b9Smrg    # The file to touch is that specified with -o ...
301350952b9Smrg    file=`echo "$*" | sed -n "$sed_output"`
302350952b9Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
303fd7d9bd3Smrg    if test -z "$file"; then
304350952b9Smrg      # ... or it is the one specified with @setfilename ...
305350952b9Smrg      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
306350952b9Smrg      file=`sed -n '
307350952b9Smrg	/^@setfilename/{
308350952b9Smrg	  s/.* \([^ ]*\) *$/\1/
309350952b9Smrg	  p
310350952b9Smrg	  q
311350952b9Smrg	}' $infile`
312350952b9Smrg      # ... or it is derived from the source name (dir/f.texi becomes f.info)
313350952b9Smrg      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
314fd7d9bd3Smrg    fi
315350952b9Smrg    # If the file does not exist, the user really needs makeinfo;
316350952b9Smrg    # let's fail without touching anything.
317350952b9Smrg    test -f $file || exit 1
318fd7d9bd3Smrg    touch $file
319fd7d9bd3Smrg    ;;
320fd7d9bd3Smrg
321350952b9Smrg  tar*)
322fd7d9bd3Smrg    shift
323fd7d9bd3Smrg
324fd7d9bd3Smrg    # We have already tried tar in the generic part.
325fd7d9bd3Smrg    # Look for gnutar/gtar before invocation to avoid ugly error
326fd7d9bd3Smrg    # messages.
327fd7d9bd3Smrg    if (gnutar --version > /dev/null 2>&1); then
328fd7d9bd3Smrg       gnutar "$@" && exit 0
329fd7d9bd3Smrg    fi
330fd7d9bd3Smrg    if (gtar --version > /dev/null 2>&1); then
331fd7d9bd3Smrg       gtar "$@" && exit 0
332fd7d9bd3Smrg    fi
333fd7d9bd3Smrg    firstarg="$1"
334fd7d9bd3Smrg    if shift; then
335350952b9Smrg	case $firstarg in
336fd7d9bd3Smrg	*o*)
337fd7d9bd3Smrg	    firstarg=`echo "$firstarg" | sed s/o//`
338fd7d9bd3Smrg	    tar "$firstarg" "$@" && exit 0
339fd7d9bd3Smrg	    ;;
340fd7d9bd3Smrg	esac
341350952b9Smrg	case $firstarg in
342fd7d9bd3Smrg	*h*)
343fd7d9bd3Smrg	    firstarg=`echo "$firstarg" | sed s/h//`
344fd7d9bd3Smrg	    tar "$firstarg" "$@" && exit 0
345fd7d9bd3Smrg	    ;;
346fd7d9bd3Smrg	esac
347fd7d9bd3Smrg    fi
348fd7d9bd3Smrg
349fd7d9bd3Smrg    echo 1>&2 "\
350fd7d9bd3SmrgWARNING: I can't seem to be able to run \`tar' with the given arguments.
351fd7d9bd3Smrg         You may want to install GNU tar or Free paxutils, or check the
352fd7d9bd3Smrg         command line arguments."
353fd7d9bd3Smrg    exit 1
354fd7d9bd3Smrg    ;;
355fd7d9bd3Smrg
356fd7d9bd3Smrg  *)
357fd7d9bd3Smrg    echo 1>&2 "\
358350952b9SmrgWARNING: \`$1' is needed, and is $msg.
359350952b9Smrg         You might have modified some files without having the
360fd7d9bd3Smrg         proper tools for further handling them.  Check the \`README' file,
361fd7d9bd3Smrg         it often tells you about the needed prerequisites for installing
362fd7d9bd3Smrg         this package.  You may also peek at any GNU archive site, in case
363fd7d9bd3Smrg         some other package would contain this missing \`$1' program."
364fd7d9bd3Smrg    exit 1
365fd7d9bd3Smrg    ;;
366fd7d9bd3Smrgesac
367fd7d9bd3Smrg
368fd7d9bd3Smrgexit 0
369350952b9Smrg
370350952b9Smrg# Local variables:
371350952b9Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
372350952b9Smrg# time-stamp-start: "scriptversion="
373350952b9Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
374350952b9Smrg# time-stamp-time-zone: "UTC"
375350952b9Smrg# time-stamp-end: "; # UTC"
376350952b9Smrg# End:
377