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