tazpkg rev 405
Various: several minor speed improvements, ask for a category now works properly in undigest window, major speedup of search packages/description, search packages/description now search only in packages/descriptions fields + equiv, new display for search for file - some debugs into it but it's not perfect as multi-repository handling needs some major improvement.
author | Antoine Bodin <gokhlayeh@slitaz.org> |
---|---|
date | Mon Jan 24 22:47:08 2011 +0100 (2011-01-24) |
parents | 15934c1240f7 |
children | bed335284b2e |
files | lib/libtazpkgbox |
line diff
1.1 --- a/lib/libtazpkgbox Sun Dec 26 11:01:45 2010 +0100 1.2 +++ b/lib/libtazpkgbox Mon Jan 24 22:47:08 2011 +0100 1.3 @@ -21,7 +21,7 @@ 1.4 1.5 usage() 1.6 { 1.7 - [ -n "$1" ] && echo "??? $0 $@" 1.8 + [ "$1" ] && echo "??? $0 $@" 1.9 echo -e "\nTazpkgbox library\n 1.10 Usage : $0 [function] [pkg|args] [pkg] 1.11 Functions: 1.12 @@ -39,24 +39,25 @@ 1.13 undigest_list() 1.14 { 1.15 IFS="|" 1.16 - if [ -n "$1" -a "$1" != "all" ]; then 1.17 - cat undigest/$1/packages.desc 1.18 + if [ "$1" -a "$1" != "all" ]; then 1.19 + cut -f 1,2,3,4 -d "|" undigest/$1/packages.desc 1.20 else 1.21 - cat undigest/*/packages.desc 1.22 - fi 2> /dev/null | sort | while read PACKAGE VERSION SHORT_DESC; do 1.23 + cut -f 1,2,3,4 -d "|" undigest/*/packages.desc | sort 1.24 + fi 2> /dev/null | while read PACKAGE VERSION SHORT_DESC CATEGORY; do 1.25 + [ $CAT = all -o $CATEGORY = " $CAT " ] || continue 1.26 ICON=tazpkg 1.27 PACKAGE=${PACKAGE%% *} 1.28 if [ -d installed/$PACKAGE ]; then 1.29 - [ "$2" == "installable" ] && continue 1.30 + [ "$2" = "installable" ] && continue 1.31 ICON=tazpkg-installed 1.32 if grep -qs "^$PACKAGE$" blocked-packages.list; then 1.33 ICON=stop 1.34 fi 1.35 else 1.36 - [ "$2" == "installed" ] && continue 1.37 + [ "$2" = "installed" ] && continue 1.38 fi 1.39 - [ "$2" == "blocked" -a "$ICON" != "stop" ] && continue 1.40 - [ "$2" == "upgradeable" ] && 1.41 + [ "$2" = "blocked" -a "$ICON" != "stop" ] && continue 1.42 + [ "$2" = "upgradeable" ] && 1.43 ! grep -q ^$PACKAGE$ upgradeable-packages.list && continue 1.44 echo "$ICON|$PACKAGE|$VERSION|$SHORT_DESC" 1.45 done 1.46 @@ -72,13 +73,12 @@ 1.47 return 1.48 fi 1.49 IFS="|" 1.50 - cat packages.desc undigest/*/packages.desc 2> /dev/null | sort | \ 1.51 + cut -f 1,2,3,4 -d "|" packages.desc undigest/*/packages.desc 2> /dev/null | sort | \ 1.52 while read PACKAGE VERSION SHORT_DESC CATEGORY; do 1.53 # Check first for category for more speed. 1.54 - CATEGORY=${CATEGORY%| *} 1.55 + [ $CAT = all -o $CATEGORY = " $CAT " ] || continue 1.56 + [ -d installed/${PACKAGE% } ] && continue 1.57 ICON=tazpkg 1.58 - [ $CAT == all -o $CATEGORY == " $CAT " ] || continue 1.59 - [ -d installed/${PACKAGE%% *} ] && continue 1.60 grep -qs "^$PACKAGE" undigest/*/packages.desc && ICON=add 1.61 echo "$ICON|$PACKAGE|$VERSION|$SHORT_DESC" 1.62 done | tee $cache 1.63 @@ -89,11 +89,11 @@ 1.64 { 1.65 for pkg in ${1}installed/* 1.66 do 1.67 - [ -n "$1" -a -s installed/$(basename $pkg)/receipt ] && continue 1.68 + [ "$1" -a -s installed/$(basename $pkg)/receipt ] && continue 1.69 . $pkg/receipt 1.70 ICON=tazpkg-installed 1.71 - [ $CAT == all -o $CATEGORY == $CAT ] || continue 1.72 - if [ -n "$1" -o -L $pkg ]; then 1.73 + [ $CAT = all -o $CATEGORY = $CAT ] || continue 1.74 + if [ "$1" -o -L $pkg ]; then 1.75 ICON=media-flash 1.76 else 1.77 grep -qs "^$PACKAGE" undigest/*/packages.desc && ICON=add 1.78 @@ -111,7 +111,7 @@ 1.79 cat $cache 1.80 return 1.81 fi 1.82 - ( installable_list ; installed_list ) | sort -t \| -k 2 -u | tee $cache 1.83 + { installable_list ; installed_list; } | sort -t \| -k 2 -u | tee $cache 1.84 } 1.85 1.86 blocked_list() 1.87 @@ -121,7 +121,7 @@ 1.88 for pkg in $(cat $1-packages.list 2> /dev/null); do 1.89 [ -f installed/$pkg/receipt ] || continue 1.90 . installed/$pkg/receipt 1.91 - [ $CAT == all -o $CATEGORY == $CAT ] || continue 1.92 + [ $CAT = all -o $CATEGORY = $CAT ] || continue 1.93 AVAILABLE=$(grep -s "^$pkg " packages.desc \ 1.94 undigest/*/packages.desc | awk '{ print $3 }') 1.95 echo "$ICON|$PACKAGE|$VERSION (Available: $AVAILABLE)|$SHORT_DESC" 1.96 @@ -139,27 +139,31 @@ 1.97 1.98 list_files() 1.99 { 1.100 - sed 's/.\[[01]m//g' | awk 'BEGIN { show=0 } { 1.101 - if (/^===/) show=1-show; 1.102 - else if (/^Package/) pkg=$2; 1.103 - else if ($0 != "" && show != 0) printf("%s %s\n",pkg,$0); 1.104 - }' | while read pkg file; do 1.105 - [ "$pkg" = "0" ] && continue 1.106 - version=$(grep -hs "^$pkg " /var/lib/tazpkg/packages.desc \ 1.107 - /var/lib/tazpkg/undigest/*/packages.desc | awk '{ print $3 }') 1.108 - if [ -d /var/lib/tazpkg/installed/$pkg ]; then 1.109 - if [ -x $file ]; then 1.110 - echo "exec|$pkg|$version|$file" 1.111 - elif [ -f $file ]; then 1.112 - echo "txt|$pkg|$version|$file" 1.113 - elif [ -d $file ] ; then 1.114 - echo "folder|$pkg|$version|$file" 1.115 + sed -e "/^$/d" -e "1,/^=*$/d" -e "/^=*$/,/EOT/d" | while read input; do 1.116 + if [ "$input" = "${input/ :/}" ]; then 1.117 + # Input is a file. 1.118 + if [ "$ICON" = tazpkg ]; then 1.119 + echo "add|$PACKAGE| |$input" 1.120 else 1.121 - # Missing installed file. 1.122 - echo "dialog-warning|$pkg|$version|$file" 1.123 - fi 1.124 + if [ -d $input ] ; then 1.125 + echo "folder|$PACKAGE| |$input" 1.126 + elif [ -x $input ]; then 1.127 + echo "exec|$PACKAGE| |$input" 1.128 + elif [ -f $input ]; then 1.129 + echo "txt|$PACKAGE| |$input" 1.130 + else 1.131 + # Missing installed file. 1.132 + echo "dialog-warning|$PACKAGE| |$input" 1.133 + fi 1.134 + fi 1.135 else 1.136 - echo "tazpkg|$pkg|$version|$file" 1.137 + # Input contain package name, don't refer to Package word as 1.138 + # tazpkg can use other languages. 1.139 + PACKAGE=$(echo $input | sed 's/^.* \(.*\) :.*$/\1/') 1.140 + ICON=tazpkg 1.141 + [ -d /var/lib/tazpkg/installed/$PACKAGE ] && ICON=tazpkg-installed 1.142 + echo "$ICON|$PACKAGE |$(grep -hs "^$PACKAGE " /var/lib/tazpkg/packages.desc \ 1.143 + /var/lib/tazpkg/undigest/*/packages.desc | cut -f2,3 -d '|' | head -1)" 1.144 fi 1.145 done 1.146 } 1.147 @@ -177,13 +181,13 @@ 1.148 search_package() 1.149 { 1.150 IFS="|" 1.151 - cat /var/lib/tazpkg/packages.desc \ 1.152 + cut -f1,2,3 -d '|' /var/lib/tazpkg/packages.desc \ 1.153 /var/lib/tazpkg/undigest/*/packages.desc 2> /dev/null | sort | \ 1.154 while read PACKAGE VERSION SHORT_DESC; do 1.155 - if echo "$PACKAGE $SHORT_DESC" | grep -iq "$SEARCH"; then 1.156 - list_package ${PACKAGE%% *} 1.157 - fi 1.158 - done 1.159 + [ "$PACKAGE" = "${PACKAGE/$SEARCH/}" -a "$SHORT_DESC" = "${SHORT_DESC/$SEARCH/}" ] \ 1.160 + && continue 1.161 + list_package ${PACKAGE% } 1.162 + done 1.163 unset IFS 1.164 } 1.165 1.166 @@ -207,13 +211,9 @@ 1.167 esac ;; 1.168 list-undigest) 1.169 cd /var/lib/tazpkg 1.170 - CAT=`cat /tmp/tazpkgbox/category` 1.171 set -- `cat /tmp/tazpkgbox/undigest-category` 1.172 - if [ "$1" == "all" -o "$1" == "" ]; then 1.173 - undigest_list $2 $3 1.174 - else 1.175 - undigest_list $2 $3 | grep "$1" 1.176 - fi ;; 1.177 + CAT="${1:-all}" 1.178 + undigest_list $2 $3 ;; 1.179 list-blocked|list-upgradeable) 1.180 cd /var/lib/tazpkg 1.181 CAT=`cat /tmp/tazpkgbox/category` 1.182 @@ -225,15 +225,15 @@ 1.183 /tmp/tazpkgbox/search ;; 1.184 search-packages) 1.185 clean_search 1.186 - ( search_package ; 1.187 + { search_package ; 1.188 for i in $(grep ^$SEARCH= /var/lib/tazpkg/packages.equiv | \ 1.189 cut -d= -f2); do 1.190 SEARCH=${i#*:} 1.191 search_package 1.192 - done ) > /tmp/tazpkgbox/search ;; 1.193 + done; } > /tmp/tazpkgbox/search ;; 1.194 search-tags) 1.195 clean_search 1.196 - grep -ls TAGS /home/slitaz/wok/*/receipt | while read file; do 1.197 + fgrep -ls TAGS /home/slitaz/wok/*/receipt | while read file; do 1.198 TAGS="" 1.199 . $file 1.200 case "$TAGS" in 1.201 @@ -279,7 +279,7 @@ 1.202 1.203 if [ "$2" = "list_files" ]; then 1.204 CONF_FILES="$(tazpkg list-config $3 | awk "$AWK_FILTER")" 1.205 - if [ -n "$CONF_FILES" ]; then 1.206 + if [ "$CONF_FILES" ]; then 1.207 mkdir $TMP_DIR 1.208 zcat $ROOT/installed/$3/volatile.cpio.gz | \ 1.209 ( cd $TMP_DIR ; cpio -id > /dev/null ) 1.210 @@ -308,7 +308,7 @@ 1.211 fi 1.212 echo "" 1.213 done 1.214 - [ -n "$CONF_FILES" ] && rm -rf $TMP_DIR 1.215 + [ "$CONF_FILES" ] && rm -rf $TMP_DIR 1.216 exit 0 1.217 fi 1.218 1.219 @@ -323,7 +323,7 @@ 1.220 1.221 if [ "$2" = "list_packages" ]; then 1.222 PKG="$3" 1.223 - if [ -n "$4" ]; then 1.224 + if [ "$4" ]; then 1.225 shift 1.226 export LIST_PKGS=' 1.227 <window title="Packages" icon-name="tazpkg"> 1.228 @@ -428,7 +428,7 @@ 1.229 /var/lib/tazpkg/undigest/*/packages.desc 2> /dev/null | \ 1.230 awk "/^$PACKAGE / { print \$3 }" | head -1 )" 1.231 UPGRADE="" 1.232 - if [ -n "$upgrade_version" ]; then 1.233 + if [ "$upgrade_version" ]; then 1.234 if [ "$upgrade_version" != "$VERSION" ]; then 1.235 UPGRADE="$upgrade_version" 1.236 else 1.237 @@ -437,7 +437,7 @@ 1.238 new_md5="$(cat /var/lib/tazpkg/packages.md5 \ 1.239 /var/lib/tazpkg/undigest/*/packages.md5 \ 1.240 2> /dev/null | awk "/ $PACKAGE-$VERSION/ { print \$1 }")" 1.241 - if [ -n "$cur_md5" -a -n "$new_md5" -a \ 1.242 + if [ "$cur_md5" -a "$new_md5" -a \ 1.243 "$cur_md5" != "$new_md5" ]; then 1.244 UPGRADE="build" 1.245 fi 1.246 @@ -453,23 +453,23 @@ 1.247 <variable>FIELD</variable> 1.248 <item icon=\"tazpkg\">Version: | $VERSION</item> 1.249 <item icon=\"tazpkg\">Category: | $CATEGORY</item>" 1.250 - [ -n "$UPGRADE" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.251 + [ "$UPGRADE" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.252 <item icon=\"tazpkg\">Upgrade: | $(echo $UPGRADE)</item>" 1.253 - [ -n "$DEPENDS" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.254 + [ "$DEPENDS" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.255 <item icon=\"tazpkg\">Depends: | $(echo $DEPENDS)</item>" 1.256 - [ -n "$SUGGESTED" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.257 + [ "$SUGGESTED" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.258 <item icon=\"tazpkg\">Suggested: | $(echo $SUGGESTED)</item>" 1.259 - [ -n "$PACKED_SIZE" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.260 + [ "$PACKED_SIZE" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.261 <item icon=\"tazpkg\">Size: | $PACKED_SIZE ($UNPACKED_SIZE installed)</item>" 1.262 - [ -n "$MAINTAINER" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.263 + [ "$MAINTAINER" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.264 <item icon=\"system-users\">Maintainer: | $MAINTAINER</item>" 1.265 - [ -n "$BUGS" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.266 + [ "$BUGS" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.267 <item icon=\"important\">Bugs: | $BUGS</item>" 1.268 - [ -n "$HANDBOOK_URL" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.269 + [ "$HANDBOOK_URL" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.270 <item icon=\"ascii\">Handbook: | $HANDBOOK_URL</item>" 1.271 - [ -n "$TAGS" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.272 + [ "$TAGS" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.273 <item icon=\"tazpkg\">Tags: | $TAGS</item>" 1.274 - [ -n "$CONFIG_FILES" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.275 + [ "$CONFIG_FILES" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.276 <item icon=\"tazpkg\">Config files: | $CONFIG_FILES</item>" 1.277 [ -f $ROOT/installed/$PKG/modifiers ] && 1.278 PACKAGE_INFOS="$PACKAGE_INFOS 1.279 @@ -498,7 +498,7 @@ 1.280 $PKG; sleep 5\"</action> 1.281 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action> 1.282 </button>" 1.283 - [ -n "$UPGRADE" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.284 + [ "$UPGRADE" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.285 <button> 1.286 <label>Upgrade</label> 1.287 <input file icon=\"go-next\"></input> 1.288 @@ -506,7 +506,7 @@ 1.289 tazpkg get-install $PKG --forced ; sleep 5\"</action> 1.290 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action> 1.291 </button>" 1.292 - grep -q post_install $ROOT/installed/$PKG/receipt && PACKAGE_INFOS="$PACKAGE_INFOS 1.293 + fgrep -q post_install $ROOT/installed/$PKG/receipt && PACKAGE_INFOS="$PACKAGE_INFOS 1.294 <button> 1.295 <label>Reconfigure</label> 1.296 <input file icon=\"reload\"></input> 1.297 @@ -629,21 +629,21 @@ 1.298 <variable>FIELD2</variable> 1.299 <item icon=\"tazpkg\">Version: | $VERSION</item> 1.300 <item icon=\"tazpkg\">Category: | $CATEGORY</item>" 1.301 - [ -n "$DEPENDS" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.302 + [ "$DEPENDS" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.303 <item icon=\"tazpkg\">Depends: | $(echo $DEPENDS)</item>" 1.304 - [ -n "$SUGGESTED" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.305 + [ "$SUGGESTED" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.306 <item icon=\"tazpkg\">Suggested: | $(echo $SUGGESTED)</item>" 1.307 - [ -n "$SIZES" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.308 + [ "$SIZES" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.309 <item icon=\"tazpkg\">Size: | $SIZES</item>" 1.310 - [ -n "$MAINTAINER" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.311 + [ "$MAINTAINER" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.312 <item icon=\"system-users\">Maintainer: | $MAINTAINER</item>" 1.313 - [ -n "$BUGS" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.314 + [ "$BUGS" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.315 <item icon=\"important\">Bugs: | $BUGS</item>" 1.316 - [ -n "$HANDBOOK_URL" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.317 + [ "$HANDBOOK_URL" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.318 <item icon=\"ascii\">Handbook: | $HANDBOOK_URL</item>" 1.319 - [ -n "$TAGS" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.320 + [ "$TAGS" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.321 <item icon=\"tazpkg\">Tags: | $TAGS</item>" 1.322 - [ -n "$CONFIG_FILES" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.323 + [ "$CONFIG_FILES" ] && PACKAGE_INFOS="$PACKAGE_INFOS 1.324 <item icon=\"tazpkg\">Config files: | $CONFIG_FILES</item>" 1.325 PACKAGE_INFOS="$PACKAGE_INFOS 1.326 <item icon=\"applications-internet\">Website: | $WEB_SITE</item>