* Import keyanalyze into signing-party. Thanks to Matthew Wilcox for the
[pgp-tools.git] / keyanalyze / pgpring / missing
1 #! /bin/sh
2 # Common stub for a few missing GNU programs while installing.
3 # Copyright 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