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/toreplay/*y/last_crash_sec $OUT_NAME/toreplay/final/*y/last_crash_sec
38 keycode_file=$(echo $f | sed s/last_crash_sec/$(cat $f).KEYCODEpure/)
46 if [ "$k" = Raiselyx ]
48 echo -n '\[!Raiselyx]'
53 echo -n "$k" | sed 's/^KK: //'
59 cat "$f_base.KEYCODEpure" | tidy_keycode
60 echo -n '<font color=gray>'
61 cat "$f_base.KEYCODEpure+" | tidy_keycode
69 cat "$f_base.KEYCODEpure" | tidy_keycode
72 #echo -n '<font color=gray>'
73 cat "$f_base.KEYCODEpure+" | tidy_keycode
79 echo "$@" | sed 's/&/%26/g' | sed 's/"/%22/g' | sed 's/#/%23/g' | sed 's/;/%3B/g'
86 #echo -n `echo "$L" | line2url`'%0A'
87 echo -n `line2url "$L"`'%0A'
92 #http://www.lyx.org/trac/newticket?description=bar%0Abar2&summary=foo%13oo&keywords=crash&version=1.6.5
93 #http://www.lyx.org/trac/newticket?summary=foo%13oo&description=bar%0Abar2&version=1.6.5&keywords=crash
94 #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/`
95 #echo 'http://www.lyx.org/trac/newticket?summary='`line2url "$1"`'&description='`text2url "$2"`'&version='"$LYX_VER"'&keywords=crash'
96 DESC=`get_description | text2url`
97 #DESC=`text2url "$DESC"`
98 if echo $DESC | grep SIGSEGV > /dev/null
100 KEYWORDSTR="&keywords=crash"
102 if echo $DESC | grep SIGABRT > /dev/null
104 KEYWORDSTR="&keywords=assertion"
105 elif echo $DESC | grep SIGSEGV > /dev/null
110 echo 'http://www.lyx.org/trac/newticket?summary='`line2url "$TITLE"`"&description=$DESC&version=$LYX_VER$KEYWORDSTR"
111 #echo 'http://www.lyx.org/trac/newticket?description='"$1"'&summary=foo%13oo&keywords=crash&version=1.6.
115 #http://www.lyx.org/trac/search?q=Foo%20bar
116 echo 'http://www.lyx.org/trac/search?q='`line2url "$TITLE"`
121 head $g -n 100 | sed 's/&/\&/g' | sed 's/</\</g' | sed 's/ /\  /g' | while read -r l
123 #c=`echo $l | grep -i -o "at [[:alnum:]./]*:[0-9]*"`
124 #We may want to support slashes later, but we'd have to support browsing
125 #Qt source for that to be useful for LyX
127 c=`echo $l | grep -i -o "at [[:alnum:].]*:[0-9]*"`
130 echo -- "$l" | sed s/--//
132 cpp=`echo "$c" | sed 's/at //' | sed 's/:.*//g'`
135 lineno=`echo "$c" | sed 's/.*://g'`
136 echo $cpp,$lineno 1>&2
137 #if [ -e "$CPP_HTML_DIR/$cpp.html" ]
140 #echo "$l" | sed "s/$c/<a href=$CPP_HTML_DIR_REL\/$cpp.html\#line$lineno>$c<\/a>/"
141 echo "$l" | sed "s?$c?<a href=$CPP_HTML_DIR_REL\/$cpp.html\#line$lineno>$c<\/a>?"
146 done | sed 's/^/<br\/>/'
155 cat "$f_base.KEYCODEpure" "$f_base.KEYCODEpure+" | while read -r L
168 echo For more info see the "[[$URL_OF_OUT/$HTML_NAME Keytest Report]]"
172 #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.
173 if ! test -e $ROOT_OUTDIR/html/cpp_html
175 (mkdir -p $ROOT_OUTDIR/html/cpp_html/ &&
176 cd $ROOT_OUTDIR/html/cpp_html/ &&
177 for f in `f ../../../src/ .cpp$` ; do g=`basename $f`; c2html -n < $f > $g.html ; echo $f ; done)
182 #| grep ^Revision | sed s/'Revision: '/r/
183 echo KEYCODE $1 ... `dirname $1` 1>&2
184 cat `dirname $1`/last_crash_sec.info.svn | grep ^Revision
185 echo _KEYCODE $KEYCODE ... 1>&2
193 #for file in `find $LT/$OUT_NAME/ -anewer $LT/$OUT_NAME/html | grep replay/last_crash_sec`
194 #for file in `find $KEYCODE_DIR | grep save/.*KEYCODEpure`
195 #for file in `find $KEYCODE_DIR -anewer oldfile | grep save/.*KEYCODEpure$ | head -n4`
196 #for file in `ls $KEYCODE_DIR/*/final/*KEYCODEpure`
197 #for file in `ls $KEYCODE_DIR/*/final/*/*KEYCODEpure`
199 echo END OF KEYCODE FILES
200 for file in `list_keycode_files`
203 lcs_file=`echo $file | sed 's/save\/.*//g'`last_crash_sec
204 echo last_crash_sec file: $lcs_file
206 SEC=`basename $file | sed s/[.].*$//g`
207 echo SEC .$SEC. .$SEC2.
208 #if [ ! $SEC -eq $SEC2 ]
213 #f_base=`echo $file | sed s/last_crash_sec/$SEC/g`
214 f_base=`dirname $file`'/'$SEC
216 NUM_KEYCODES=`wc -l < "$f_base.KEYCODEpure"`
217 echo NUM_KEYCODES=$NUM_KEYCODES...
218 if [ "$NUM_KEYCODES" -lt 10 ]
224 egrep '([Ii][Nn] .*[:[:alnum:]][:][0-9]*[^0-9]|#0 | signal SIG[^T])' -A9999 <$f >$g
227 IN_AT=`egrep -o '([Ii][Nn]|at) ([:lower:]* )?[:_[:alnum:]]*(::[:_[:alnum:]]*|:[0-9]*)' <$f | grep -v lyx_exit | grep -v [Aa]ssert | head -n 1 `
228 SIGNAL=`grep -o ' signal SIG[[:alnum:]_]*[, ]' <$g | sed s/[^[:upper:]]//g | head -n 1`
229 TITLE="$SIGNAL $IN_AT"
230 TITLE_=`echo $TITLE|sed s/[^[:alnum:]]/_/g`
232 HTML_NAME=$SEC.html # name of html report for this bug
236 echo '<html>' >> $LT/$OUT_NAME/$INDEX
237 (echo -n "<br/><a href=\"$SEC.html\">$TITLE</a> "
239 echo " [<a href=\"`search_bug_url`\">search</a>] [<a href=\"`report_bug_url`\">report</a>] <a href=\"$SEC.screenshot.html\">screenshots</a>"
240 #if ls $f_base.s*.png
242 # echo "<a href=\"$SEC.screenshot.html\">screenshots</a>"
245 echo ) >> $OUT/indexreport.html
246 echo -n '<br> '>> $LT/$OUT_NAME/$INDEX
247 echo >> $LT/$OUT_NAME/$INDEX
250 echo "<title>$TITLE</title>"
252 echo "<br/><a href=$SEC.KEYCODE>KEYCODES</a> "
253 echo " <a href=$SEC.KEYCODEpure>pure</a> "
254 echo "<a href=$SEC.GDB>GDB</a>"
255 if ls $f_base.s*.png > /dev/null
257 echo "<a href=\"$SEC.screenshot.html\">screenshots</a>"
259 echo '(no screenshots)'
265 #echo "<a href=$SEC.GDB.png><img src=$SEC.small.png/></a><br/><br/>"
266 #echo "<a href=$SEC.screenshot.html><img src=$SEC.small.png/></a><br/><br/>"
271 dpkg -l | egrep '(libqt4-dbg|libc6 |libboost-dev )'
272 lsb_release -a) | sed 's/&/\&/g' | sed 's/</\</g' | sed 's/ /\  /g' | sed 's/^/<br\/>/'
274 echo '<a href="'"$SEC.html"'">'$SEC'</a><br/>' >> $OUT/$INDEX
275 echo '<a href="'"$SEC.html"'">'$SEC'</a><br/>'
276 if [ ! -e $OUT/$SEC.small.png ]
278 convert -normalize -scale $GEOM $f.png $OUT/$SEC.small.png -quality 85
280 chmod a+r $f $f.png $f_base.KEYCODE* $f_base.html $OUT/indexreport.html
281 ln $f $f.png $f_base.KEYCODE* $f_base.html $f_base.s*.png $OUT/
284 $LT/make_screenshot_html.py $OUT $SEC > $OUT/$SEC.screenshot.html
289 mv $OUT/indexreport.html $OUT/indexreport.html.bak
290 echo "<html>" >> $OUT/indexreport.html
291 echo "<h1>List of bugs found</h1>" >> $OUT/indexreport.html
292 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
293 sort -k 2 -t '>' < $OUT/indexreport.html.bak >> $OUT/indexreport.html
295 firefox $OUT/indexreport.html
296 #google-chrome $OUT/indexreport.html