797
|
1 #! /bin/sh - |
|
2 # |
|
3 # octave-bug - create a bug report and mail it to the bug-octave |
|
4 # mailing list. |
|
5 # |
|
6 # Patterned after the bashbug script from bash 1.14. |
|
7 # |
|
8 # John W. Eaton |
1451
|
9 # jwe@bevo.che.wisc.edu |
|
10 # University of Wisconsin-Madison |
797
|
11 # Department of Chemical Engineering |
|
12 |
2155
|
13 # Configuration: these variables are filled in when running make to |
|
14 # compile Octave. |
797
|
15 |
2159
|
16 config_opts=%config_opts% |
|
17 VERSION=%VERSION% |
|
18 MACHINE=%TARGET_HOST_TYPE% |
|
19 F77=%F77% |
|
20 FFLAGS=%FFLAGS% |
|
21 FPICFLAG=%FPICFLAG% |
|
22 FLIBS=%FLIBS% |
|
23 F2C=%F2C% |
|
24 F2CFLAGS=%F2CFLAGS% |
|
25 CPPFLAGS=%CPPFLAGS% |
|
26 INCFLAGS=%INCFLAGS% |
|
27 CC=%CC% |
|
28 CC_VERSION=%CC_VERSION% |
|
29 CFLAGS=%CFLAGS% |
|
30 CPICFLAG=%CPICFLAG% |
|
31 CXX=%CXX% |
|
32 CXX_VERSION=%CXX_VERSION% |
|
33 CXXFLAGS=%BUG_CXXFLAGS% |
|
34 CXXPICFLAG=%CXXPICFLAG% |
|
35 LDFLAGS=%LDFLAGS% |
|
36 LIBFLAGS=%LIBFLAGS% |
2676
|
37 RLD_FLAG=%RLD_FLAG% |
2159
|
38 CXXLIBS=%CXXLIBS% |
|
39 TERMLIBS=%TERMLIBS% |
|
40 LIBS=%LIBS% |
|
41 LEXLIB=%LEXLIB% |
|
42 LIBPLPLOT=%LIBPLPLOT% |
|
43 LIBDLFCN=%LIBDLFCN% |
|
44 DEFS=%DEFS% |
797
|
45 |
2031
|
46 CC_AND_VERSION= |
|
47 if test -n "$CC_VERSION"; then |
|
48 CC_AND_VERSION="$CC, version $CC_VERSION" |
|
49 fi |
|
50 |
|
51 CXX_AND_VERSION= |
|
52 if test -n "$CXX_VERSION"; then |
|
53 CXX_AND_VERSION="$CXX, version $CXX_VERSION" |
|
54 fi |
|
55 |
846
|
56 PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:$PATH |
797
|
57 export PATH |
|
58 |
|
59 TEMP=/tmp/octave-bug.$$ |
|
60 |
|
61 : ${EDITOR=emacs} |
2564
|
62 : ${PAGER=more} |
797
|
63 |
|
64 trap 'rm -f $TEMP $TEMP.x; exit 1' 1 2 3 13 15 |
|
65 trap 'rm -f $TEMP $TEMP.x' 0 |
|
66 |
|
67 UN= |
2222
|
68 if (uname) > /dev/null 2>&1; then |
797
|
69 UN=`uname -a` |
|
70 fi |
|
71 |
|
72 HAVE_FMT=false |
2222
|
73 if (fmt < /dev/null) > /dev/null 2>&1; then |
797
|
74 HAVE_FMT=true |
|
75 fi |
|
76 |
2564
|
77 # Check whether to use -n or \c to keep echo from printing a newline |
|
78 # character. Stolen from autoconf, which borrowed the idea from dist 3.0. |
|
79 |
|
80 if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then |
|
81 # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. |
|
82 if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then |
|
83 echo_n= |
|
84 echo_c=' |
|
85 ' |
|
86 else |
|
87 echo_n=-n |
|
88 echo_c= |
|
89 fi |
|
90 else |
|
91 echo_n= |
|
92 echo_c='\c' |
|
93 fi |
|
94 |
801
|
95 ss_p=`echo $VERSION | grep "^ss-"` |
2222
|
96 if test -n "$ss_p"; then |
1451
|
97 BUGADDR="octave-maintainers@bevo.che.wisc.edu" |
801
|
98 else |
2691
|
99 pretest_p=`echo $VERSION \ |
|
100 | sed 's,.*\.\([0-9]*\).*,\1,' \ |
|
101 | grep -v '\.' \ |
|
102 | grep '[0-9]'` |
2222
|
103 |
|
104 if test -n "$pretest_p" && test "$pretest_p" -ge 90; then |
|
105 BUGADDR="octave-maintainers@bevo.che.wisc.edu" |
|
106 else |
|
107 BUGADDR="bug-octave@bevo.che.wisc.edu" |
|
108 fi |
801
|
109 fi |
797
|
110 |
|
111 SUBJECT="[50 character or so descriptive subject here (for reference)]" |
2222
|
112 if test $# -gt 0; then |
797
|
113 case "$1" in |
|
114 -s) |
801
|
115 shift |
2222
|
116 if test $# -gt 0; then |
797
|
117 SUBJECT="$1" |
801
|
118 shift |
797
|
119 else |
|
120 echo "usage: octave-bug [-s subject]" |
|
121 exit 1 |
|
122 fi |
|
123 ;; |
|
124 esac |
|
125 fi |
|
126 |
|
127 cat > $TEMP << EOF |
|
128 To: $BUGADDR |
|
129 Subject: $SUBJECT |
851
|
130 -------- |
797
|
131 Bug report for Octave $VERSION configured for $MACHINE |
|
132 |
|
133 Description: |
|
134 ----------- |
|
135 |
|
136 * Please replace this item with a detailed description of the |
|
137 problem. Suggestions or general comments are also welcome. |
|
138 |
|
139 Repeat-By: |
|
140 --------- |
|
141 |
|
142 * Please replace this item with a description of the sequence of |
|
143 events that causes the problem to occur. |
|
144 |
|
145 Fix: |
|
146 --- |
|
147 |
|
148 * If possible, replace this item with a description of how to |
|
149 fix the problem (if you don't have a fix for the problem, don't |
|
150 include this section, but please do submit your report anyway). |
|
151 |
801
|
152 |
|
153 |
|
154 Configuration (please do not edit this section): |
|
155 ----------------------------------------------- |
|
156 |
|
157 uname output: $UN |
2155
|
158 configure opts: $config_opts |
801
|
159 Fortran compiler: $F77 |
|
160 FFLAGS: $FFLAGS |
1064
|
161 F2C: $F2C |
|
162 F2CFLAGS: $F2CFLAGS |
|
163 FLIBS: $FLIBS |
2155
|
164 CPPFLAGS: $CPPFLAGS |
|
165 INCFLAGS: $INCFLAGS |
2031
|
166 C compiler: $CC_AND_VERSION |
801
|
167 CFLAGS: $CFLAGS |
2155
|
168 CPICFLAG: $CPICFLAG |
2031
|
169 C++ compiler: $CXX_AND_VERSION |
801
|
170 CXXFLAGS: $CXXFLAGS |
2155
|
171 CXXPICFLAG: $CXXPICFLAG |
1064
|
172 LDFLAGS: $LDFLAGS |
2155
|
173 LIBFLAGS: $LIBFLAGS |
2676
|
174 RLD_FLAG: $RLD_FLAG |
2155
|
175 CXXLIBS: $CXXLIBS |
|
176 TERMLIBS: $TERMLIBS |
|
177 LIBS: $LIBS |
|
178 LEXLIB: $LEXLIB |
|
179 LIBPLPLOT: $LIBPLPLOT |
|
180 LIBDLFCN: $LIBDLFCN |
801
|
181 DEFS: |
|
182 |
797
|
183 EOF |
|
184 |
2222
|
185 if $HAVE_FMT; then |
801
|
186 echo $DEFS | fmt | sed 's/^/ /' >> $TEMP |
|
187 else |
|
188 echo $DEFS >> $TEMP |
|
189 fi |
|
190 |
2222
|
191 if test $# -gt 0; then |
|
192 if test -f "$1"; then |
801
|
193 cat >> $TEMP << EOF |
|
194 |
|
195 User-preferences (please do not edit this section): |
|
196 -------------------------------------------------- |
|
197 |
|
198 EOF |
|
199 cat $1 >> $TEMP |
|
200 fi |
|
201 fi |
|
202 |
797
|
203 chmod u+w $TEMP |
|
204 cp $TEMP $TEMP.x |
|
205 |
|
206 status=0 |
|
207 |
2564
|
208 editing=true |
|
209 |
|
210 while $editing; do |
|
211 if $EDITOR $TEMP; then |
|
212 while $editing; do |
|
213 echo $echo_n "(a)bort, (e)dit, (l)ist, (s)end? $echo_c" |
|
214 read ans |
|
215 case "$ans" in |
|
216 a* | A*) |
|
217 status=1 |
|
218 editing=false |
|
219 ;; |
|
220 e* | E*) |
|
221 break; |
|
222 ;; |
|
223 l* | L*) |
|
224 $PAGER $TEMP |
|
225 ;; |
|
226 s* | S*) |
|
227 editing=false |
|
228 ;; |
|
229 esac |
|
230 done |
|
231 else |
|
232 echo "problems with edit -- no bug report submitted" |
|
233 status=1 |
|
234 editing=false |
|
235 fi |
|
236 done |
|
237 |
|
238 if test $status -eq 0; then |
2222
|
239 if cmp -s $TEMP $TEMP.x; then |
797
|
240 echo "file not changed -- no bug report submitted" |
|
241 status=1 |
2031
|
242 elif test `wc $TEMP | awk '{print $1}'` -eq 0; then |
|
243 echo "empty bug report file -- not submitted" |
|
244 status=1 |
797
|
245 else |
851
|
246 |
|
247 # Try to extract the recipient address, in case the To: line in the |
964
|
248 # message template has been changed. Also get cc: lines. |
851
|
249 |
964
|
250 TO_ADDR=`sed -e '/^--------[ \t]*$/q' $TEMP | sed -n -e 's/^[Tt][Oo]://p'` |
|
251 CC_ADDR=`sed -e '/^--------[ \t]*$/q' $TEMP | sed -n -e 's/^[Cc][Cc]://p'` |
|
252 |
2222
|
253 if test -z "$TO_ADDR"; then |
851
|
254 echo "no valid \`To:' field found in header -- using $BUGADDR instead" |
|
255 else |
964
|
256 BUGADDR="$TO_ADDR" |
851
|
257 fi |
|
258 |
964
|
259 BUGADDR="$BUGADDR $CC_ADDR" |
|
260 |
2564
|
261 TMP_SUB=`sed -e '/^--------[ \t]*$/q' $TEMP | sed -n -e 's/^Subject://p'` |
|
262 |
|
263 if test -n "$TMP_SUB"; then |
|
264 SUBJECT="$TMP_SUB" |
|
265 fi |
|
266 |
851
|
267 # Delete the `--------' separator in the message. |
|
268 |
1066
|
269 # Don't pretty-print this. Odd whitespace kills Ultrix AWK! |
|
270 |
|
271 awk 'BEGIN{in_header=1;} /^--------[ \t]*$/ { |
|
272 if (in_header) { in_header=0; print ""; next; } |
|
273 } { print $0; }' $TEMP > $TEMP.x |
851
|
274 |
|
275 # Now try to mail it. |
|
276 |
1067
|
277 ( /bin/mail $BUGADDR < $TEMP.x ) > /dev/null 2>&1 |
1066
|
278 status=$? |
|
279 if test $status -ne 0; then |
1067
|
280 ( Mail -s "$SUBJECT" $BUGADDR < $TEMP.x ) > /dev/null 2>&1 |
1066
|
281 status=$? |
|
282 if test $status -ne 0; then |
2564
|
283 ( /usr/ucb/mail -s "$SUBJECT" $BUGADDR < $TEMP.x ) > /dev/null 2>&1 |
|
284 status=$? |
|
285 if test $status -ne 0; then |
|
286 ( mailx -s "$SUBJECT" $BUGADDR < $TEMP.x ) > /dev/null 2>&1 |
|
287 status=$? |
|
288 fi |
1066
|
289 fi |
|
290 fi |
856
|
291 |
1066
|
292 if test $status -ne 0; then |
2564
|
293 echo "unable to send mail..." |
964
|
294 fi |
797
|
295 fi |
2564
|
296 fi |
|
297 |
|
298 if test $status -ne 0; then |
|
299 echo "saving message in \$HOME/dead.octave-bug"; |
|
300 cat $TEMP >> $HOME/dead.octave-bug; |
|
301 exit 1 |
797
|
302 else |
2564
|
303 echo "bug report sent to: $TO_ADDR" |
|
304 echo " cc to: $CC_ADDR" |
797
|
305 fi |
|
306 |
|
307 exit $status |