misc-cleanup-20040721
[openafs.git] / missing
1 #! /bin/sh
2 # Common stub for a few missing GNU programs while installing.
3 # Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
4 # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
5
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2, or (at your option)
9 # any later version.
10
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15
16 # You should have received a copy of the GNU General Public License
17 # 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
21 if test $# -eq 0; then
22   echo 1>&2 "Try \`$0 --help' for more information"
23   exit 1
24 fi
25
26 run=:
27
28 case "$1" in
29 --run)
30   # Try to run requested program, and just exit if it succeeds.
31   run=
32   shift
33   "$@" && exit 0
34   ;;
35 esac
36
37 # If it does not exist, or fails to run (possibly an outdated version),
38 # try to emulate it.
39 case "$1" in
40
41   -h|--h|--he|--hel|--help)
42     echo "\
43 $0 [OPTION]... PROGRAM [ARGUMENT]...
44
45 Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
46 error status if there is no known handling for PROGRAM.
47
48 Options:
49   -h, --help      display this help and exit
50   -v, --version   output version information and exit
51   --run           try to run the given command, and emulate it if it fails
52
53 Supported PROGRAM values:
54   aclocal      touch file \`aclocal.m4'
55   autoconf     touch file \`configure'
56   autoheader   touch file \`config.h.in'
57   automake     touch all \`Makefile.in' files
58   bison        create \`y.tab.[ch]', if possible, from existing .[ch]
59   flex         create \`lex.yy.c', if possible, from existing .c
60   help2man     touch the output file
61   lex          create \`lex.yy.c', if possible, from existing .c
62   makeinfo     touch the output file
63   tar          try tar, gnutar, gtar, then tar without non-portable flags
64   yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
65     ;;
66
67   -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
68     echo "missing 0.3 - GNU automake"
69     ;;
70
71   -*)
72     echo 1>&2 "$0: Unknown \`$1' option"
73     echo 1>&2 "Try \`$0 --help' for more information"
74     exit 1
75     ;;
76
77   aclocal)
78     echo 1>&2 "\
79 WARNING: \`$1' is missing on your system.  You should only need it if
80          you modified \`acinclude.m4' or \`configure.in'.  You might want
81          to install the \`Automake' and \`Perl' packages.  Grab them from
82          any GNU archive site."
83     touch aclocal.m4
84     ;;
85
86   autoconf)
87     echo 1>&2 "\
88 WARNING: \`$1' is missing on your system.  You should only need it if
89          you modified \`configure.in'.  You might want to install the
90          \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
91          archive site."
92     touch configure
93     ;;
94
95   autoheader)
96     echo 1>&2 "\
97 WARNING: \`$1' is missing on your system.  You should only need it if
98          you modified \`acconfig.h' or \`configure.in'.  You might want
99          to install the \`Autoconf' and \`GNU m4' packages.  Grab them
100          from any GNU archive site."
101     files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in`
102     test -z "$files" && files="config.h"
103     touch_files=
104     for f in $files; do
105       case "$f" in
106       *:*) touch_files="$touch_files "`echo "$f" |
107                                        sed -e 's/^[^:]*://' -e 's/:.*//'`;;
108       *) touch_files="$touch_files $f.in";;
109       esac
110     done
111     touch $touch_files
112     ;;
113
114   automake)
115     echo 1>&2 "\
116 WARNING: \`$1' is missing on your system.  You should only need it if
117          you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'.
118          You might want to install the \`Automake' and \`Perl' packages.
119          Grab them from any GNU archive site."
120     find . -type f -name Makefile.am -print |
121            sed 's/\.am$/.in/' |
122            while read f; do touch "$f"; done
123     ;;
124
125   bison|yacc)
126     echo 1>&2 "\
127 WARNING: \`$1' is missing on your system.  You should only need it if
128          you modified a \`.y' file.  You may need the \`Bison' package
129          in order for those modifications to take effect.  You can get
130          \`Bison' from any GNU archive site."
131     rm -f y.tab.c y.tab.h
132     if [ $# -ne 1 ]; then
133         eval LASTARG="\${$#}"
134         case "$LASTARG" in
135         *.y)
136             SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
137             if [ -f "$SRCFILE" ]; then
138                  cp "$SRCFILE" y.tab.c
139             fi
140             SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
141             if [ -f "$SRCFILE" ]; then
142                  cp "$SRCFILE" y.tab.h
143             fi
144           ;;
145         esac
146     fi
147     if [ ! -f y.tab.h ]; then
148         echo >y.tab.h
149     fi
150     if [ ! -f y.tab.c ]; then
151         echo 'main() { return 0; }' >y.tab.c
152     fi
153     ;;
154
155   lex|flex)
156     echo 1>&2 "\
157 WARNING: \`$1' is missing on your system.  You should only need it if
158          you modified a \`.l' file.  You may need the \`Flex' package
159          in order for those modifications to take effect.  You can get
160          \`Flex' from any GNU archive site."
161     rm -f lex.yy.c
162     if [ $# -ne 1 ]; then
163         eval LASTARG="\${$#}"
164         case "$LASTARG" in
165         *.l)
166             SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
167             if [ -f "$SRCFILE" ]; then
168                  cp "$SRCFILE" lex.yy.c
169             fi
170           ;;
171         esac
172     fi
173     if [ ! -f lex.yy.c ]; then
174         echo 'main() { return 0; }' >lex.yy.c
175     fi
176     ;;
177
178   help2man)
179     echo 1>&2 "\
180 WARNING: \`$1' is missing on your system.  You should only need it if
181          you modified a dependency of a manual page.  You may need the
182          \`Help2man' package in order for those modifications to take
183          effect.  You can get \`Help2man' from any GNU archive site."
184
185     file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
186     if test -z "$file"; then
187         file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
188     fi
189     if [ -f "$file" ]; then
190         touch $file
191     else
192         test -z "$file" || exec >$file
193         echo ".ab help2man is required to generate this page"
194         exit 1
195     fi
196     ;;
197
198   makeinfo)
199     echo 1>&2 "\
200 WARNING: \`$1' is missing on your system.  You should only need it if
201          you modified a \`.texi' or \`.texinfo' file, or any other file
202          indirectly affecting the aspect of the manual.  The spurious
203          call might also be the consequence of using a buggy \`make' (AIX,
204          DU, IRIX).  You might want to install the \`Texinfo' package or
205          the \`GNU make' package.  Grab either from any GNU archive site."
206     file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
207     if test -z "$file"; then
208       file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
209       file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
210     fi
211     touch $file
212     ;;
213
214   tar)
215     shift
216     if test -n "$run"; then
217       echo 1>&2 "ERROR: \`tar' requires --run"
218       exit 1
219     fi
220
221     # We have already tried tar in the generic part.
222     # Look for gnutar/gtar before invocation to avoid ugly error
223     # messages.
224     if (gnutar --version > /dev/null 2>&1); then
225        gnutar ${1+"$@"} && exit 0
226     fi
227     if (gtar --version > /dev/null 2>&1); then
228        gtar ${1+"$@"} && exit 0
229     fi
230     firstarg="$1"
231     if shift; then
232         case "$firstarg" in
233         *o*)
234             firstarg=`echo "$firstarg" | sed s/o//`
235             tar "$firstarg" ${1+"$@"} && exit 0
236             ;;
237         esac
238         case "$firstarg" in
239         *h*)
240             firstarg=`echo "$firstarg" | sed s/h//`
241             tar "$firstarg" ${1+"$@"} && exit 0
242             ;;
243         esac
244     fi
245
246     echo 1>&2 "\
247 WARNING: I can't seem to be able to run \`tar' with the given arguments.
248          You may want to install GNU tar or Free paxutils, or check the
249          command line arguments."
250     exit 1
251     ;;
252
253   *)
254     echo 1>&2 "\
255 WARNING: \`$1' is needed, and you do not seem to have it handy on your
256          system.  You might have modified some files without having the
257          proper tools for further handling them.  Check the \`README' file,
258          it often tells you about the needed prerequirements for installing
259          this package.  You may also peek at any GNU archive site, in case
260          some other package would contain this missing \`$1' program."
261     exit 1
262     ;;
263 esac
264
265 exit 0