cookutils rev 1126
Using single database for the cooker badges - speed up the listings, show counts
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Wed Jan 02 18:06:34 2019 +0200 (2019-01-02) |
parents | 88141f5b4731 |
children | 44799da9eaeb |
files | cooker lighttpd/index.cgi modules/postcheck |
line diff
1.1 --- a/cooker Sat Dec 29 17:30:21 2018 +0200 1.2 +++ b/cooker Wed Jan 02 18:06:34 2019 +0200 1.3 @@ -468,7 +468,7 @@ 1.4 cook_list ;; 1.5 1.6 pkg|-p) 1.7 - # Same as 'cook pkg' but with log for web interface. 1.8 + # Same as 'cook pkg'. 1.9 ps | grep -q "cook $pkg$" && echo 'Already running' && continue 1.10 cook $pkg || broken 1.11 clean_exit ;; 1.12 @@ -672,6 +672,7 @@ 1.13 sed -i "/^${pkg}$/d" $blocked $broken $commits.tmp 1.14 sed -i "/^$pkg\t/d" $PKGS/packages-$ARCH.info 1.15 sed -i "/^$pkg:/d" $cache/files.list 1.16 + sed -i "/^$pkg\t/d" $cache/badges 1.17 fi 1.18 if [ -d "$wok/$pkg/stuff" ]; then 1.19 if [ ! -d "$wok-hg/$pkg/stuff" ]; then
2.1 --- a/lighttpd/index.cgi Sat Dec 29 17:30:21 2018 +0200 2.2 +++ b/lighttpd/index.cgi Wed Jan 02 18:06:34 2019 +0200 2.3 @@ -34,6 +34,7 @@ 2.4 command="$CACHE/command"; touch $command 2.5 blocked="$CACHE/blocked" 2.6 broken="$CACHE/broken" 2.7 +badges="$CACHE/badges" 2.8 cooknotes="$CACHE/cooknotes" 2.9 cooktime="$CACHE/cooktime" 2.10 wokrev="$CACHE/wokrev" 2.11 @@ -940,13 +941,22 @@ 2.12 2.13 show_badges() { 2.14 local t p s # title problem solution 2.15 + unset t p s 2.16 + counts=$(mktemp) 2.17 2.18 case $layout in 2.19 table) 2.20 echo "<section><h2>Badges</h2><table class=\"badges\"><thead><tr><th></th><th>Problem</th><th>Solution</th></tr></thead><tbody>" 2.21 ;; 2.22 list) 2.23 - echo "<section><h2>Badges list</h2><p>Click on badge to get list of packages</p><table class=\"badges\"><thead><tr><th></th><th>Problem</th></tr></thead><tbody>" 2.24 + echo "<section><h2>Badges list</h2><p>Click on badge to get list of packages</p><table class=\"badges\"><thead><tr><th></th><th>Problem</th><th>Count</th></tr></thead><tbody>" 2.25 + for i in bdbroken broken any noany libtool nolibtool own ownover perm permover symlink ss fadd frem fdup old orphan patch win no-badge; do 2.26 + case $i in 2.27 + no-badge) num=$(awk -F$'\t' '{if (! $2) print 1}' $badges | wc -l);; 2.28 + *) num=$(awk -F$'\t' -vi=" $i " '{if (index(" " $2 " ", i)) print 1}' $badges | wc -l);; 2.29 + esac 2.30 + echo "$i $num" >>$counts 2.31 + done 2.32 ;; 2.33 esac 2.34 2.35 @@ -1065,7 +1075,8 @@ 2.36 list) 2.37 p=$(echo $p | sed 's|<a [^>]*>\([^<]*\)</a>|\1|g') 2.38 s=$(echo $s | sed 's|<a [^>]*>\([^<]*\)</a>|\1|g|') 2.39 - echo "<tr><td><a href=\"$badge\" class=\"button badge $badge\" title=\"$t\"></a></td><td>$p</td></tr>" 2.40 + c=$(awk -vbadge="$badge" '{if ($1 == badge) { print $2; exit }}' $counts) 2.41 + echo "<tr><td><a href=\"$badge\" class=\"button badge $badge\" title=\"$t\"></a></td><td>$p</td><td>$c</td></tr>" 2.42 ;; 2.43 *) 2.44 echo -n "<span class=\"badge $badge\" title=\"$t\"/>" 2.45 @@ -1078,6 +1089,8 @@ 2.46 echo "</tbody></table></section>" 2.47 ;; 2.48 esac 2.49 + 2.50 + rm $counts 2.51 } 2.52 2.53 2.54 @@ -1609,9 +1622,8 @@ 2.55 <tbody> 2.56 EOT 2.57 2.58 - ls $WOK \ 2.59 + awk -F$'\t' '{if (! $2) print $1}' $badges \ 2.60 | while read pkg; do 2.61 - [ -s $WOK/$pkg/.badges ] && continue 2.62 awk -F$'\t' -vpkg="$pkg" -vbase="$base/" '{ 2.63 if ($1 == pkg) { 2.64 url = base $1 "/"; 2.65 @@ -1632,28 +1644,25 @@ 2.66 <tbody> 2.67 EOT 2.68 2.69 - ls $WOK \ 2.70 + awk -F$'\t' -vbadge=" $badge " '{if (index(" " $2 " ", badge)) print $1}' $badges \ 2.71 | while read pkg; do 2.72 - [ -e $WOK/$pkg/.badges ] || continue 2.73 - if grep -q "^${badge}$" $WOK/$pkg/.badges; then 2.74 - if grep -q "^$pkg " $PKGS/packages-$ARCH.info; then 2.75 - awk -F$'\t' -vpkg="$pkg" -vbase="$base/" '{ 2.76 - if ($1 == pkg) { 2.77 - url = base $1 "/"; 2.78 - gsub("+", "%2B", url); 2.79 - printf("<tr><td><img src=\"%ss/%s\" alt=\"%s\"> ", base, $1, $1); 2.80 - printf("<a href=\"%s\">%s</a></td><td>%s</td><td>%s</td></tr>\n", url, $1, $4, $3); 2.81 - } 2.82 - }' $PKGS/packages-$ARCH.info 2.83 - else 2.84 - # broken packages absent in packages-<arch>.info; use receipt (slower) 2.85 - { 2.86 - . $WOK/$pkg/receipt 2.87 - echo -n "<tr><td><img src=\"$base/s/$pkg\" alt=\"$pkg\"> " 2.88 - echo -n "<a href=\"$base/$pkg/\">$pkg</a></td>" 2.89 - echo "<td>$SHORT_DESC</td><td>$CATEGORY</td></tr>" 2.90 + if grep -q "^$pkg " $PKGS/packages-$ARCH.info; then 2.91 + awk -F$'\t' -vpkg="$pkg" -vbase="$base/" '{ 2.92 + if ($1 == pkg) { 2.93 + url = base $1 "/"; 2.94 + gsub("+", "%2B", url); 2.95 + printf("<tr><td><img src=\"%ss/%s\" alt=\"%s\"> ", base, $1, $1); 2.96 + printf("<a href=\"%s\">%s</a></td><td>%s</td><td>%s</td></tr>\n", url, $1, $4, $3); 2.97 } 2.98 - fi 2.99 + }' $PKGS/packages-$ARCH.info 2.100 + else 2.101 + # broken packages absent in packages-<arch>.info; use receipt (slower) 2.102 + { 2.103 + . $WOK/$pkg/receipt 2.104 + echo -n "<tr><td><img src=\"$base/s/$pkg\" alt=\"$pkg\"> " 2.105 + echo -n "<a href=\"$base/$pkg/\">$pkg</a></td>" 2.106 + echo "<td>$SHORT_DESC</td><td>$CATEGORY</td></tr>" 2.107 + } 2.108 fi 2.109 done 2.110 ;; 2.111 @@ -1724,8 +1733,9 @@ 2.112 2.113 2.114 # Show Cooker badges 2.115 - if [ -s $wok/$pkg/.badges ]; then 2.116 - layout='table' show_badges $(cat $wok/$pkg/.badges) 2.117 + pkg_badges=$(awk -F$'\t' -vpkg="$pkg" '{if ($1 == pkg) { print $2; exit } }' $badges) 2.118 + if [ -n "$pkg_badges" ]; then 2.119 + layout='table' show_badges $pkg_badges 2.120 fi 2.121 2.122
3.1 --- a/modules/postcheck Sat Dec 29 17:30:21 2018 +0200 3.2 +++ b/modules/postcheck Wed Jan 02 18:06:34 2019 +0200 3.3 @@ -16,6 +16,8 @@ 3.4 badges="$WOK/$1/.badges" 3.5 echo -n > $badges # clean badges 3.6 3.7 +badges_global="$CACHE/badges"; touch $badges_global 3.8 + 3.9 overrides="$WOK/$1/stuff/overrides" 3.10 overrides_exp="$data/overrides_exp" 3.11 fail="$data/fail" # file used as flag, if will be empty if no fails were found 3.12 @@ -302,3 +304,8 @@ 3.13 footer 3.14 3.15 rm -r $data # clean 3.16 + 3.17 +# move badges to the global database 3.18 +sed "/^$PACKAGE /d" $badges_global 3.19 +echo "$PACKAGE $(tr '\n' ' ' <$badges | sed 's| $||')" >>$badges_global 3.20 +rm $badges