# HG changeset patch # User Aleksej Bobylev # Date 1546445194 -7200 # Node ID 54275f30a065152321ab9b905538e4634e5e427b # Parent 88141f5b47310eb421e84b39bda3f5cc214c9bd1 Using single database for the cooker badges - speed up the listings, show counts diff -r 88141f5b4731 -r 54275f30a065 cooker --- a/cooker Sat Dec 29 17:30:21 2018 +0200 +++ b/cooker Wed Jan 02 18:06:34 2019 +0200 @@ -468,7 +468,7 @@ cook_list ;; pkg|-p) - # Same as 'cook pkg' but with log for web interface. + # Same as 'cook pkg'. ps | grep -q "cook $pkg$" && echo 'Already running' && continue cook $pkg || broken clean_exit ;; @@ -672,6 +672,7 @@ sed -i "/^${pkg}$/d" $blocked $broken $commits.tmp sed -i "/^$pkg\t/d" $PKGS/packages-$ARCH.info sed -i "/^$pkg:/d" $cache/files.list + sed -i "/^$pkg\t/d" $cache/badges fi if [ -d "$wok/$pkg/stuff" ]; then if [ ! -d "$wok-hg/$pkg/stuff" ]; then diff -r 88141f5b4731 -r 54275f30a065 lighttpd/index.cgi --- a/lighttpd/index.cgi Sat Dec 29 17:30:21 2018 +0200 +++ b/lighttpd/index.cgi Wed Jan 02 18:06:34 2019 +0200 @@ -34,6 +34,7 @@ command="$CACHE/command"; touch $command blocked="$CACHE/blocked" broken="$CACHE/broken" +badges="$CACHE/badges" cooknotes="$CACHE/cooknotes" cooktime="$CACHE/cooktime" wokrev="$CACHE/wokrev" @@ -940,13 +941,22 @@ show_badges() { local t p s # title problem solution + unset t p s + counts=$(mktemp) case $layout in table) echo "

Badges

" ;; list) - echo "

Badges list

Click on badge to get list of packages

ProblemSolution
" + echo "

Badges list

Click on badge to get list of packages

Problem
" + 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 + case $i in + no-badge) num=$(awk -F$'\t' '{if (! $2) print 1}' $badges | wc -l);; + *) num=$(awk -F$'\t' -vi=" $i " '{if (index(" " $2 " ", i)) print 1}' $badges | wc -l);; + esac + echo "$i $num" >>$counts + done ;; esac @@ -1065,7 +1075,8 @@ list) p=$(echo $p | sed 's|]*>\([^<]*\)|\1|g') s=$(echo $s | sed 's|]*>\([^<]*\)|\1|g|') - echo "" + c=$(awk -vbadge="$badge" '{if ($1 == badge) { print $2; exit }}' $counts) + echo "" ;; *) echo -n "" @@ -1078,6 +1089,8 @@ echo "
ProblemCount
$p
$p$c
" ;; esac + + rm $counts } @@ -1609,9 +1622,8 @@ EOT - ls $WOK \ + awk -F$'\t' '{if (! $2) print $1}' $badges \ | while read pkg; do - [ -s $WOK/$pkg/.badges ] && continue awk -F$'\t' -vpkg="$pkg" -vbase="$base/" '{ if ($1 == pkg) { url = base $1 "/"; @@ -1632,28 +1644,25 @@ EOT - ls $WOK \ + awk -F$'\t' -vbadge=" $badge " '{if (index(" " $2 " ", badge)) print $1}' $badges \ | while read pkg; do - [ -e $WOK/$pkg/.badges ] || continue - if grep -q "^${badge}$" $WOK/$pkg/.badges; then - if grep -q "^$pkg " $PKGS/packages-$ARCH.info; then - awk -F$'\t' -vpkg="$pkg" -vbase="$base/" '{ - if ($1 == pkg) { - url = base $1 "/"; - gsub("+", "%2B", url); - printf("\"%s\" ", base, $1, $1); - printf("%s%s%s\n", url, $1, $4, $3); - } - }' $PKGS/packages-$ARCH.info - else - # broken packages absent in packages-.info; use receipt (slower) - { - . $WOK/$pkg/receipt - echo -n "\"$pkg\" " - echo -n "$pkg" - echo "$SHORT_DESC$CATEGORY" + if grep -q "^$pkg " $PKGS/packages-$ARCH.info; then + awk -F$'\t' -vpkg="$pkg" -vbase="$base/" '{ + if ($1 == pkg) { + url = base $1 "/"; + gsub("+", "%2B", url); + printf("\"%s\" ", base, $1, $1); + printf("%s%s%s\n", url, $1, $4, $3); } - fi + }' $PKGS/packages-$ARCH.info + else + # broken packages absent in packages-.info; use receipt (slower) + { + . $WOK/$pkg/receipt + echo -n "\"$pkg\" " + echo -n "$pkg" + echo "$SHORT_DESC$CATEGORY" + } fi done ;; @@ -1724,8 +1733,9 @@ # Show Cooker badges - if [ -s $wok/$pkg/.badges ]; then - layout='table' show_badges $(cat $wok/$pkg/.badges) + pkg_badges=$(awk -F$'\t' -vpkg="$pkg" '{if ($1 == pkg) { print $2; exit } }' $badges) + if [ -n "$pkg_badges" ]; then + layout='table' show_badges $pkg_badges fi diff -r 88141f5b4731 -r 54275f30a065 modules/postcheck --- a/modules/postcheck Sat Dec 29 17:30:21 2018 +0200 +++ b/modules/postcheck Wed Jan 02 18:06:34 2019 +0200 @@ -16,6 +16,8 @@ badges="$WOK/$1/.badges" echo -n > $badges # clean badges +badges_global="$CACHE/badges"; touch $badges_global + overrides="$WOK/$1/stuff/overrides" overrides_exp="$data/overrides_exp" fail="$data/fail" # file used as flag, if will be empty if no fails were found @@ -302,3 +304,8 @@ footer rm -r $data # clean + +# move badges to the global database +sed "/^$PACKAGE /d" $badges_global +echo "$PACKAGE $(tr '\n' ' ' <$badges | sed 's| $||')" >>$badges_global +rm $badges