ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/hopm/trunk/src/libopm/missing
(Generate patch)

Comparing hopm/trunk/src/libopm/missing (file contents):
Revision 5052 by michael, Mon Dec 22 11:56:03 2014 UTC vs.
Revision 5059 by michael, Mon Dec 22 13:43:00 2014 UTC

# Line 1 | Line 1
1   #! /bin/sh
2 < # Common stub for a few missing GNU programs while installing.
3 < # Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
4 < # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
2 > # Common wrapper for a few potentially missing GNU programs.
3 >
4 > scriptversion=2013-10-28.13; # UTC
5 >
6 > # Copyright (C) 1996-2013 Free Software Foundation, Inc.
7 > # Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
8  
9   # This program is free software; you can redistribute it and/or modify
10   # it under the terms of the GNU General Public License as published by
# Line 14 | Line 17
17   # GNU General Public License for more details.
18  
19   # You should have received a copy of the GNU General Public License
20 < # 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 > # along with this program.  If not, see <http://www.gnu.org/licenses/>.
21  
22   # As a special exception to the GNU General Public License, if you
23   # distribute this file as part of a program that contains a
# Line 24 | Line 25
25   # the same distribution terms that you use for the rest of that program.
26  
27   if test $# -eq 0; then
28 <  echo 1>&2 "Try \`$0 --help' for more information"
28 >  echo 1>&2 "Try '$0 --help' for more information"
29    exit 1
30   fi
31  
32 < run=:
32 <
33 < # In the cases where this matters, `missing' is being run in the
34 < # srcdir already.
35 < if test -f configure.ac; then
36 <  configure_ac=configure.ac
37 < else
38 <  configure_ac=configure.in
39 < fi
32 > case $1 in
33  
34 < case "$1" in
35 < --run)
36 <  # Try to run requested program, and just exit if it succeeds.
37 <  run=
38 <  shift
46 <  "$@" && exit 0
47 <  ;;
48 < esac
34 >  --is-lightweight)
35 >    # Used by our autoconf macros to check whether the available missing
36 >    # script is modern enough.
37 >    exit 0
38 >    ;;
39  
40 < # If it does not exist, or fails to run (possibly an outdated version),
41 < # try to emulate it.
42 < case "$1" in
40 >  --run)
41 >    # Back-compat with the calling convention used by older automake.
42 >    shift
43 >    ;;
44  
45    -h|--h|--he|--hel|--help)
46      echo "\
47   $0 [OPTION]... PROGRAM [ARGUMENT]...
48  
49 < Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
50 < error status if there is no known handling for PROGRAM.
49 > Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
50 > to PROGRAM being missing or too old.
51  
52   Options:
53    -h, --help      display this help and exit
54    -v, --version   output version information and exit
64  --run           try to run the given command, and emulate it if it fails
55  
56   Supported PROGRAM values:
57 <  aclocal      touch file \`aclocal.m4'
58 <  autoconf     touch file \`configure'
59 <  autoheader   touch file \`config.h.in'
60 <  automake     touch all \`Makefile.in' files
61 <  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
62 <  flex         create \`lex.yy.c', if possible, from existing .c
63 <  help2man     touch the output file
64 <  lex          create \`lex.yy.c', if possible, from existing .c
75 <  makeinfo     touch the output file
76 <  tar          try tar, gnutar, gtar, then tar without non-portable flags
77 <  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
57 >  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
58 >  bison     yacc      flex         lex       help2man
59 >
60 > Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
61 > 'g' are ignored when checking the name.
62 >
63 > Send bug reports to <bug-automake@gnu.org>."
64 >    exit $?
65      ;;
66  
67    -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
68 <    echo "missing 0.4 - GNU automake"
68 >    echo "missing $scriptversion (GNU Automake)"
69 >    exit $?
70      ;;
71  
72    -*)
73 <    echo 1>&2 "$0: Unknown \`$1' option"
74 <    echo 1>&2 "Try \`$0 --help' for more information"
73 >    echo 1>&2 "$0: unknown '$1' option"
74 >    echo 1>&2 "Try '$0 --help' for more information"
75      exit 1
76      ;;
77  
78 <  aclocal*)
91 <    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 <    echo 1>&2 "\
97 < WARNING: \`$1' is missing on your system.  You should only need it if
98 <         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
99 <         to install the \`Automake' and \`Perl' packages.  Grab them from
100 <         any GNU archive site."
101 <    touch aclocal.m4
102 <    ;;
103 <
104 <  autoconf)
105 <    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 <    echo 1>&2 "\
111 < WARNING: \`$1' is missing on your system.  You should only need it if
112 <         you modified \`${configure_ac}'.  You might want to install the
113 <         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
114 <         archive site."
115 <    touch configure
116 <    ;;
117 <
118 <  autoheader)
119 <    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 <    echo 1>&2 "\
125 < WARNING: \`$1' is missing on your system.  You should only need it if
126 <         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
127 <         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
128 <         from any GNU archive site."
129 <    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
130 <    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 <    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 <    echo 1>&2 "\
149 < WARNING: \`$1' is missing on your system.  You should only need it if
150 <         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
151 <         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 <  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 \`$1Help2man' 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 <  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 <  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 <    ;;
78 > esac
79  
80 <  makeinfo)
81 <    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 <    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 <    ;;
80 > # Run the given program, remember its exit status.
81 > "$@"; st=$?
82  
83 <  tar)
84 <    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 <    ;;
83 > # If it succeeded, we are done.
84 > test $st -eq 0 && exit 0
85  
86 <  *)
87 <    echo 1>&2 "\
88 < WARNING: \`$1' is needed, and you do not seem to have it handy on your
89 <         system.  You might have modified some files without having the
90 <         proper tools for further handling them.  Check the \`README' file,
91 <         it often tells you about the needed prerequirements for installing
92 <         this package.  You may also peek at any GNU archive site, in case
93 <         some other package would contain this missing \`$1' program."
94 <    exit 1
95 <    ;;
96 < esac
86 > # Also exit now if we it failed (or wasn't found), and '--version' was
87 > # passed; such an option is passed most likely to detect whether the
88 > # program is present and works.
89 > case $2 in --version|--help) exit $st;; esac
90 >
91 > # Exit code 63 means version mismatch.  This often happens when the user
92 > # tries to use an ancient version of a tool on a file that requires a
93 > # minimum version.
94 > if test $st -eq 63; then
95 >  msg="probably too old"
96 > elif test $st -eq 127; then
97 >  # Program was missing.
98 >  msg="missing on your system"
99 > else
100 >  # Program was found and executed, but failed.  Give up.
101 >  exit $st
102 > fi
103  
104 < exit 0
104 > perl_URL=http://www.perl.org/
105 > flex_URL=http://flex.sourceforge.net/
106 > gnu_software_URL=http://www.gnu.org/software
107 >
108 > program_details ()
109 > {
110 >  case $1 in
111 >    aclocal|automake)
112 >      echo "The '$1' program is part of the GNU Automake package:"
113 >      echo "<$gnu_software_URL/automake>"
114 >      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
115 >      echo "<$gnu_software_URL/autoconf>"
116 >      echo "<$gnu_software_URL/m4/>"
117 >      echo "<$perl_URL>"
118 >      ;;
119 >    autoconf|autom4te|autoheader)
120 >      echo "The '$1' program is part of the GNU Autoconf package:"
121 >      echo "<$gnu_software_URL/autoconf/>"
122 >      echo "It also requires GNU m4 and Perl in order to run:"
123 >      echo "<$gnu_software_URL/m4/>"
124 >      echo "<$perl_URL>"
125 >      ;;
126 >  esac
127 > }
128 >
129 > give_advice ()
130 > {
131 >  # Normalize program name to check for.
132 >  normalized_program=`echo "$1" | sed '
133 >    s/^gnu-//; t
134 >    s/^gnu//; t
135 >    s/^g//; t'`
136 >
137 >  printf '%s\n' "'$1' is $msg."
138 >
139 >  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
140 >  case $normalized_program in
141 >    autoconf*)
142 >      echo "You should only need it if you modified 'configure.ac',"
143 >      echo "or m4 files included by it."
144 >      program_details 'autoconf'
145 >      ;;
146 >    autoheader*)
147 >      echo "You should only need it if you modified 'acconfig.h' or"
148 >      echo "$configure_deps."
149 >      program_details 'autoheader'
150 >      ;;
151 >    automake*)
152 >      echo "You should only need it if you modified 'Makefile.am' or"
153 >      echo "$configure_deps."
154 >      program_details 'automake'
155 >      ;;
156 >    aclocal*)
157 >      echo "You should only need it if you modified 'acinclude.m4' or"
158 >      echo "$configure_deps."
159 >      program_details 'aclocal'
160 >      ;;
161 >   autom4te*)
162 >      echo "You might have modified some maintainer files that require"
163 >      echo "the 'autom4te' program to be rebuilt."
164 >      program_details 'autom4te'
165 >      ;;
166 >    bison*|yacc*)
167 >      echo "You should only need it if you modified a '.y' file."
168 >      echo "You may want to install the GNU Bison package:"
169 >      echo "<$gnu_software_URL/bison/>"
170 >      ;;
171 >    lex*|flex*)
172 >      echo "You should only need it if you modified a '.l' file."
173 >      echo "You may want to install the Fast Lexical Analyzer package:"
174 >      echo "<$flex_URL>"
175 >      ;;
176 >    help2man*)
177 >      echo "You should only need it if you modified a dependency" \
178 >           "of a man page."
179 >      echo "You may want to install the GNU Help2man package:"
180 >      echo "<$gnu_software_URL/help2man/>"
181 >    ;;
182 >    makeinfo*)
183 >      echo "You should only need it if you modified a '.texi' file, or"
184 >      echo "any other file indirectly affecting the aspect of the manual."
185 >      echo "You might want to install the Texinfo package:"
186 >      echo "<$gnu_software_URL/texinfo/>"
187 >      echo "The spurious makeinfo call might also be the consequence of"
188 >      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
189 >      echo "want to install GNU make:"
190 >      echo "<$gnu_software_URL/make/>"
191 >      ;;
192 >    *)
193 >      echo "You might have modified some files without having the proper"
194 >      echo "tools for further handling them.  Check the 'README' file, it"
195 >      echo "often tells you about the needed prerequisites for installing"
196 >      echo "this package.  You may also peek at any GNU archive site, in"
197 >      echo "case some other package contains this missing '$1' program."
198 >      ;;
199 >  esac
200 > }
201 >
202 > give_advice "$1" | sed -e '1s/^/WARNING: /' \
203 >                       -e '2,$s/^/         /' >&2
204 >
205 > # Propagate the correct exit status (expected to be 127 for a program
206 > # not found, 63 for a program that failed due to version mismatch).
207 > exit $st
208 >
209 > # Local variables:
210 > # eval: (add-hook 'write-file-hooks 'time-stamp)
211 > # time-stamp-start: "scriptversion="
212 > # time-stamp-format: "%:y-%02m-%02d.%02H"
213 > # time-stamp-time-zone: "UTC"
214 > # time-stamp-end: "; # UTC"
215 > # End:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines