2 #LT=development/keystest
4 . $LT/shared_variables.sh
8 if [ -z "$KEYCODE_DIR" ]
10 KEYCODE_DIR=$ROOT_OUTDIR
12 #convert -normalize -scale $GEOM -quality $QUALITY $f $GEOM/$f
16 OUT=$LT/$OUT_NAME/html
17 URL_OF_OUT=http://gmatht.homelinux.net/xp/$OUT_NAME/html/
22 CPP_HTML_DIR_REL=cpp_html
23 CPP_HTML_DIR=$OUT/cpp_html
25 LYX_VER=`src/lyx -version 2>&1 | head -n1 | sed s/^LyX\ // | sed s/\ .*// | sed s/1svn/0/ | sed s/2svn/1/ | sed s/3svn/2/ | sed s/4svn/3/ | sed s/5svn/4/ | sed s/6svn/5/ | sed s/7svn/6/ | sed s/8svn/7/ | sed s/9svn/8/`
26 BOILER_PLATE=`cd src ; svn info 2>&1 | grep Revision`
28 strings $LT/$OUT_NAME/GDB.* > $LT/$OUT_NAME/GDBs
29 grep "#$UNIQUE_LINE " $LT/$OUT_NAME/GDBs > $LT/$OUT_NAME/list
30 cat $LT/$OUT_NAME/list | sed 's/0x[^ )]*[ )]/.*/g' | sort | uniq | tee $LT/$OUT_NAME/listuniq
32 echo '<html>' >> $OUT/indexreport.html
34 list_keycode_files () {
35 #echo for f in $OUT_NAME/*y/last_crash_sec $OUT_NAME/toreplay/replayed/*y/last_crash_sec
36 for f in $OUT_NAME/*y/last_crash_sec $OUT_NAME/toreplay/replayed/*y/last_crash_sec $OUT_NAME/toreproduce/replayed/*y/last_crash_sec $OUT_NAME/toreplay/*y/last_crash_sec $OUT_NAME/toreplay/final/*y/last_crash_sec
37 #for f in $OUT_NAME/*y/*y/last_crash_sec $OUT_NAME/toreplay/replayed/*y/*y/last_crash_sec $OUT_NAME/toreplay/*y/*y/last_crash_sec $OUT_NAME/toreplay/final/*y/last_crash_sec
39 keycode_file=$(echo $f | sed s/last_crash_sec/$(cat $f).KEYCODEpure/)
40 if test -e $keycode_file.replay/last_crash_sec
42 f=$keycode_file.replay/last_crash_sec
43 keycode_file=$(echo $f | sed s/last_crash_sec/$(cat $f).KEYCODEpure/)
52 if [ "$k" = Raiselyx ]
54 echo -n '\[!Raiselyx]'
59 echo -n "$k" | sed 's/^KK: //'
65 cat "$f_base.KEYCODEpure" | tidy_keycode
66 echo -n '<font color=gray>'
67 cat "$f_base.KEYCODEpure+" | tidy_keycode
75 cat "$f_base.KEYCODEpure" | tidy_keycode
78 #echo -n '<font color=gray>'
79 cat "$f_base.KEYCODEpure+" | tidy_keycode
85 echo "$@" | sed 's/&/%26/g' | sed 's/"/%22/g' | sed 's/#/%23/g' | sed 's/;/%3B/g'
92 #echo -n `echo "$L" | line2url`'%0A'
93 echo -n `line2url "$L"`'%0A'
98 #http://www.lyx.org/trac/newticket?description=bar%0Abar2&summary=foo%13oo&keywords=crash&version=1.6.5
99 #http://www.lyx.org/trac/newticket?summary=foo%13oo&description=bar%0Abar2&version=1.6.5&keywords=crash
100 #ver=`echo $3 | sed s/1svn/0/ | sed s/2svn/1/ | sed s/3svn/2/ | sed s/4svn/3/ | sed s/5svn/4/ | sed s/6svn/5/ | sed s/7svn/6/ | sed s/8svn/7/ | sed s/9svn/8/`
101 #echo 'http://www.lyx.org/trac/newticket?summary='`line2url "$1"`'&description='`text2url "$2"`'&version='"$LYX_VER"'&keywords=crash'
102 DESC=`get_description | text2url`
103 #DESC=`text2url "$DESC"`
104 if echo $DESC | grep SIGSEGV > /dev/null
106 KEYWORDSTR="&keywords=crash"
108 if echo $DESC | grep SIGABRT > /dev/null
110 KEYWORDSTR="&keywords=assertion"
111 elif echo $DESC | grep SIGSEGV > /dev/null
116 echo 'http://www.lyx.org/trac/newticket?summary='`line2url "$TITLE"`"&description=$DESC&version=$LYX_VER$KEYWORDSTR"
117 #echo 'http://www.lyx.org/trac/newticket?description='"$1"'&summary=foo%13oo&keywords=crash&version=1.6.
121 #http://www.lyx.org/trac/search?q=Foo%20bar
122 echo 'http://www.lyx.org/trac/search?q='`line2url "$TITLE"`
127 head $g -n 100 | sed 's/&/\&/g' | sed 's/</\</g' | sed 's/ /\  /g' | while read -r l
129 #c=`echo $l | grep -i -o "at [[:alnum:]./]*:[0-9]*"`
130 #We may want to support slashes later, but we'd have to support browsing
131 #Qt source for that to be useful for LyX
133 c=`echo $l | grep -i -o "at [[:alnum:].]*:[0-9]*"`
136 echo -- "$l" | sed s/--//
138 cpp=`echo "$c" | sed 's/at //' | sed 's/:.*//g'`
141 lineno=`echo "$c" | sed 's/.*://g'`
142 echo $cpp,$lineno 1>&2
143 if [ -e "$CPP_HTML_DIR/$cpp.html" ]
146 #echo "$l" | sed "s/$c/<a href=$CPP_HTML_DIR_REL\/$cpp.html\#line$lineno>$c<\/a>/"
147 echo "$l" | sed "s?$c?<a href=$CPP_HTML_DIR_REL\/$cpp.html\#line$lineno>$c<\/a>?"
152 done | sed 's/^/<br\/>/'
161 cat "$f_base.KEYCODEpure" "$f_base.KEYCODEpure+" | while read -r L
174 echo For more info see the "[[$URL_OF_OUT/$HTML_NAME Keytest Report]]"
178 #This is ugly. At the moment all bug reports in the same set reference the same files, which could lead to confusion if they are from differnt versions of lyx. Do not mix different versions until this is fixed. However we may not want to "fix" this when it may be better to always use a new outdir for each version and just reproduce the old bugs so they don't get lost.
179 if ! test -e $ROOT_OUTDIR/html/cpp_html
181 (mkdir -p $ROOT_OUTDIR/html/cpp_html/ &&
182 cd $ROOT_OUTDIR/html/cpp_html/ &&
183 for f in `find ../../../src/ -iname '*.cpp' ; find ../../../src/ -iname '*.h'` ; do g=`basename $f`; c2html -n < $f > $g.html ; echo $f ; done)
188 #| grep ^Revision | sed s/'Revision: '/r/
189 echo KEYCODE $1 ... `dirname $1` 1>&2
190 cat `dirname $1`/last_crash_sec.info.svn | grep ^Revision
191 echo _KEYCODE $KEYCODE ... 1>&2
199 #for file in `find $LT/$OUT_NAME/ -anewer $LT/$OUT_NAME/html | grep replay/last_crash_sec`
200 #for file in `find $KEYCODE_DIR | grep save/.*KEYCODEpure`
201 #for file in `find $KEYCODE_DIR -anewer oldfile | grep save/.*KEYCODEpure$ | head -n4`
202 #for file in `ls $KEYCODE_DIR/*/final/*KEYCODEpure`
203 #for file in `ls $KEYCODE_DIR/*/final/*/*KEYCODEpure`
205 echo END OF KEYCODE FILES
206 for file in `list_keycode_files`
209 lcs_file=`echo $file | sed 's/save\/.*//g'`last_crash_sec
210 echo last_crash_sec file: $lcs_file
212 SEC=`basename $file | sed s/[.].*$//g`
213 echo SEC .$SEC. .$SEC2.
214 #if [ ! $SEC -eq $SEC2 ]
219 #f_base=`echo $file | sed s/last_crash_sec/$SEC/g`
220 f_base=`dirname $file`'/'$SEC
222 NUM_KEYCODES=`wc -l < "$f_base.KEYCODEpure"`
223 echo NUM_KEYCODES=$NUM_KEYCODES...
224 if [ "$NUM_KEYCODES" -lt 20 ]
230 #egrep '([Ii][Nn] .*[:[:alnum:]][:][0-9]*[^0-9]|#0 | signal SIG[^T]| ASSERTION .* VIOLATED IN )' -A9999 <$f >$g
231 egrep '([Ii][Nn] .*[:[:alnum:]][:][0-9]*[^0-9]|#0 | signal SIG[^T]| ASSERTION .* VIOLATED IN )' -A9999 <$f >$g
234 IN_AT=`egrep -o '([Ii][Nn]|at) ([:lower:]* )?[:_[:alnum:]]*(::[:_[:alnum:]]*|:[0-9]*)' <$f | grep -v lyx_exit | grep -v [Aa]ssert | head -n 1 `
235 SIGNAL=`grep -o ' signal SIG[[:alnum:]_]*[, ]' <$g | sed s/[^[:upper:]]//g | head -n 1`
236 TITLE="$SIGNAL $IN_AT"
237 if grep ' ASSERTION .* VIOLATED IN ' $g
239 TITLE=`grep -o ' ASSERTION .* VIOLATED IN .*$' $g`
241 TITLE_=`echo $TITLE|sed s/[^[:alnum:]]/_/g`
243 HTML_NAME=$SEC.html # name of html report for this bug
247 echo '<html>' >> $LT/$OUT_NAME/$INDEX
248 (echo -n "<br/><a href=\"$SEC.html\">$TITLE</a> "
250 #echo -n " [<a href=\"`search_bug_url`\">search</a>] [<a href=\"`report_bug_url`\">report</a>] <a href=\"$SEC.screenshot.html\">screenshots</a>"
251 echo -n " [<a href=\"`search_bug_url`\">search</a>] [<a href=\"`report_bug_url`\">report</a>]"
252 if ls $f_base.s*.png > /dev/null
254 echo -n " <a href=\"$SEC.screenshot.html\">screenshots</a>"
258 echo ) >> $OUT/indexreport.html
259 echo -n '<br> '>> $LT/$OUT_NAME/$INDEX
260 echo >> $LT/$OUT_NAME/$INDEX
263 echo "<title>$TITLE</title>"
265 echo "<br/><a href=$SEC.KEYCODE>KEYCODES</a> "
266 echo " <a href=$SEC.KEYCODEpure>pure</a> "
267 echo "<a href=$SEC.GDB>GDB</a>"
268 if ls $f_base.s*.png > /dev/null
270 echo "<a href=\"$SEC.screenshot.html\">screenshots</a>"
272 echo '(no screenshots)'
278 #echo "<a href=$SEC.GDB.png><img src=$SEC.small.png/></a><br/><br/>"
279 #echo "<a href=$SEC.screenshot.html><img src=$SEC.small.png/></a><br/><br/>"
284 dpkg -l | egrep '(libqt4-dbg|libc6 |libboost-dev )'
285 lsb_release -a) | sed 's/&/\&/g' | sed 's/</\</g' | sed 's/ /\  /g' | sed 's/^/<br\/>/'
287 echo '<a href="'"$SEC.html"'">'$SEC'</a><br/>' >> $OUT/$INDEX
288 echo '<a href="'"$SEC.html"'">'$SEC'</a><br/>'
289 if [ ! -e $OUT/$SEC.small.png ]
291 convert -normalize -scale $GEOM $f.png $OUT/$SEC.small.png -quality 85
293 chmod a+r $f $f.png $f_base.KEYCODE* $f_base.html $OUT/indexreport.html
294 ln $f $f.png $f_base.KEYCODE* $f_base.html $f_base.s*.png $OUT/
297 $LT/make_screenshot_html.py $OUT $SEC > $OUT/$SEC.screenshot.html
302 mv $OUT/indexreport.html $OUT/indexreport.html.bak
303 echo "<html>" >> $OUT/indexreport.html
304 echo "<h1>List of bugs found</h1>" >> $OUT/indexreport.html
305 echo '<p>Please, do not "report" bugs without searching for them first. Also make sure to fill out the "To reproduce" section before pressing the "Create ticket" button</p>' >> $OUT/indexreport.html
306 sort -k 2 -t '>' < $OUT/indexreport.html.bak >> $OUT/indexreport.html
308 firefox $OUT/indexreport.html
309 #google-chrome $OUT/indexreport.html