]> git.lyx.org Git - lyx.git/blob - development/keystest/report_html.sh
Don't need this.
[lyx.git] / development / keystest / report_html.sh
1 #!/bin/bash
2 #LT=development/keystest
3 LT=`dirname $0`
4 . $LT/shared_variables.sh
5
6 GEOM=320x200
7 QUALITY=85
8 if [ -z "$KEYCODE_DIR" ]
9 then
10         KEYCODE_DIR=$ROOT_OUTDIR
11 fi
12 #convert -normalize -scale $GEOM -quality $QUALITY $f $GEOM/$f
13
14 UNIQUE_LINE=1
15
16 OUT=$LT/$OUT_NAME/html
17 URL_OF_OUT=http://gmatht.homelinux.net/xp/$OUT_NAME/html/
18 mkdir -p $OUT
19 rm $OUT/index*.html
20 ls $OUT/*.html
21
22 CPP_HTML_DIR_REL=cpp_html
23 CPP_HTML_DIR=$OUT/cpp_html
24
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`
27
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
31
32 echo '<html>' >> $OUT/indexreport.html
33
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
37 do
38         keycode_file=$(echo $f | sed s/last_crash_sec/$(cat $f).KEYCODEpure/)
39         echo $keycode_file
40 done
41 }
42
43 tidy_keycode () {
44 while   read -r k
45 do
46         if [ "$k" = Raiselyx ] 
47         then
48                 echo -n '\[!Raiselyx]'
49         elif  [ "$k" = Loop ] 
50         then
51                 echo -n '\[!Loop]'
52         else
53                 echo -n "$k" | sed 's/^KK: //'
54         fi
55 done
56 }
57
58 html_keycode() {
59           cat "$f_base.KEYCODEpure" | tidy_keycode 
60           echo -n '<font color=gray>'
61           cat "$f_base.KEYCODEpure+" | tidy_keycode 
62           echo -n '</font>'
63
64 }
65
66
67 trac_keycode() {
68           echo -n "'''"
69           cat "$f_base.KEYCODEpure" | tidy_keycode 
70           echo -n "'''"
71           #echo -n '""'
72           #echo -n '<font color=gray>'
73           cat "$f_base.KEYCODEpure+" | tidy_keycode 
74           #echo -n '</font>'
75
76 }
77
78 line2url() {
79         echo "$@" | sed 's/&/%26/g' | sed 's/"/%22/g' | sed 's/#/%23/g' | sed 's/;/%3B/g'
80 }
81
82 text2url() {
83         #echo "$@" | 
84         while read -r L
85         do
86                 #echo -n `echo "$L" | line2url`'%0A'
87                 echo -n `line2url "$L"`'%0A'
88         done
89 }
90
91 report_bug_url () {
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
99         then
100                 KEYWORDSTR="&keywords=crash"
101         else
102                 if echo $DESC | grep SIGABRT > /dev/null
103                 then
104                         KEYWORDSTR="&keywords=assertion"
105                 elif echo $DESC | grep SIGSEGV > /dev/null
106                 then
107                         KEYWORDSTR="crash"
108                 fi
109         fi
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.
112 }
113
114 search_bug_url () {
115         #http://www.lyx.org/trac/search?q=Foo%20bar
116         echo 'http://www.lyx.org/trac/search?q='`line2url "$TITLE"`
117 }
118
119 gdb2html() {
120 echo g $g'<br/>'
121 head $g -n 100 | sed 's/&/\&amp;/g' | sed 's/</\&lt;/g' | sed 's/  /\&nbsp /g'  | while read -r l
122 do
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
126  
127         c=`echo $l | grep -i -o "at [[:alnum:].]*:[0-9]*"`
128         if [ -z "$c" ]
129         then
130                 echo -- "$l" | sed s/--//
131         else
132                 cpp=`echo "$c" | sed 's/at //' | sed 's/:.*//g'`
133                 #cpp=`basename $cpp`
134                 echo cpp $cpp
135                 lineno=`echo "$c" | sed 's/.*://g'`
136                 echo $cpp,$lineno 1>&2
137                 #if [ -e "$CPP_HTML_DIR/$cpp.html" ]
138                 if true
139                 then
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>?"
142                 else
143                         echo "$l"
144                 fi
145         fi
146 done | sed 's/^/<br\/>/'
147 }
148
149 get_description() {
150         echo "Keycodes: "
151         trac_keycode
152         ii=1
153         echo
154         echo To reproduce:
155         cat "$f_base.KEYCODEpure" "$f_base.KEYCODEpure+" | while read -r L
156         do
157                 echo "$ii) ... ($L)" 
158                 ii=$((ii+1))
159         done
160
161         echo
162         echo Arch: `arch`
163         svn_revision $f_base
164         echo '{{{'
165         cat $g
166         echo '}}}'
167         echo
168         echo For more info see the "[[$URL_OF_OUT/$HTML_NAME Keytest Report]]"
169 }
170
171 make_cpp_html() {
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
174 then 
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)
178 fi
179 }
180
181 svn_revision() {
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
186 }
187
188
189
190
191 echo beginning
192 make_cpp_html
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`
198 list_keycode_files
199 echo END OF KEYCODE FILES
200 for file in `list_keycode_files`
201 do
202  echo FILE $file
203  lcs_file=`echo $file | sed 's/save\/.*//g'`last_crash_sec
204  echo last_crash_sec file: $lcs_file
205  SEC2=`cat $lcs_file`
206  SEC=`basename $file | sed s/[.].*$//g`
207  echo SEC .$SEC. .$SEC2.
208  #if [ ! $SEC -eq $SEC2 ]
209  #then
210         #break
211  #fi
212  echo SEC $SEC
213  #f_base=`echo $file | sed s/last_crash_sec/$SEC/g`
214  f_base=`dirname $file`'/'$SEC
215  echo f_base $f_base
216  NUM_KEYCODES=`wc -l < "$f_base.KEYCODEpure"`
217  echo NUM_KEYCODES=$NUM_KEYCODES...
218  if [ "$NUM_KEYCODES" -lt 10 ]  
219  then
220   echo f_base $f_base
221   f=$f_base.GDB
222   echo $f
223   g=$f.short
224   egrep '([Ii][Nn] .*[:[:alnum:]][:][0-9]*[^0-9]|#0 | signal SIG[^T])' -A9999  <$f >$g
225   if true
226   then
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`
231         INDEX="index.html"
232         HTML_NAME=$SEC.html # name of html report for this bug
233         echo TITLE $TITLE
234         echo INDEX $INDEX
235         echo NEW $INDEX
236         echo '<html>' >> $LT/$OUT_NAME/$INDEX
237         (echo -n "<br/><a href=\"$SEC.html\">$TITLE</a> " 
238         html_keycode 
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 
241         #then
242         #       echo "<a href=\"$SEC.screenshot.html\">screenshots</a>" 
243         #fi
244         #echo -n '<br/> '
245         echo ) >> $OUT/indexreport.html
246         echo -n '<br> '>> $LT/$OUT_NAME/$INDEX
247         echo >> $LT/$OUT_NAME/$INDEX
248
249         ( echo '<html>'
250           echo "<title>$TITLE</title>"
251           html_keycode
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
256           then
257                  echo "<a href=\"$SEC.screenshot.html\">screenshots</a>" 
258           else
259                  echo '(no screenshots)'
260           fi
261           echo "<br/>"
262          
263         #echo -n '<br/> '
264
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/>"
267           gdb2html
268           (echo ----
269           svn_revision $f_base
270           echo arch `arch`
271           dpkg -l | egrep '(libqt4-dbg|libc6 |libboost-dev )'
272           lsb_release -a) | sed 's/&/\&amp;/g' | sed 's/</\&lt;/g' | sed 's/  /\&nbsp /g' | sed 's/^/<br\/>/'
273         ) > $OUT/$SEC.html
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 ]
277         then  
278                 convert -normalize -scale $GEOM $f.png $OUT/$SEC.small.png -quality 85
279         fi
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/
282         if ls $f_base.s*.png 
283         then
284                 $LT/make_screenshot_html.py $OUT $SEC > $OUT/$SEC.screenshot.html
285         fi
286   fi
287  fi
288 done
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
294
295 firefox $OUT/indexreport.html
296 #google-chrome $OUT/indexreport.html