missing revision 2ceb2653
1b7d53ee5Smrg#! /bin/sh
2b7d53ee5Smrg# Common stub for a few missing GNU programs while installing.
32ceb2653Smrg
42ceb2653Smrgscriptversion=2009-04-28.21; # UTC
52ceb2653Smrg
62ceb2653Smrg# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
72ceb2653Smrg# 2008, 2009 Free Software Foundation, Inc.
8b7d53ee5Smrg# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
9b7d53ee5Smrg
10b7d53ee5Smrg# This program is free software; you can redistribute it and/or modify
11b7d53ee5Smrg# it under the terms of the GNU General Public License as published by
12b7d53ee5Smrg# the Free Software Foundation; either version 2, or (at your option)
13b7d53ee5Smrg# any later version.
14b7d53ee5Smrg
15b7d53ee5Smrg# This program is distributed in the hope that it will be useful,
16b7d53ee5Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
17b7d53ee5Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18b7d53ee5Smrg# GNU General Public License for more details.
19b7d53ee5Smrg
20b7d53ee5Smrg# You should have received a copy of the GNU General Public License
212ceb2653Smrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
22b7d53ee5Smrg
23b7d53ee5Smrg# As a special exception to the GNU General Public License, if you
24b7d53ee5Smrg# distribute this file as part of a program that contains a
25b7d53ee5Smrg# configuration script generated by Autoconf, you may include it under
26b7d53ee5Smrg# the same distribution terms that you use for the rest of that program.
27b7d53ee5Smrg
28b7d53ee5Smrgif test $# -eq 0; then
29b7d53ee5Smrg  echo 1>&2 "Try \`$0 --help' for more information"
30b7d53ee5Smrg  exit 1
31b7d53ee5Smrgfi
32b7d53ee5Smrg
33b7d53ee5Smrgrun=:
342ceb2653Smrgsed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
352ceb2653Smrgsed_minuso='s/.* -o \([^ ]*\).*/\1/p'
36b7d53ee5Smrg
37b7d53ee5Smrg# In the cases where this matters, `missing' is being run in the
38b7d53ee5Smrg# srcdir already.
39b7d53ee5Smrgif test -f configure.ac; then
40b7d53ee5Smrg  configure_ac=configure.ac
41b7d53ee5Smrgelse
42b7d53ee5Smrg  configure_ac=configure.in
43b7d53ee5Smrgfi
44b7d53ee5Smrg
452ceb2653Smrgmsg="missing on your system"
462ceb2653Smrg
472ceb2653Smrgcase $1 in
48b7d53ee5Smrg--run)
49b7d53ee5Smrg  # Try to run requested program, and just exit if it succeeds.
50b7d53ee5Smrg  run=
51b7d53ee5Smrg  shift
52b7d53ee5Smrg  "$@" && exit 0
532ceb2653Smrg  # Exit code 63 means version mismatch.  This often happens
542ceb2653Smrg  # when the user try to use an ancient version of a tool on
552ceb2653Smrg  # a file that requires a minimum version.  In this case we
562ceb2653Smrg  # we should proceed has if the program had been absent, or
572ceb2653Smrg  # if --run hadn't been passed.
582ceb2653Smrg  if test $? = 63; then
592ceb2653Smrg    run=:
602ceb2653Smrg    msg="probably too old"
612ceb2653Smrg  fi
62b7d53ee5Smrg  ;;
63b7d53ee5Smrg
64b7d53ee5Smrg  -h|--h|--he|--hel|--help)
65b7d53ee5Smrg    echo "\
66b7d53ee5Smrg$0 [OPTION]... PROGRAM [ARGUMENT]...
67b7d53ee5Smrg
68b7d53ee5SmrgHandle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
69b7d53ee5Smrgerror status if there is no known handling for PROGRAM.
70b7d53ee5Smrg
71b7d53ee5SmrgOptions:
72b7d53ee5Smrg  -h, --help      display this help and exit
73b7d53ee5Smrg  -v, --version   output version information and exit
74b7d53ee5Smrg  --run           try to run the given command, and emulate it if it fails
75b7d53ee5Smrg
76b7d53ee5SmrgSupported PROGRAM values:
77b7d53ee5Smrg  aclocal      touch file \`aclocal.m4'
78b7d53ee5Smrg  autoconf     touch file \`configure'
79b7d53ee5Smrg  autoheader   touch file \`config.h.in'
802ceb2653Smrg  autom4te     touch the output file, or create a stub one
81b7d53ee5Smrg  automake     touch all \`Makefile.in' files
82b7d53ee5Smrg  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
83b7d53ee5Smrg  flex         create \`lex.yy.c', if possible, from existing .c
84b7d53ee5Smrg  help2man     touch the output file
85b7d53ee5Smrg  lex          create \`lex.yy.c', if possible, from existing .c
86b7d53ee5Smrg  makeinfo     touch the output file
87b7d53ee5Smrg  tar          try tar, gnutar, gtar, then tar without non-portable flags
882ceb2653Smrg  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
892ceb2653Smrg
902ceb2653SmrgVersion suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
912ceb2653Smrg\`g' are ignored when checking the name.
922ceb2653Smrg
932ceb2653SmrgSend bug reports to <bug-automake@gnu.org>."
942ceb2653Smrg    exit $?
95b7d53ee5Smrg    ;;
96b7d53ee5Smrg
97b7d53ee5Smrg  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
982ceb2653Smrg    echo "missing $scriptversion (GNU Automake)"
992ceb2653Smrg    exit $?
100b7d53ee5Smrg    ;;
101b7d53ee5Smrg
102b7d53ee5Smrg  -*)
103b7d53ee5Smrg    echo 1>&2 "$0: Unknown \`$1' option"
104b7d53ee5Smrg    echo 1>&2 "Try \`$0 --help' for more information"
105b7d53ee5Smrg    exit 1
106b7d53ee5Smrg    ;;
107b7d53ee5Smrg
1082ceb2653Smrgesac
1092ceb2653Smrg
1102ceb2653Smrg# normalize program name to check for.
1112ceb2653Smrgprogram=`echo "$1" | sed '
1122ceb2653Smrg  s/^gnu-//; t
1132ceb2653Smrg  s/^gnu//; t
1142ceb2653Smrg  s/^g//; t'`
1152ceb2653Smrg
1162ceb2653Smrg# Now exit if we have it, but it failed.  Also exit now if we
1172ceb2653Smrg# don't have it and --version was passed (most likely to detect
1182ceb2653Smrg# the program).  This is about non-GNU programs, so use $1 not
1192ceb2653Smrg# $program.
1202ceb2653Smrgcase $1 in
1212ceb2653Smrg  lex*|yacc*)
1222ceb2653Smrg    # Not GNU programs, they don't have --version.
1232ceb2653Smrg    ;;
1242ceb2653Smrg
1252ceb2653Smrg  tar*)
1262ceb2653Smrg    if test -n "$run"; then
1272ceb2653Smrg       echo 1>&2 "ERROR: \`tar' requires --run"
1282ceb2653Smrg       exit 1
1292ceb2653Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
1302ceb2653Smrg       exit 1
1312ceb2653Smrg    fi
1322ceb2653Smrg    ;;
1332ceb2653Smrg
1342ceb2653Smrg  *)
135b7d53ee5Smrg    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
136b7d53ee5Smrg       # We have it, but it failed.
137b7d53ee5Smrg       exit 1
1382ceb2653Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
1392ceb2653Smrg       # Could not run --version or --help.  This is probably someone
1402ceb2653Smrg       # running `$TOOL --version' or `$TOOL --help' to check whether
1412ceb2653Smrg       # $TOOL exists and not knowing $TOOL uses missing.
1422ceb2653Smrg       exit 1
143b7d53ee5Smrg    fi
1442ceb2653Smrg    ;;
1452ceb2653Smrgesac
146b7d53ee5Smrg
1472ceb2653Smrg# If it does not exist, or fails to run (possibly an outdated version),
1482ceb2653Smrg# try to emulate it.
1492ceb2653Smrgcase $program in
1502ceb2653Smrg  aclocal*)
151b7d53ee5Smrg    echo 1>&2 "\
1522ceb2653SmrgWARNING: \`$1' is $msg.  You should only need it if
153b7d53ee5Smrg         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
154b7d53ee5Smrg         to install the \`Automake' and \`Perl' packages.  Grab them from
155b7d53ee5Smrg         any GNU archive site."
156b7d53ee5Smrg    touch aclocal.m4
157b7d53ee5Smrg    ;;
158b7d53ee5Smrg
1592ceb2653Smrg  autoconf*)
160b7d53ee5Smrg    echo 1>&2 "\
1612ceb2653SmrgWARNING: \`$1' is $msg.  You should only need it if
162b7d53ee5Smrg         you modified \`${configure_ac}'.  You might want to install the
163b7d53ee5Smrg         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
164b7d53ee5Smrg         archive site."
165b7d53ee5Smrg    touch configure
166b7d53ee5Smrg    ;;
167b7d53ee5Smrg
1682ceb2653Smrg  autoheader*)
169b7d53ee5Smrg    echo 1>&2 "\
1702ceb2653SmrgWARNING: \`$1' is $msg.  You should only need it if
171b7d53ee5Smrg         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
172b7d53ee5Smrg         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
173b7d53ee5Smrg         from any GNU archive site."
174b7d53ee5Smrg    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
175b7d53ee5Smrg    test -z "$files" && files="config.h"
176b7d53ee5Smrg    touch_files=
177b7d53ee5Smrg    for f in $files; do
1782ceb2653Smrg      case $f in
179b7d53ee5Smrg      *:*) touch_files="$touch_files "`echo "$f" |
180b7d53ee5Smrg				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
181b7d53ee5Smrg      *) touch_files="$touch_files $f.in";;
182b7d53ee5Smrg      esac
183b7d53ee5Smrg    done
184b7d53ee5Smrg    touch $touch_files
185b7d53ee5Smrg    ;;
186b7d53ee5Smrg
187b7d53ee5Smrg  automake*)
188b7d53ee5Smrg    echo 1>&2 "\
1892ceb2653SmrgWARNING: \`$1' is $msg.  You should only need it if
190b7d53ee5Smrg         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
191b7d53ee5Smrg         You might want to install the \`Automake' and \`Perl' packages.
192b7d53ee5Smrg         Grab them from any GNU archive site."
193b7d53ee5Smrg    find . -type f -name Makefile.am -print |
194b7d53ee5Smrg	   sed 's/\.am$/.in/' |
195b7d53ee5Smrg	   while read f; do touch "$f"; done
196b7d53ee5Smrg    ;;
197b7d53ee5Smrg
1982ceb2653Smrg  autom4te*)
199b7d53ee5Smrg    echo 1>&2 "\
2002ceb2653SmrgWARNING: \`$1' is needed, but is $msg.
2012ceb2653Smrg         You might have modified some files without having the
202b7d53ee5Smrg         proper tools for further handling them.
203b7d53ee5Smrg         You can get \`$1' as part of \`Autoconf' from any GNU
204b7d53ee5Smrg         archive site."
205b7d53ee5Smrg
2062ceb2653Smrg    file=`echo "$*" | sed -n "$sed_output"`
2072ceb2653Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
208b7d53ee5Smrg    if test -f "$file"; then
209b7d53ee5Smrg	touch $file
210b7d53ee5Smrg    else
211b7d53ee5Smrg	test -z "$file" || exec >$file
212b7d53ee5Smrg	echo "#! /bin/sh"
213b7d53ee5Smrg	echo "# Created by GNU Automake missing as a replacement of"
214b7d53ee5Smrg	echo "#  $ $@"
215b7d53ee5Smrg	echo "exit 0"
216b7d53ee5Smrg	chmod +x $file
217b7d53ee5Smrg	exit 1
218b7d53ee5Smrg    fi
219b7d53ee5Smrg    ;;
220b7d53ee5Smrg
2212ceb2653Smrg  bison*|yacc*)
222b7d53ee5Smrg    echo 1>&2 "\
2232ceb2653SmrgWARNING: \`$1' $msg.  You should only need it if
224b7d53ee5Smrg         you modified a \`.y' file.  You may need the \`Bison' package
225b7d53ee5Smrg         in order for those modifications to take effect.  You can get
226b7d53ee5Smrg         \`Bison' from any GNU archive site."
227b7d53ee5Smrg    rm -f y.tab.c y.tab.h
2282ceb2653Smrg    if test $# -ne 1; then
229b7d53ee5Smrg        eval LASTARG="\${$#}"
2302ceb2653Smrg	case $LASTARG in
231b7d53ee5Smrg	*.y)
232b7d53ee5Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
2332ceb2653Smrg	    if test -f "$SRCFILE"; then
234b7d53ee5Smrg	         cp "$SRCFILE" y.tab.c
235b7d53ee5Smrg	    fi
236b7d53ee5Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
2372ceb2653Smrg	    if test -f "$SRCFILE"; then
238b7d53ee5Smrg	         cp "$SRCFILE" y.tab.h
239b7d53ee5Smrg	    fi
240b7d53ee5Smrg	  ;;
241b7d53ee5Smrg	esac
242b7d53ee5Smrg    fi
2432ceb2653Smrg    if test ! -f y.tab.h; then
244b7d53ee5Smrg	echo >y.tab.h
245b7d53ee5Smrg    fi
2462ceb2653Smrg    if test ! -f y.tab.c; then
247b7d53ee5Smrg	echo 'main() { return 0; }' >y.tab.c
248b7d53ee5Smrg    fi
249b7d53ee5Smrg    ;;
250b7d53ee5Smrg
2512ceb2653Smrg  lex*|flex*)
252b7d53ee5Smrg    echo 1>&2 "\
2532ceb2653SmrgWARNING: \`$1' is $msg.  You should only need it if
254b7d53ee5Smrg         you modified a \`.l' file.  You may need the \`Flex' package
255b7d53ee5Smrg         in order for those modifications to take effect.  You can get
256b7d53ee5Smrg         \`Flex' from any GNU archive site."
257b7d53ee5Smrg    rm -f lex.yy.c
2582ceb2653Smrg    if test $# -ne 1; then
259b7d53ee5Smrg        eval LASTARG="\${$#}"
2602ceb2653Smrg	case $LASTARG in
261b7d53ee5Smrg	*.l)
262b7d53ee5Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
2632ceb2653Smrg	    if test -f "$SRCFILE"; then
264b7d53ee5Smrg	         cp "$SRCFILE" lex.yy.c
265b7d53ee5Smrg	    fi
266b7d53ee5Smrg	  ;;
267b7d53ee5Smrg	esac
268b7d53ee5Smrg    fi
2692ceb2653Smrg    if test ! -f lex.yy.c; then
270b7d53ee5Smrg	echo 'main() { return 0; }' >lex.yy.c
271b7d53ee5Smrg    fi
272b7d53ee5Smrg    ;;
273b7d53ee5Smrg
2742ceb2653Smrg  help2man*)
275b7d53ee5Smrg    echo 1>&2 "\
2762ceb2653SmrgWARNING: \`$1' is $msg.  You should only need it if
277b7d53ee5Smrg	 you modified a dependency of a manual page.  You may need the
278b7d53ee5Smrg	 \`Help2man' package in order for those modifications to take
279b7d53ee5Smrg	 effect.  You can get \`Help2man' from any GNU archive site."
280b7d53ee5Smrg
2812ceb2653Smrg    file=`echo "$*" | sed -n "$sed_output"`
2822ceb2653Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
2832ceb2653Smrg    if test -f "$file"; then
284b7d53ee5Smrg	touch $file
285b7d53ee5Smrg    else
286b7d53ee5Smrg	test -z "$file" || exec >$file
287b7d53ee5Smrg	echo ".ab help2man is required to generate this page"
2882ceb2653Smrg	exit $?
289b7d53ee5Smrg    fi
290b7d53ee5Smrg    ;;
291b7d53ee5Smrg
2922ceb2653Smrg  makeinfo*)
293b7d53ee5Smrg    echo 1>&2 "\
2942ceb2653SmrgWARNING: \`$1' is $msg.  You should only need it if
295b7d53ee5Smrg         you modified a \`.texi' or \`.texinfo' file, or any other file
296b7d53ee5Smrg         indirectly affecting the aspect of the manual.  The spurious
297b7d53ee5Smrg         call might also be the consequence of using a buggy \`make' (AIX,
298b7d53ee5Smrg         DU, IRIX).  You might want to install the \`Texinfo' package or
299b7d53ee5Smrg         the \`GNU make' package.  Grab either from any GNU archive site."
3002ceb2653Smrg    # The file to touch is that specified with -o ...
3012ceb2653Smrg    file=`echo "$*" | sed -n "$sed_output"`
3022ceb2653Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
303b7d53ee5Smrg    if test -z "$file"; then
3042ceb2653Smrg      # ... or it is the one specified with @setfilename ...
3052ceb2653Smrg      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
3062ceb2653Smrg      file=`sed -n '
3072ceb2653Smrg	/^@setfilename/{
3082ceb2653Smrg	  s/.* \([^ ]*\) *$/\1/
3092ceb2653Smrg	  p
3102ceb2653Smrg	  q
3112ceb2653Smrg	}' $infile`
3122ceb2653Smrg      # ... or it is derived from the source name (dir/f.texi becomes f.info)
3132ceb2653Smrg      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
314b7d53ee5Smrg    fi
3152ceb2653Smrg    # If the file does not exist, the user really needs makeinfo;
3162ceb2653Smrg    # let's fail without touching anything.
3172ceb2653Smrg    test -f $file || exit 1
318b7d53ee5Smrg    touch $file
319b7d53ee5Smrg    ;;
320b7d53ee5Smrg
3212ceb2653Smrg  tar*)
322b7d53ee5Smrg    shift
323b7d53ee5Smrg
324b7d53ee5Smrg    # We have already tried tar in the generic part.
325b7d53ee5Smrg    # Look for gnutar/gtar before invocation to avoid ugly error
326b7d53ee5Smrg    # messages.
327b7d53ee5Smrg    if (gnutar --version > /dev/null 2>&1); then
328b7d53ee5Smrg       gnutar "$@" && exit 0
329b7d53ee5Smrg    fi
330b7d53ee5Smrg    if (gtar --version > /dev/null 2>&1); then
331b7d53ee5Smrg       gtar "$@" && exit 0
332b7d53ee5Smrg    fi
333b7d53ee5Smrg    firstarg="$1"
334b7d53ee5Smrg    if shift; then
3352ceb2653Smrg	case $firstarg in
336b7d53ee5Smrg	*o*)
337b7d53ee5Smrg	    firstarg=`echo "$firstarg" | sed s/o//`
338b7d53ee5Smrg	    tar "$firstarg" "$@" && exit 0
339b7d53ee5Smrg	    ;;
340b7d53ee5Smrg	esac
3412ceb2653Smrg	case $firstarg in
342b7d53ee5Smrg	*h*)
343b7d53ee5Smrg	    firstarg=`echo "$firstarg" | sed s/h//`
344b7d53ee5Smrg	    tar "$firstarg" "$@" && exit 0
345b7d53ee5Smrg	    ;;
346b7d53ee5Smrg	esac
347b7d53ee5Smrg    fi
348b7d53ee5Smrg
349b7d53ee5Smrg    echo 1>&2 "\
350b7d53ee5SmrgWARNING: I can't seem to be able to run \`tar' with the given arguments.
351b7d53ee5Smrg         You may want to install GNU tar or Free paxutils, or check the
352b7d53ee5Smrg         command line arguments."
353b7d53ee5Smrg    exit 1
354b7d53ee5Smrg    ;;
355b7d53ee5Smrg
356b7d53ee5Smrg  *)
357b7d53ee5Smrg    echo 1>&2 "\
3582ceb2653SmrgWARNING: \`$1' is needed, and is $msg.
3592ceb2653Smrg         You might have modified some files without having the
360b7d53ee5Smrg         proper tools for further handling them.  Check the \`README' file,
361b7d53ee5Smrg         it often tells you about the needed prerequisites for installing
362b7d53ee5Smrg         this package.  You may also peek at any GNU archive site, in case
363b7d53ee5Smrg         some other package would contain this missing \`$1' program."
364b7d53ee5Smrg    exit 1
365b7d53ee5Smrg    ;;
366b7d53ee5Smrgesac
367b7d53ee5Smrg
368b7d53ee5Smrgexit 0
3692ceb2653Smrg
3702ceb2653Smrg# Local variables:
3712ceb2653Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
3722ceb2653Smrg# time-stamp-start: "scriptversion="
3732ceb2653Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
3742ceb2653Smrg# time-stamp-time-zone: "UTC"
3752ceb2653Smrg# time-stamp-end: "; # UTC"
3762ceb2653Smrg# End:
377