Statistics
| Revision:

root / missing

History | View | Annotate | Download (10 KB)

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