comparison missing @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents 77e2b8dfacca
children
comparison
equal deleted inserted replaced
68:561a7518be6b 111:04ced10e8804
1 #! /bin/sh 1 #! /bin/sh
2 # Common stub for a few missing GNU programs while installing. 2 # Common wrapper for a few potentially missing GNU programs.
3 3
4 scriptversion=2009-04-28.21; # UTC 4 scriptversion=2013-10-28.13; # UTC
5 5
6 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 6 # Copyright (C) 1996-2014 Free Software Foundation, Inc.
7 # 2008, 2009 Free Software Foundation, Inc. 7 # Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
8 # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
9 8
10 # This program is free software; you can redistribute it and/or modify 9 # 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 10 # 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) 11 # the Free Software Foundation; either version 2, or (at your option)
13 # any later version. 12 # any later version.
24 # distribute this file as part of a program that contains a 23 # distribute this file as part of a program that contains a
25 # configuration script generated by Autoconf, you may include it under 24 # configuration script generated by Autoconf, you may include it under
26 # the same distribution terms that you use for the rest of that program. 25 # the same distribution terms that you use for the rest of that program.
27 26
28 if test $# -eq 0; then 27 if test $# -eq 0; then
29 echo 1>&2 "Try \`$0 --help' for more information" 28 echo 1>&2 "Try '$0 --help' for more information"
30 exit 1 29 exit 1
31 fi 30 fi
32 31
33 run=:
34 sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
35 sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
36
37 # In the cases where this matters, `missing' is being run in the
38 # srcdir already.
39 if test -f configure.ac; then
40 configure_ac=configure.ac
41 else
42 configure_ac=configure.in
43 fi
44
45 msg="missing on your system"
46
47 case $1 in 32 case $1 in
48 --run) 33
49 # Try to run requested program, and just exit if it succeeds. 34 --is-lightweight)
50 run= 35 # Used by our autoconf macros to check whether the available missing
51 shift 36 # script is modern enough.
52 "$@" && exit 0 37 exit 0
53 # Exit code 63 means version mismatch. This often happens 38 ;;
54 # when the user try to use an ancient version of a tool on 39
55 # a file that requires a minimum version. In this case we 40 --run)
56 # we should proceed has if the program had been absent, or 41 # Back-compat with the calling convention used by older automake.
57 # if --run hadn't been passed. 42 shift
58 if test $? = 63; then 43 ;;
59 run=:
60 msg="probably too old"
61 fi
62 ;;
63 44
64 -h|--h|--he|--hel|--help) 45 -h|--h|--he|--hel|--help)
65 echo "\ 46 echo "\
66 $0 [OPTION]... PROGRAM [ARGUMENT]... 47 $0 [OPTION]... PROGRAM [ARGUMENT]...
67 48
68 Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an 49 Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
69 error status if there is no known handling for PROGRAM. 50 to PROGRAM being missing or too old.
70 51
71 Options: 52 Options:
72 -h, --help display this help and exit 53 -h, --help display this help and exit
73 -v, --version output version information and exit 54 -v, --version output version information and exit
74 --run try to run the given command, and emulate it if it fails
75 55
76 Supported PROGRAM values: 56 Supported PROGRAM values:
77 aclocal touch file \`aclocal.m4' 57 aclocal autoconf autoheader autom4te automake makeinfo
78 autoconf touch file \`configure' 58 bison yacc flex lex help2man
79 autoheader touch file \`config.h.in' 59
80 autom4te touch the output file, or create a stub one 60 Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
81 automake touch all \`Makefile.in' files 61 'g' are ignored when checking the name.
82 bison create \`y.tab.[ch]', if possible, from existing .[ch]
83 flex create \`lex.yy.c', if possible, from existing .c
84 help2man touch the output file
85 lex create \`lex.yy.c', if possible, from existing .c
86 makeinfo touch the output file
87 tar try tar, gnutar, gtar, then tar without non-portable flags
88 yacc create \`y.tab.[ch]', if possible, from existing .[ch]
89
90 Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
91 \`g' are ignored when checking the name.
92 62
93 Send bug reports to <bug-automake@gnu.org>." 63 Send bug reports to <bug-automake@gnu.org>."
94 exit $? 64 exit $?
95 ;; 65 ;;
96 66
98 echo "missing $scriptversion (GNU Automake)" 68 echo "missing $scriptversion (GNU Automake)"
99 exit $? 69 exit $?
100 ;; 70 ;;
101 71
102 -*) 72 -*)
103 echo 1>&2 "$0: Unknown \`$1' option" 73 echo 1>&2 "$0: unknown '$1' option"
104 echo 1>&2 "Try \`$0 --help' for more information" 74 echo 1>&2 "Try '$0 --help' for more information"
105 exit 1 75 exit 1
106 ;; 76 ;;
107 77
108 esac 78 esac
109 79
110 # normalize program name to check for. 80 # Run the given program, remember its exit status.
111 program=`echo "$1" | sed ' 81 "$@"; st=$?
112 s/^gnu-//; t 82
113 s/^gnu//; t 83 # If it succeeded, we are done.
114 s/^g//; t'` 84 test $st -eq 0 && exit 0
115 85
116 # Now exit if we have it, but it failed. Also exit now if we 86 # Also exit now if we it failed (or wasn't found), and '--version' was
117 # don't have it and --version was passed (most likely to detect 87 # passed; such an option is passed most likely to detect whether the
118 # the program). This is about non-GNU programs, so use $1 not 88 # program is present and works.
119 # $program. 89 case $2 in --version|--help) exit $st;; esac
120 case $1 in 90
121 lex*|yacc*) 91 # Exit code 63 means version mismatch. This often happens when the user
122 # Not GNU programs, they don't have --version. 92 # tries to use an ancient version of a tool on a file that requires a
123 ;; 93 # minimum version.
124 94 if test $st -eq 63; then
125 tar*) 95 msg="probably too old"
126 if test -n "$run"; then 96 elif test $st -eq 127; then
127 echo 1>&2 "ERROR: \`tar' requires --run" 97 # Program was missing.
128 exit 1 98 msg="missing on your system"
129 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then 99 else
130 exit 1 100 # Program was found and executed, but failed. Give up.
131 fi 101 exit $st
132 ;; 102 fi
133 103
134 *) 104 perl_URL=http://www.perl.org/
135 if test -z "$run" && ($1 --version) > /dev/null 2>&1; then 105 flex_URL=http://flex.sourceforge.net/
136 # We have it, but it failed. 106 gnu_software_URL=http://www.gnu.org/software
137 exit 1 107
138 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then 108 program_details ()
139 # Could not run --version or --help. This is probably someone 109 {
140 # running `$TOOL --version' or `$TOOL --help' to check whether 110 case $1 in
141 # $TOOL exists and not knowing $TOOL uses missing. 111 aclocal|automake)
142 exit 1 112 echo "The '$1' program is part of the GNU Automake package:"
143 fi 113 echo "<$gnu_software_URL/automake>"
144 ;; 114 echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
145 esac 115 echo "<$gnu_software_URL/autoconf>"
146 116 echo "<$gnu_software_URL/m4/>"
147 # If it does not exist, or fails to run (possibly an outdated version), 117 echo "<$perl_URL>"
148 # try to emulate it. 118 ;;
149 case $program in 119 autoconf|autom4te|autoheader)
150 aclocal*) 120 echo "The '$1' program is part of the GNU Autoconf package:"
151 echo 1>&2 "\ 121 echo "<$gnu_software_URL/autoconf/>"
152 WARNING: \`$1' is $msg. You should only need it if 122 echo "It also requires GNU m4 and Perl in order to run:"
153 you modified \`acinclude.m4' or \`${configure_ac}'. You might want 123 echo "<$gnu_software_URL/m4/>"
154 to install the \`Automake' and \`Perl' packages. Grab them from 124 echo "<$perl_URL>"
155 any GNU archive site." 125 ;;
156 touch aclocal.m4 126 esac
157 ;; 127 }
158 128
159 autoconf*) 129 give_advice ()
160 echo 1>&2 "\ 130 {
161 WARNING: \`$1' is $msg. You should only need it if 131 # Normalize program name to check for.
162 you modified \`${configure_ac}'. You might want to install the 132 normalized_program=`echo "$1" | sed '
163 \`Autoconf' and \`GNU m4' packages. Grab them from any GNU 133 s/^gnu-//; t
164 archive site." 134 s/^gnu//; t
165 touch configure 135 s/^g//; t'`
166 ;; 136
167 137 printf '%s\n' "'$1' is $msg."
168 autoheader*) 138
169 echo 1>&2 "\ 139 configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
170 WARNING: \`$1' is $msg. You should only need it if 140 case $normalized_program in
171 you modified \`acconfig.h' or \`${configure_ac}'. You might want 141 autoconf*)
172 to install the \`Autoconf' and \`GNU m4' packages. Grab them 142 echo "You should only need it if you modified 'configure.ac',"
173 from any GNU archive site." 143 echo "or m4 files included by it."
174 files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` 144 program_details 'autoconf'
175 test -z "$files" && files="config.h" 145 ;;
176 touch_files= 146 autoheader*)
177 for f in $files; do 147 echo "You should only need it if you modified 'acconfig.h' or"
178 case $f in 148 echo "$configure_deps."
179 *:*) touch_files="$touch_files "`echo "$f" | 149 program_details 'autoheader'
180 sed -e 's/^[^:]*://' -e 's/:.*//'`;; 150 ;;
181 *) touch_files="$touch_files $f.in";; 151 automake*)
182 esac 152 echo "You should only need it if you modified 'Makefile.am' or"
183 done 153 echo "$configure_deps."
184 touch $touch_files 154 program_details 'automake'
185 ;; 155 ;;
186 156 aclocal*)
187 automake*) 157 echo "You should only need it if you modified 'acinclude.m4' or"
188 echo 1>&2 "\ 158 echo "$configure_deps."
189 WARNING: \`$1' is $msg. You should only need it if 159 program_details 'aclocal'
190 you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. 160 ;;
191 You might want to install the \`Automake' and \`Perl' packages. 161 autom4te*)
192 Grab them from any GNU archive site." 162 echo "You might have modified some maintainer files that require"
193 find . -type f -name Makefile.am -print | 163 echo "the 'autom4te' program to be rebuilt."
194 sed 's/\.am$/.in/' | 164 program_details 'autom4te'
195 while read f; do touch "$f"; done 165 ;;
196 ;; 166 bison*|yacc*)
197 167 echo "You should only need it if you modified a '.y' file."
198 autom4te*) 168 echo "You may want to install the GNU Bison package:"
199 echo 1>&2 "\ 169 echo "<$gnu_software_URL/bison/>"
200 WARNING: \`$1' is needed, but is $msg. 170 ;;
201 You might have modified some files without having the 171 lex*|flex*)
202 proper tools for further handling them. 172 echo "You should only need it if you modified a '.l' file."
203 You can get \`$1' as part of \`Autoconf' from any GNU 173 echo "You may want to install the Fast Lexical Analyzer package:"
204 archive site." 174 echo "<$flex_URL>"
205 175 ;;
206 file=`echo "$*" | sed -n "$sed_output"` 176 help2man*)
207 test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` 177 echo "You should only need it if you modified a dependency" \
208 if test -f "$file"; then 178 "of a man page."
209 touch $file 179 echo "You may want to install the GNU Help2man package:"
210 else 180 echo "<$gnu_software_URL/help2man/>"
211 test -z "$file" || exec >$file 181 ;;
212 echo "#! /bin/sh" 182 makeinfo*)
213 echo "# Created by GNU Automake missing as a replacement of" 183 echo "You should only need it if you modified a '.texi' file, or"
214 echo "# $ $@" 184 echo "any other file indirectly affecting the aspect of the manual."
215 echo "exit 0" 185 echo "You might want to install the Texinfo package:"
216 chmod +x $file 186 echo "<$gnu_software_URL/texinfo/>"
217 exit 1 187 echo "The spurious makeinfo call might also be the consequence of"
218 fi 188 echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
219 ;; 189 echo "want to install GNU make:"
220 190 echo "<$gnu_software_URL/make/>"
221 bison*|yacc*) 191 ;;
222 echo 1>&2 "\ 192 *)
223 WARNING: \`$1' $msg. You should only need it if 193 echo "You might have modified some files without having the proper"
224 you modified a \`.y' file. You may need the \`Bison' package 194 echo "tools for further handling them. Check the 'README' file, it"
225 in order for those modifications to take effect. You can get 195 echo "often tells you about the needed prerequisites for installing"
226 \`Bison' from any GNU archive site." 196 echo "this package. You may also peek at any GNU archive site, in"
227 rm -f y.tab.c y.tab.h 197 echo "case some other package contains this missing '$1' program."
228 if test $# -ne 1; then 198 ;;
229 eval LASTARG="\${$#}" 199 esac
230 case $LASTARG in 200 }
231 *.y) 201
232 SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` 202 give_advice "$1" | sed -e '1s/^/WARNING: /' \
233 if test -f "$SRCFILE"; then 203 -e '2,$s/^/ /' >&2
234 cp "$SRCFILE" y.tab.c 204
235 fi 205 # Propagate the correct exit status (expected to be 127 for a program
236 SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` 206 # not found, 63 for a program that failed due to version mismatch).
237 if test -f "$SRCFILE"; then 207 exit $st
238 cp "$SRCFILE" y.tab.h
239 fi
240 ;;
241 esac
242 fi
243 if test ! -f y.tab.h; then
244 echo >y.tab.h
245 fi
246 if test ! -f y.tab.c; then
247 echo 'main() { return 0; }' >y.tab.c
248 fi
249 ;;
250
251 lex*|flex*)
252 echo 1>&2 "\
253 WARNING: \`$1' is $msg. You should only need it if
254 you modified a \`.l' file. You may need the \`Flex' package
255 in order for those modifications to take effect. You can get
256 \`Flex' from any GNU archive site."
257 rm -f lex.yy.c
258 if test $# -ne 1; then
259 eval LASTARG="\${$#}"
260 case $LASTARG in
261 *.l)
262 SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
263 if test -f "$SRCFILE"; then
264 cp "$SRCFILE" lex.yy.c
265 fi
266 ;;
267 esac
268 fi
269 if test ! -f lex.yy.c; then
270 echo 'main() { return 0; }' >lex.yy.c
271 fi
272 ;;
273
274 help2man*)
275 echo 1>&2 "\
276 WARNING: \`$1' is $msg. You should only need it if
277 you modified a dependency of a manual page. You may need the
278 \`Help2man' package in order for those modifications to take
279 effect. You can get \`Help2man' from any GNU archive site."
280
281 file=`echo "$*" | sed -n "$sed_output"`
282 test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
283 if test -f "$file"; then
284 touch $file
285 else
286 test -z "$file" || exec >$file
287 echo ".ab help2man is required to generate this page"
288 exit $?
289 fi
290 ;;
291
292 makeinfo*)
293 echo 1>&2 "\
294 WARNING: \`$1' is $msg. You should only need it if
295 you modified a \`.texi' or \`.texinfo' file, or any other file
296 indirectly affecting the aspect of the manual. The spurious
297 call might also be the consequence of using a buggy \`make' (AIX,
298 DU, IRIX). You might want to install the \`Texinfo' package or
299 the \`GNU make' package. Grab either from any GNU archive site."
300 # The file to touch is that specified with -o ...
301 file=`echo "$*" | sed -n "$sed_output"`
302 test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
303 if test -z "$file"; then
304 # ... or it is the one specified with @setfilename ...
305 infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
306 file=`sed -n '
307 /^@setfilename/{
308 s/.* \([^ ]*\) *$/\1/
309 p
310 q
311 }' $infile`
312 # ... or it is derived from the source name (dir/f.texi becomes f.info)
313 test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
314 fi
315 # If the file does not exist, the user really needs makeinfo;
316 # let's fail without touching anything.
317 test -f $file || exit 1
318 touch $file
319 ;;
320
321 tar*)
322 shift
323
324 # We have already tried tar in the generic part.
325 # Look for gnutar/gtar before invocation to avoid ugly error
326 # messages.
327 if (gnutar --version > /dev/null 2>&1); then
328 gnutar "$@" && exit 0
329 fi
330 if (gtar --version > /dev/null 2>&1); then
331 gtar "$@" && exit 0
332 fi
333 firstarg="$1"
334 if shift; then
335 case $firstarg in
336 *o*)
337 firstarg=`echo "$firstarg" | sed s/o//`
338 tar "$firstarg" "$@" && exit 0
339 ;;
340 esac
341 case $firstarg in
342 *h*)
343 firstarg=`echo "$firstarg" | sed s/h//`
344 tar "$firstarg" "$@" && exit 0
345 ;;
346 esac
347 fi
348
349 echo 1>&2 "\
350 WARNING: I can't seem to be able to run \`tar' with the given arguments.
351 You may want to install GNU tar or Free paxutils, or check the
352 command line arguments."
353 exit 1
354 ;;
355
356 *)
357 echo 1>&2 "\
358 WARNING: \`$1' is needed, and is $msg.
359 You might have modified some files without having the
360 proper tools for further handling them. Check the \`README' file,
361 it often tells you about the needed prerequisites for installing
362 this package. You may also peek at any GNU archive site, in case
363 some other package would contain this missing \`$1' program."
364 exit 1
365 ;;
366 esac
367
368 exit 0
369 208
370 # Local variables: 209 # Local variables:
371 # eval: (add-hook 'write-file-hooks 'time-stamp) 210 # eval: (add-hook 'write-file-hooks 'time-stamp)
372 # time-stamp-start: "scriptversion=" 211 # time-stamp-start: "scriptversion="
373 # time-stamp-format: "%:y-%02m-%02d.%02H" 212 # time-stamp-format: "%:y-%02m-%02d.%02H"