The R Project SVN R

Rev

Rev 37959 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
10905 hornik 1
#! /bin/sh
2
# Common stub for a few missing GNU programs while installing.
26214 hornik 3
 
38381 hornik 4
scriptversion=2006-05-10.23
26214 hornik 5
 
37959 hornik 6
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
26214 hornik 7
#   Free Software Foundation, Inc.
10905 hornik 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
34432 hornik 22
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
23
# 02110-1301, USA.
10905 hornik 24
 
15168 pd 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
 
10905 hornik 30
if test $# -eq 0; then
31
  echo 1>&2 "Try \`$0 --help' for more information"
32
  exit 1
33
fi
34
 
35
run=:
38381 hornik 36
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
37
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
10905 hornik 38
 
15168 pd 39
# In the cases where this matters, `missing' is being run in the
40
# srcdir already.
14685 hornik 41
if test -f configure.ac; then
42
  configure_ac=configure.ac
43
else
44
  configure_ac=configure.in
45
fi
46
 
26214 hornik 47
msg="missing on your system"
48
 
38381 hornik 49
case $1 in
10905 hornik 50
--run)
51
  # Try to run requested program, and just exit if it succeeds.
52
  run=
53
  shift
54
  "$@" && exit 0
26214 hornik 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
10905 hornik 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'
38381 hornik 82
  autom4te     touch the output file, or create a stub one
10905 hornik 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
26214 hornik 90
  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
91
 
92
Send bug reports to <bug-automake@gnu.org>."
37959 hornik 93
    exit $?
10905 hornik 94
    ;;
95
 
96
  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
26214 hornik 97
    echo "missing $scriptversion (GNU Automake)"
37959 hornik 98
    exit $?
10905 hornik 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
 
33038 hornik 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).
38381 hornik 112
case $1 in
33038 hornik 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
  *)
16212 hornik 127
    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
128
       # We have it, but it failed.
129
       exit 1
33038 hornik 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
16212 hornik 135
    fi
33038 hornik 136
    ;;
137
esac
16212 hornik 138
 
33038 hornik 139
# If it does not exist, or fails to run (possibly an outdated version),
140
# try to emulate it.
38381 hornik 141
case $1 in
33038 hornik 142
  aclocal*)
10905 hornik 143
    echo 1>&2 "\
26214 hornik 144
WARNING: \`$1' is $msg.  You should only need it if
14685 hornik 145
         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
10905 hornik 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 "\
26214 hornik 153
WARNING: \`$1' is $msg.  You should only need it if
14685 hornik 154
         you modified \`${configure_ac}'.  You might want to install the
10905 hornik 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 "\
26214 hornik 162
WARNING: \`$1' is $msg.  You should only need it if
14685 hornik 163
         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
10905 hornik 164
         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
165
         from any GNU archive site."
14685 hornik 166
    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
10905 hornik 167
    test -z "$files" && files="config.h"
168
    touch_files=
169
    for f in $files; do
38381 hornik 170
      case $f in
10905 hornik 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
 
18061 hornik 179
  automake*)
10905 hornik 180
    echo 1>&2 "\
26214 hornik 181
WARNING: \`$1' is $msg.  You should only need it if
14685 hornik 182
         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
10905 hornik 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
 
16212 hornik 190
  autom4te)
191
    echo 1>&2 "\
26214 hornik 192
WARNING: \`$1' is needed, but is $msg.
193
         You might have modified some files without having the
16212 hornik 194
         proper tools for further handling them.
25784 hornik 195
         You can get \`$1' as part of \`Autoconf' from any GNU
16212 hornik 196
         archive site."
197
 
38381 hornik 198
    file=`echo "$*" | sed -n "$sed_output"`
199
    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
16212 hornik 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
 
10905 hornik 213
  bison|yacc)
214
    echo 1>&2 "\
26214 hornik 215
WARNING: \`$1' $msg.  You should only need it if
10905 hornik 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
38381 hornik 220
    if test $# -ne 1; then
10905 hornik 221
        eval LASTARG="\${$#}"
38381 hornik 222
	case $LASTARG in
10905 hornik 223
	*.y)
224
	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
38381 hornik 225
	    if test -f "$SRCFILE"; then
10905 hornik 226
	         cp "$SRCFILE" y.tab.c
227
	    fi
228
	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
38381 hornik 229
	    if test -f "$SRCFILE"; then
10905 hornik 230
	         cp "$SRCFILE" y.tab.h
231
	    fi
232
	  ;;
233
	esac
234
    fi
38381 hornik 235
    if test ! -f y.tab.h; then
10905 hornik 236
	echo >y.tab.h
237
    fi
38381 hornik 238
    if test ! -f y.tab.c; then
10905 hornik 239
	echo 'main() { return 0; }' >y.tab.c
240
    fi
241
    ;;
242
 
243
  lex|flex)
244
    echo 1>&2 "\
26214 hornik 245
WARNING: \`$1' is $msg.  You should only need it if
10905 hornik 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
38381 hornik 250
    if test $# -ne 1; then
10905 hornik 251
        eval LASTARG="\${$#}"
38381 hornik 252
	case $LASTARG in
10905 hornik 253
	*.l)
254
	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
38381 hornik 255
	    if test -f "$SRCFILE"; then
10905 hornik 256
	         cp "$SRCFILE" lex.yy.c
257
	    fi
258
	  ;;
259
	esac
260
    fi
38381 hornik 261
    if test ! -f lex.yy.c; then
10905 hornik 262
	echo 'main() { return 0; }' >lex.yy.c
263
    fi
264
    ;;
265
 
266
  help2man)
267
    echo 1>&2 "\
26214 hornik 268
WARNING: \`$1' is $msg.  You should only need it if
10905 hornik 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
 
38381 hornik 273
    file=`echo "$*" | sed -n "$sed_output"`
274
    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
275
    if test -f "$file"; then
10905 hornik 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 "\
26214 hornik 286
WARNING: \`$1' is $msg.  You should only need it if
10905 hornik 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."
37959 hornik 292
    # The file to touch is that specified with -o ...
38381 hornik 293
    file=`echo "$*" | sed -n "$sed_output"`
294
    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
10905 hornik 295
    if test -z "$file"; then
37959 hornik 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
10905 hornik 306
    fi
37959 hornik 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
10905 hornik 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
19979 hornik 320
       gnutar "$@" && exit 0
10905 hornik 321
    fi
322
    if (gtar --version > /dev/null 2>&1); then
19979 hornik 323
       gtar "$@" && exit 0
10905 hornik 324
    fi
325
    firstarg="$1"
326
    if shift; then
38381 hornik 327
	case $firstarg in
10905 hornik 328
	*o*)
329
	    firstarg=`echo "$firstarg" | sed s/o//`
19979 hornik 330
	    tar "$firstarg" "$@" && exit 0
10905 hornik 331
	    ;;
332
	esac
38381 hornik 333
	case $firstarg in
10905 hornik 334
	*h*)
335
	    firstarg=`echo "$firstarg" | sed s/h//`
19979 hornik 336
	    tar "$firstarg" "$@" && exit 0
10905 hornik 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 "\
26214 hornik 350
WARNING: \`$1' is needed, and is $msg.
351
         You might have modified some files without having the
10905 hornik 352
         proper tools for further handling them.  Check the \`README' file,
26214 hornik 353
         it often tells you about the needed prerequisites for installing
10905 hornik 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
26214 hornik 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: