Project

General

Profile

Download (10.9 KB) Statistics
| Branch: | Revision:
1
#! /bin/sh
2
# Common stub for a few missing GNU programs while installing.
3

    
4
scriptversion=2006-05-10.23
5

    
6
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
7
#   Free Software Foundation, Inc.
8
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
9

    
10
# This program is free software; you can redistribute it and/or modify
11
# it under the terms of the GNU General Public License as published by
12
# the Free Software Foundation; either version 2, or (at your option)
13
# any later version.
14

    
15
# This program is distributed in the hope that it will be useful,
16
# but WITHOUT ANY WARRANTY; without even the implied warranty of
17
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
# GNU General Public License for more details.
19

    
20
# You should have received a copy of the GNU General Public License
21
# along with this program; if not, write to the Free Software
22
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
23
# 02110-1301, USA.
24

    
25
# As a special exception to the GNU General Public License, if you
26
# distribute this file as part of a program that contains a
27
# configuration script generated by Autoconf, you may include it under
28
# the same distribution terms that you use for the rest of that program.
29

    
30
if test $# -eq 0; then
31
  echo 1>&2 "Try \`$0 --help' for more information"
32
  exit 1
33
fi
34

    
35
run=:
36
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
37
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
38

    
39
# In the cases where this matters, `missing' is being run in the
40
# srcdir already.
41
if test -f configure.ac; then
42
  configure_ac=configure.ac
43
else
44
  configure_ac=configure.in
45
fi
46

    
47
msg="missing on your system"
48

    
49
case $1 in
50
--run)
51
  # Try to run requested program, and just exit if it succeeds.
52
  run=
53
  shift
54
  "$@" && exit 0
55
  # Exit code 63 means version mismatch.  This often happens
56
  # when the user try to use an ancient version of a tool on
57
  # a file that requires a minimum version.  In this case we
58
  # we should proceed has if the program had been absent, or
59
  # if --run hadn't been passed.
60
  if test $? = 63; then
61
    run=:
62
    msg="probably too old"
63
  fi
64
  ;;
65

    
66
  -h|--h|--he|--hel|--help)
67
    echo "\
68
$0 [OPTION]... PROGRAM [ARGUMENT]...
69

    
70
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
71
error status if there is no known handling for PROGRAM.
72

    
73
Options:
74
  -h, --help      display this help and exit
75
  -v, --version   output version information and exit
76
  --run           try to run the given command, and emulate it if it fails
77

    
78
Supported PROGRAM values:
79
  aclocal      touch file \`aclocal.m4'
80
  autoconf     touch file \`configure'
81
  autoheader   touch file \`config.h.in'
82
  autom4te     touch the output file, or create a stub one
83
  automake     touch all \`Makefile.in' files
84
  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
85
  flex         create \`lex.yy.c', if possible, from existing .c
86
  help2man     touch the output file
87
  lex          create \`lex.yy.c', if possible, from existing .c
88
  makeinfo     touch the output file
89
  tar          try tar, gnutar, gtar, then tar without non-portable flags
90
  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
91

    
92
Send bug reports to <bug-automake@gnu.org>."
93
    exit $?
94
    ;;
95

    
96
  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
97
    echo "missing $scriptversion (GNU Automake)"
98
    exit $?
99
    ;;
100

    
101
  -*)
102
    echo 1>&2 "$0: Unknown \`$1' option"
103
    echo 1>&2 "Try \`$0 --help' for more information"
104
    exit 1
105
    ;;
106

    
107
esac
108

    
109
# Now exit if we have it, but it failed.  Also exit now if we
110
# don't have it and --version was passed (most likely to detect
111
# the program).
112
case $1 in
113
  lex|yacc)
114
    # Not GNU programs, they don't have --version.
115
    ;;
116

    
117
  tar)
118
    if test -n "$run"; then
119
       echo 1>&2 "ERROR: \`tar' requires --run"
120
       exit 1
121
    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
122
       exit 1
123
    fi
124
    ;;
125

    
126
  *)
127
    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
128
       # We have it, but it failed.
129
       exit 1
130
    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
131
       # Could not run --version or --help.  This is probably someone
132
       # running `$TOOL --version' or `$TOOL --help' to check whether
133
       # $TOOL exists and not knowing $TOOL uses missing.
134
       exit 1
135
    fi
136
    ;;
137
esac
138

    
139
# If it does not exist, or fails to run (possibly an outdated version),
140
# try to emulate it.
141
case $1 in
142
  aclocal*)
143
    echo 1>&2 "\
144
WARNING: \`$1' is $msg.  You should only need it if
145
         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
146
         to install the \`Automake' and \`Perl' packages.  Grab them from
147
         any GNU archive site."
148
    touch aclocal.m4
149
    ;;
150

    
151
  autoconf)
152
    echo 1>&2 "\
153
WARNING: \`$1' is $msg.  You should only need it if
154
         you modified \`${configure_ac}'.  You might want to install the
155
         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
156
         archive site."
157
    touch configure
158
    ;;
159

    
160
  autoheader)
161
    echo 1>&2 "\
162
WARNING: \`$1' is $msg.  You should only need it if
163
         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
164
         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
165
         from any GNU archive site."
166
    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
167
    test -z "$files" && files="config.h"
168
    touch_files=
169
    for f in $files; do
170
      case $f in
171
      *:*) touch_files="$touch_files "`echo "$f" |
172
				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
173
      *) touch_files="$touch_files $f.in";;
174
      esac
175
    done
176
    touch $touch_files
177
    ;;
178

    
179
  automake*)
180
    echo 1>&2 "\
181
WARNING: \`$1' is $msg.  You should only need it if
182
         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
183
         You might want to install the \`Automake' and \`Perl' packages.
184
         Grab them from any GNU archive site."
185
    find . -type f -name Makefile.am -print |
186
	   sed 's/\.am$/.in/' |
187
	   while read f; do touch "$f"; done
188
    ;;
189

    
190
  autom4te)
191
    echo 1>&2 "\
192
WARNING: \`$1' is needed, but is $msg.
193
         You might have modified some files without having the
194
         proper tools for further handling them.
195
         You can get \`$1' as part of \`Autoconf' from any GNU
196
         archive site."
197

    
198
    file=`echo "$*" | sed -n "$sed_output"`
199
    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
200
    if test -f "$file"; then
201
	touch $file
202
    else
203
	test -z "$file" || exec >$file
204
	echo "#! /bin/sh"
205
	echo "# Created by GNU Automake missing as a replacement of"
206
	echo "#  $ $@"
207
	echo "exit 0"
208
	chmod +x $file
209
	exit 1
210
    fi
211
    ;;
212

    
213
  bison|yacc)
214
    echo 1>&2 "\
215
WARNING: \`$1' $msg.  You should only need it if
216
         you modified a \`.y' file.  You may need the \`Bison' package
217
         in order for those modifications to take effect.  You can get
218
         \`Bison' from any GNU archive site."
219
    rm -f y.tab.c y.tab.h
220
    if test $# -ne 1; then
221
        eval LASTARG="\${$#}"
222
	case $LASTARG in
223
	*.y)
224
	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
225
	    if test -f "$SRCFILE"; then
226
	         cp "$SRCFILE" y.tab.c
227
	    fi
228
	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
229
	    if test -f "$SRCFILE"; then
230
	         cp "$SRCFILE" y.tab.h
231
	    fi
232
	  ;;
233
	esac
234
    fi
235
    if test ! -f y.tab.h; then
236
	echo >y.tab.h
237
    fi
238
    if test ! -f y.tab.c; then
239
	echo 'main() { return 0; }' >y.tab.c
240
    fi
241
    ;;
242

    
243
  lex|flex)
244
    echo 1>&2 "\
245
WARNING: \`$1' is $msg.  You should only need it if
246
         you modified a \`.l' file.  You may need the \`Flex' package
247
         in order for those modifications to take effect.  You can get
248
         \`Flex' from any GNU archive site."
249
    rm -f lex.yy.c
250
    if test $# -ne 1; then
251
        eval LASTARG="\${$#}"
252
	case $LASTARG in
253
	*.l)
254
	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
255
	    if test -f "$SRCFILE"; then
256
	         cp "$SRCFILE" lex.yy.c
257
	    fi
258
	  ;;
259
	esac
260
    fi
261
    if test ! -f lex.yy.c; then
262
	echo 'main() { return 0; }' >lex.yy.c
263
    fi
264
    ;;
265

    
266
  help2man)
267
    echo 1>&2 "\
268
WARNING: \`$1' is $msg.  You should only need it if
269
	 you modified a dependency of a manual page.  You may need the
270
	 \`Help2man' package in order for those modifications to take
271
	 effect.  You can get \`Help2man' from any GNU archive site."
272

    
273
    file=`echo "$*" | sed -n "$sed_output"`
274
    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
275
    if test -f "$file"; then
276
	touch $file
277
    else
278
	test -z "$file" || exec >$file
279
	echo ".ab help2man is required to generate this page"
280
	exit 1
281
    fi
282
    ;;
283

    
284
  makeinfo)
285
    echo 1>&2 "\
286
WARNING: \`$1' is $msg.  You should only need it if
287
         you modified a \`.texi' or \`.texinfo' file, or any other file
288
         indirectly affecting the aspect of the manual.  The spurious
289
         call might also be the consequence of using a buggy \`make' (AIX,
290
         DU, IRIX).  You might want to install the \`Texinfo' package or
291
         the \`GNU make' package.  Grab either from any GNU archive site."
292
    # The file to touch is that specified with -o ...
293
    file=`echo "$*" | sed -n "$sed_output"`
294
    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
295
    if test -z "$file"; then
296
      # ... or it is the one specified with @setfilename ...
297
      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
298
      file=`sed -n '
299
	/^@setfilename/{
300
	  s/.* \([^ ]*\) *$/\1/
301
	  p
302
	  q
303
	}' $infile`
304
      # ... or it is derived from the source name (dir/f.texi becomes f.info)
305
      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
306
    fi
307
    # If the file does not exist, the user really needs makeinfo;
308
    # let's fail without touching anything.
309
    test -f $file || exit 1
310
    touch $file
311
    ;;
312

    
313
  tar)
314
    shift
315

    
316
    # We have already tried tar in the generic part.
317
    # Look for gnutar/gtar before invocation to avoid ugly error
318
    # messages.
319
    if (gnutar --version > /dev/null 2>&1); then
320
       gnutar "$@" && exit 0
321
    fi
322
    if (gtar --version > /dev/null 2>&1); then
323
       gtar "$@" && exit 0
324
    fi
325
    firstarg="$1"
326
    if shift; then
327
	case $firstarg in
328
	*o*)
329
	    firstarg=`echo "$firstarg" | sed s/o//`
330
	    tar "$firstarg" "$@" && exit 0
331
	    ;;
332
	esac
333
	case $firstarg in
334
	*h*)
335
	    firstarg=`echo "$firstarg" | sed s/h//`
336
	    tar "$firstarg" "$@" && exit 0
337
	    ;;
338
	esac
339
    fi
340

    
341
    echo 1>&2 "\
342
WARNING: I can't seem to be able to run \`tar' with the given arguments.
343
         You may want to install GNU tar or Free paxutils, or check the
344
         command line arguments."
345
    exit 1
346
    ;;
347

    
348
  *)
349
    echo 1>&2 "\
350
WARNING: \`$1' is needed, and is $msg.
351
         You might have modified some files without having the
352
         proper tools for further handling them.  Check the \`README' file,
353
         it often tells you about the needed prerequisites for installing
354
         this package.  You may also peek at any GNU archive site, in case
355
         some other package would contain this missing \`$1' program."
356
    exit 1
357
    ;;
358
esac
359

    
360
exit 0
361

    
362
# Local variables:
363
# eval: (add-hook 'write-file-hooks 'time-stamp)
364
# time-stamp-start: "scriptversion="
365
# time-stamp-format: "%:y-%02m-%02d.%02H"
366
# time-stamp-end: "$"
367
# End:
(37-37/56)