# HG changeset patch # User Pascal Bellard # Date 1254322213 -7200 # Node ID 3e0b726b512bc3d20f7acc8b960b2314a31c582c # Parent 1703cc22888ba3779641a09312d15f18191db072 Speedup tazpkgbox refresh diff -r 1703cc22888b -r 3e0b726b512b lib/tazpkgbox/list --- a/lib/tazpkgbox/list Wed Sep 30 14:32:08 2009 +0200 +++ b/lib/tazpkgbox/list Wed Sep 30 16:50:13 2009 +0200 @@ -13,8 +13,8 @@ cat /var/lib/tazpkg/undigest/*/packages.desc fi 2> /dev/null | sort | while read PACKAGE VERSION SHORT_DESC; do ICON=tazpkg - if [ -d /var/lib/tazpkg/installed/${PACKAGE%% *} ]; then - . /var/lib/tazpkg/installed/${PACKAGE%% *}/receipt + PACKAGE=${PACKAGE%% *} + if [ -d /var/lib/tazpkg/installed/$PACKAGE ]; then ICON=tazpkg-installed if grep -qs "^$PACKAGE$" /var/lib/tazpkg/blocked-packages.list; then ICON=stop @@ -27,6 +27,13 @@ installable_list() { + local cache + cache=/var/lib/tazpkg/packages.installable_list.$CAT + if [ -s $cache -a $cache -nt /var/lib/tazpkg/packages.desc \ + -a $cache -nt /var/lib/tazpkg/installed ]; then + cat $cache + return + fi IFS="|" cat /var/lib/tazpkg/packages.desc \ /var/lib/tazpkg/undigest/*/packages.desc 2> /dev/null | sort | \ @@ -34,12 +41,12 @@ # Check first for category for more speed. CATEGORY=${CATEGORY%| *} ICON=tazpkg - [ "$CAT" == "all" -o "$CATEGORY" == "$CAT" ] || continue + [ $CAT == all -o $CATEGORY == $CAT ] || continue [ -d /var/lib/tazpkg/installed/${PACKAGE%% *} ] && continue grep -qs "^$PACKAGE" /var/lib/tazpkg/undigest/*/packages.desc && ICON=add echo "$ICON|$PACKAGE|$VERSION|$SHORT_DESC" - done + done | tee $cache unset IFS } @@ -49,7 +56,7 @@ do . $pkg/receipt ICON=tazpkg-installed - [ "$CAT" == "all" -o "$CATEGORY" == "$CAT" ] || continue + [ $CAT == all -o $CATEGORY == $CAT ] || continue grep -qs "^$PACKAGE" /var/lib/tazpkg/undigest/*/packages.desc && ICON=add grep -qs "^$PACKAGE$" /var/lib/tazpkg/blocked-packages.list && @@ -60,18 +67,24 @@ all_list() { - ( installable_list ; installed_list ) | sort -t \| -k 2 -u + local cache + cache=/var/lib/tazpkg/packages.all_list.$CAT + if [ -s $cache -a $cache -nt /var/lib/tazpkg/packages.desc \ + -a $cache -nt /var/lib/tazpkg/installed ]; then + cat $cache + return + fi + ( installable_list ; installed_list ) | sort -t \| -k 2 -u | tee $cache } blocked_list() { - for pkg in /var/lib/tazpkg/installed/* - do - . $pkg/receipt - if grep -qs "^$(basename $pkg)$" /var/lib/tazpkg/blocked-packages.list; then - AVAILABLE=$(grep -s "^$(basename $pkg) " /var/lib/tazpkg/packages.desc /var/lib/tazpkg/undigest/*/packages.desc | awk '{ print $3 }') - echo "stop|$PACKAGE|$VERSION (Available: $AVAILABLE)|$SHORT_DESC" - fi + for pkg in $(cat /var/lib/tazpkg/blocked-packages.list 2> /dev/null); do + [ -f /var/lib/tazpkg/installed/$pkg/receipt ] || continue + . /var/lib/tazpkg/installed/$pkg/receipt + AVAILABLE=$(grep -s "^$pkg " /var/lib/tazpkg/packages.desc \ + /var/lib/tazpkg/undigest/*/packages.desc | awk '{ print $3 }') + echo "stop|$PACKAGE|$VERSION (Available: $AVAILABLE)|$SHORT_DESC" done }