tazpkg annotate lib/tazpkgbox/package_infos @ rev 211

tazpkgbox: show depends/rdepends tree
author Pascal Bellard <pascal.bellard@slitaz.org>
date Mon Nov 24 11:41:43 2008 +0000 (2008-11-24)
parents 7c00ac97d6bf
children 39ff491d6b0c
rev   line source
pankso@81 1 #!/bin/sh
pankso@81 2 #
MikeDSmith25@135 3 # Dialog box to provide package info and actions
pankso@81 4 #
pankso@81 5
pankso@81 6 XTERM_OPTS="-geometry 80x16+120+120"
pankso@81 7
pankso@81 8 PKG=`cat /tmp/tazpkgbox/pkg | sed s/" "/""/g`
pascal@146 9 TMP_DIR=/tmp/tazpkg-$$-$RANDOM
pankso@81 10
pascal@211 11 if [ "$1" = "sizes" ]; then
pascal@211 12 cat <<EOT
pascal@211 13 Dependancies for $2:
pascal@211 14 $(tazpkg depends $2)
pascal@211 15
pascal@211 16 Reverse dependancies for $2:
pascal@211 17 $(tazpkg rdepends $2)
pascal@211 18 EOT
pascal@211 19 exit 0
pascal@211 20 fi
pascal@209 21 if [ "$1" = "info" ]; then
pascal@209 22 RECEIPT=/var/lib/tazpkg/installed/$3/receipt
pascal@209 23 . $RECEIPT
pascal@209 24 case "$2" in
pascal@209 25 Web*) firefox $WEB_SITE &;;
pascal@211 26 Siz*) xterm -T "$3 depends (q to quit)" -e "$0 sizes $3 | less";;
pascal@209 27 Hand*) firefox $HANDBOOK_URL &;;
pascal@209 28 Sug*) $0 list_packages $SUGGESTED;;
pascal@209 29 Dep*) $0 list_packages $DEPENDS;;
pascal@209 30 Mod*) $0 list_packages $(xargs echo < /var/lib/tazpkg/installed/$3/modifiers);;
pascal@210 31 Con*) tazpkgbox list_config $3;;
pascal@209 32 Ver*) xterm -T "$3 receipt (q to quit)" -e "cat $RECEIPT | less";;
pascal@209 33 esac
pascal@209 34 exit 0
pascal@209 35 fi
pascal@209 36
pascal@97 37 if [ "$1" = "list_files" ]; then
pascal@143 38 AWK_FILTER='BEGIN { ls=0 } { if (/^===/) ls=1-ls; else if (ls) print; }'
pascal@143 39 CONF_FILES="$(tazpkg list-config $2 | awk "$AWK_FILTER")"
pascal@146 40 if [ -n "$CONF_FILES" ]; then
pascal@146 41 mkdir $TMP_DIR
pascal@146 42 zcat /var/lib/tazpkg/installed/$2/volatile.cpio.gz | \
pascal@146 43 ( cd $TMP_DIR ; cpio -id > /dev/null )
pascal@146 44 fi
pascal@143 45 tazpkg list-files $2 | awk "$AWK_FILTER" | while read file; do
pascal@156 46 echo -n "$(stat -c "%A|%U|%G|%s|%n|" "$file" || \
pascal@171 47 echo "File lost !||||$file|")"
pascal@143 48 if [ -L "$file" ]; then
pascal@143 49 echo -n "$(readlink "$file")"
pascal@143 50 elif [ -f "$file" ]; then
pascal@143 51 case "$CONF_FILES" in
pascal@146 52 *$file*)
pascal@146 53 if cmp $file $TMP_DIR$file > /dev/null 2>&1; then
pascal@146 54 echo -n "[configuration]"
pascal@146 55 else
pascal@146 56 echo -n "$(stat -c "[configuration: %.16y]" $file)"
pascal@146 57 fi;;
pascal@178 58 #* if [ "$(tazpkg check-file $file $2)" = "failure" ]; then
pascal@178 59 # echo -n "Invalid md5"
pascal@178 60 # fi;;
pascal@143 61 esac
pascal@143 62 fi
pascal@143 63 echo ""
pascal@143 64 done
pascal@146 65 [ -n "$CONF_FILES" ] && rm -rf $TMP_DIR
pascal@97 66 exit 0
pascal@97 67 fi
pascal@97 68
pascal@99 69 if [ "$1" = "list_files_mirror" ]; then
pascal@187 70 for i in /var/lib/tazpkg/files.list.lzma \
pascal@187 71 /var/lib/tazpkg/undigest/*/files.list.lzma ; do
pascal@187 72 [ -f $i ] || continue
pascal@187 73 unlzma -c $i
pascal@187 74 done | grep -- "^$2:" | awk '{ print substr($0,index($0,":")+2) }'
pascal@99 75 exit 0
pascal@99 76 fi
pascal@99 77
pascal@174 78 if [ "$1" = "list_packages" ]; then
pascal@174 79 PKG="$2"
pascal@174 80 if [ -n "$3" ]; then
pascal@174 81 shift
pascal@174 82 export LIST_PKGS='
pascal@174 83 <window title="Packages" icon-name="tazpkg">
pascal@174 84 <vbox>
pascal@174 85 <tree>
pascal@174 86 <width>600</width><height>160</height>
pascal@174 87 <label>Package|Version|Size|Description</label>
pascal@174 88 <variable>PKG</variable>
pascal@174 89 '
pascal@174 90 for i in "$@"; do
pascal@174 91 if [ -d /var/lib/tazpkg/installed/$i ]; then
pascal@174 92 . /var/lib/tazpkg/installed/$i/receipt
pascal@174 93 LIST_PKGS="$LIST_PKGS
pascal@174 94 <item icon=\"tazpkg\">$i|$VERSION|Installed|$SHORT_DESC</item>
pascal@174 95 "
pascal@174 96 else
pascal@187 97 RES=`grep -sh "^$i " \
pascal@187 98 /var/lib/tazpkg/packages.desc \
pascal@187 99 /var/lib/tazpkg/undigest/*/packages.desc`
pascal@174 100 PACKAGE=`echo "$RES" | cut -d "|" -f 1`
pascal@174 101 VERSION=`echo "$RES" | cut -d "|" -f 2`
pascal@174 102 SHORT_DESC=`echo "$RES" | cut -d "|" -f 3`
pascal@187 103 SIZE=`grep -sh -A 3 "^$(echo $PACKAGE)$" \
pascal@187 104 /var/lib/tazpkg/packages.txt \
pascal@187 105 /var/lib/tazpkg/undigest/*/packages.txt | \
pascal@187 106 tail -1 | sed 's/.*(\(.*\) .*/\1/'`
pascal@174 107 LIST_PKGS="$LIST_PKGS
pascal@174 108 <item icon=\"tazpkg\">$i|$VERSION|$SIZE|$SHORT_DESC</item>
pascal@174 109 "
pascal@174 110 fi
pascal@174 111 done
pascal@174 112 LIST_PKGS="$LIST_PKGS
pascal@178 113 <action>echo "\$PKG" > /tmp/tazpkgbox/pkg</action>
pascal@178 114 <action>/usr/lib/slitaz/tazpkgbox/package_infos</action>
pascal@178 115 <action>refresh:PKG</action>
pascal@178 116 <action>refresh:PKG_STATS</action>
pascal@178 117 <action>refresh:CACHE_STATS</action>
pascal@174 118 </tree>
pascal@174 119 <hbox>
pascal@174 120 <button ok>
pascal@174 121 </button>
pascal@174 122 <button cancel>
pascal@174 123 <action type=\"closewindow\">LIST_PKGS</action>
pascal@174 124 </button>
pascal@174 125 </hbox>
pascal@174 126 </vbox>
pascal@174 127 </window>
pascal@174 128 "
pascal@174 129 eval `gtkdialog --center --program=LIST_PKGS`
pascal@174 130 [ "$EXIT" = "OK" ] || exit 0
pascal@174 131 fi
pascal@174 132 fi
pascal@174 133
pascal@97 134 export LIST_FILES="
pascal@97 135 <window title=\"$PKG files\" icon-name=\"system-file-manager\">
pascal@97 136 <vbox>
pascal@143 137 <tree exported_column=\"4\">
pascal@143 138 <variable>FILE</variable>
pascal@97 139 <width>600</width><height>160</height>
pascal@143 140 <label>Access | User | Group | Size | Name | Target</label>
pascal@97 141 <input> $0 list_files $PKG </input>
pascal@143 142 <action>tazpkg list-config $PKG | grep -q ^\$FILE$ && leafpad \$FILE</action>
pascal@97 143 </tree>
pascal@97 144 <hbox>
pascal@97 145 <button>
pascal@97 146 <input file icon=\"gtk-close\"></input>
pascal@97 147 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
pascal@97 148 </button>
pascal@97 149 </hbox>
pascal@97 150 </vbox>
pascal@97 151 </window>
pascal@97 152 "
pascal@97 153
pascal@99 154 export LIST_FILES_MIRROR="
pascal@99 155 <window title=\"$PKG files\" icon-name=\"system-file-manager\">
pascal@99 156 <vbox>
pascal@99 157 <tree>
pascal@99 158 <width>300</width><height>160</height>
pascal@99 159 <label>File Name</label>
pascal@99 160 <input> $0 list_files_mirror $PKG </input>
pascal@99 161 </tree>
pascal@99 162 <hbox>
pascal@99 163 <button>
pascal@99 164 <input file icon=\"gtk-close\"></input>
pascal@99 165 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
pascal@99 166 </button>
pascal@99 167 </hbox>
pascal@99 168 </vbox>
pascal@99 169 </window>
pascal@99 170 "
pascal@99 171
pankso@81 172 # Installed or not installed, that the question.
pankso@81 173 if [ -d /var/lib/tazpkg/installed/$PKG ]; then
pascal@87 174 PACKED_SIZE=""
pascal@88 175 DEPENDS=""
pascal@133 176 MAINTAINER=""
pascal@173 177 BUGS=""
pankso@81 178 . /var/lib/tazpkg/installed/$PKG/receipt
pascal@133 179 MAINTAINER=$(echo "$MAINTAINER" | sed 's/[<>|]/ /g')
pascal@87 180 PACKAGE_INFOS="
pankso@81 181 <window title=\"Package: $PKG\" icon-name=\"package-x-generic\">
pankso@81 182 <vbox>
pankso@81 183
pankso@81 184 <tree>
pascal@174 185 <width>460</width><height>200</height>
pascal@150 186 <label>$PKG|$SHORT_DESC</label>
pascal@131 187 <variable>FIELD</variable>
pankso@81 188 <item icon=\"tazpkg\">Version: | $VERSION</item>
pascal@88 189 <item icon=\"tazpkg\">Category: | $CATEGORY</item>"
pascal@88 190 [ -n "$DEPENDS" ] && PACKAGE_INFOS="$PACKAGE_INFOS
pascal@131 191 <item icon=\"tazpkg\">Depends: | $(echo $DEPENDS)</item>"
pascal@162 192 [ -n "$SUGGESTED" ] && PACKAGE_INFOS="$PACKAGE_INFOS
pascal@162 193 <item icon=\"tazpkg\">Suggested: | $(echo $SUGGESTED)</item>"
pascal@87 194 [ -n "$PACKED_SIZE" ] && PACKAGE_INFOS="$PACKAGE_INFOS
pascal@87 195 <item icon=\"tazpkg\">Size: | $PACKED_SIZE ($UNPACKED_SIZE installed)</item>"
pascal@132 196 [ -n "$MAINTAINER" ] && PACKAGE_INFOS="$PACKAGE_INFOS
pascal@132 197 <item icon=\"system-users\">Maintainer: | $MAINTAINER</item>"
pascal@173 198 [ -n "$BUGS" ] && PACKAGE_INFOS="$PACKAGE_INFOS
pascal@211 199 <item icon=\"important\">Bugs: | $BUGS</item>"
pascal@198 200 [ -n "$HANDBOOK_URL" ] && PACKAGE_INFOS="$PACKAGE_INFOS
pascal@198 201 <item icon=\"ascii\">Handbook: | $HANDBOOK_URL</item>"
pascal@209 202 [ -n "$CONFIG_FILES" ] && PACKAGE_INFOS="$PACKAGE_INFOS
pascal@209 203 <item icon=\"tazpkg\">Config files: | $CONFIG_FILES</item>"
pascal@209 204 [ -f /var/lib/tazpkg/installed/$PKG/modifiers ] &&
pascal@209 205 PACKAGE_INFOS="$PACKAGE_INFOS
pascal@209 206 <item icon=\"tazpkg\">Modified by: | $(xargs echo < /var/lib/tazpkg/installed/$PKG/modifiers)</item>"
pascal@87 207 PACKAGE_INFOS="$PACKAGE_INFOS
pankso@81 208 <item icon=\"applications-internet\">Web site: | $WEB_SITE</item>
pascal@209 209 <action> $0 info \"\$FIELD\" $PKG </action>
pankso@81 210 </tree>
pankso@81 211
pascal@92 212 <hbox>"
pascal@201 213 [ ${PKG%%-*} = get -a ! -d /var/lib/tazpkg/installed/${PKG#get-} ] && PACKAGE_INFOS="$PACKAGE_INFOS
pascal@130 214 <button>
pascal@130 215 <label>Install</label>
pascal@130 216 <input file icon=\"go-next\"></input>
pascal@130 217 <action>xterm -T \"Install ${PKG#get-}\" $XTERM_OPTS -e \"\
pascal@130 218 $PKG; sleep 5\"</action>
pascal@130 219 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
pascal@130 220 </button>"
pascal@92 221 grep -q post_install /var/lib/tazpkg/installed/$PKG/receipt && PACKAGE_INFOS="$PACKAGE_INFOS
pascal@92 222 <button>
pascal@92 223 <label>Reconfigure</label>
pascal@92 224 <input file icon=\"reload\"></input>
pascal@92 225 <action>xterm -T \"Reconfigure $PACKAGE\" $XTERM_OPTS -e \"\
pascal@92 226 tazpkg reconfigure $PACKAGE; sleep 2\"</action>
pascal@92 227 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
pascal@92 228 </button>"
pascal@153 229 if grep -qs ^$PKG$ /var/lib/tazpkg/blocked-packages.list; then
pascal@93 230 PACKAGE_INFOS="$PACKAGE_INFOS
pascal@93 231 <button>
pascal@93 232 <label>Unblock</label>
pascal@93 233 <input file icon=\"up\"></input>
pascal@93 234 <action>xterm -T \"Unblock $PACKAGE\" $XTERM_OPTS -e \"\
pascal@93 235 tazpkg unblock $PACKAGE; sleep 2\"</action>
pascal@93 236 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
pascal@93 237 </button>"
pascal@93 238 else
pascal@93 239 PACKAGE_INFOS="$PACKAGE_INFOS
pascal@93 240 <button>
pascal@93 241 <label>Block</label>
pascal@93 242 <input file icon=\"down\"></input>
pascal@93 243 <action>xterm -T \"Block $PACKAGE\" $XTERM_OPTS -e \"\
pascal@93 244 tazpkg block $PACKAGE; sleep 2\"</action>
pascal@93 245 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
pascal@93 246 </button>"
pascal@93 247 fi
pascal@92 248 PACKAGE_INFOS="$PACKAGE_INFOS
pankso@81 249 <button>
pankso@81 250 <label>Remove</label>
pankso@81 251 <input file icon=\"edit-delete\"></input>
pankso@81 252 <action>xterm -T \"Remove $PACKAGE\" $XTERM_OPTS -e \"\
pankso@81 253 tazpkg remove $PACKAGE; sleep 2\"</action>
pankso@81 254 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
pankso@81 255 </button>
pankso@81 256 <button>
pankso@81 257 <label>Repack</label>
pankso@81 258 <input file icon=\"edit-redo\"></input>
pankso@81 259 <action>xterm -T \"Repack $PACKAGE\" $XTERM_OPTS -e \"\
pankso@81 260 cd /var/cache/tazpkg; \
pankso@81 261 tazpkg repack $PACKAGE; sleep 2\"</action>
pankso@81 262 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
pankso@81 263 </button>
pankso@81 264 <button>
pascal@97 265 <label>Files</label>
pascal@97 266 <input file icon=\"tazpkg\"></input>
pascal@97 267 <action type=\"launch\">LIST_FILES</action>
pascal@97 268 </button>
pascal@97 269 <button>
pankso@81 270 <input file icon=\"gtk-close\"></input>
pankso@81 271 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
pankso@81 272 </button>
pankso@81 273 </hbox>
pankso@81 274
pankso@81 275 </vbox>
pankso@81 276 </window>
pankso@81 277 "
pascal@87 278 export PACKAGE_INFOS
pankso@81 279 else
pascal@187 280 RES=`grep -sh "^$PKG " /var/lib/tazpkg/packages.desc \
pascal@187 281 /var/lib/tazpkg/undigest/*/packages.desc`
pankso@81 282 PACKAGE=`echo "$RES" | cut -d "|" -f 1`
pankso@81 283 VERSION=`echo "$RES" | cut -d "|" -f 2`
pascal@150 284 SHORT_DESC=`echo "$RES" | cut -d "|" -f 3`
pankso@81 285 CATEGORY=`echo "$RES" | cut -d "|" -f 4`
pankso@81 286 WEB_SITE=`echo "$RES" | cut -d "|" -f 5`
pascal@187 287 SIZES=`grep -sh -A 3 "^$(echo $PACKAGE)$" /var/lib/tazpkg/packages.txt \
pascal@187 288 /var/lib/tazpkg/undigest/*/packages.txt | tail -1`
pascal@90 289 PACKAGE_INFOS="
pankso@81 290 <window title=\"Package: $PACKAGE\" icon-name=\"package-x-generic\">
pankso@81 291 <vbox>
pankso@81 292
pankso@81 293 <tree>
pascal@174 294 <width>460</width><height>160</height>
pascal@150 295 <label>$PKG|$SHORT_DESC</label>
pascal@181 296 <variable>FIELD2</variable>
pankso@81 297 <item icon=\"tazpkg\">Name: | $PACKAGE</item>
pankso@81 298 <item icon=\"tazpkg\">Version: | $VERSION</item>
pascal@90 299 <item icon=\"tazpkg\">Category: | $CATEGORY</item>"
pascal@90 300 [ -n "$SIZES" ] && PACKAGE_INFOS="$PACKAGE_INFOS
pascal@90 301 <item icon=\"tazpkg\">Size: | $SIZES</item>"
pascal@90 302 PACKAGE_INFOS="$PACKAGE_INFOS
pankso@81 303 <item icon=\"applications-internet\">Web site: | $WEB_SITE</item>
pascal@181 304 <action>case \$FIELD2 in Web*) firefox $WEB_SITE &;; esac</action>
pankso@81 305 </tree>
pankso@81 306
pascal@130 307 <hbox>"
pascal@201 308 [ ${PACKAGE%%-*} = get ] && PACKAGE_INFOS="$PACKAGE_INFOS
pascal@130 309 <checkbox>
pascal@130 310 <label>Auto exec</label>
pascal@130 311 <variable>AUTO_EXEC</variable>
pascal@130 312 <default>true</default>
pascal@130 313 </checkbox>"
pascal@130 314 PACKAGE_INFOS="$PACKAGE_INFOS
pascal@130 315 <checkbox>
pascal@130 316 <label>Auto install depends</label>
pascal@130 317 <variable>AUTO_DEPENDS</variable>
pascal@130 318 <default>true</default>
pascal@130 319 </checkbox>
pankso@81 320 <button>
pankso@81 321 <label>Get-install</label>
pankso@81 322 <input file icon=\"go-next\"></input>
pankso@81 323 <action>xterm -T \"Install $PACKAGE\" $XTERM_OPTS -e \"\
pascal@208 324 if [ x\$AUTO_DEPENDS != xtrue ]; then script -c \\\"tazpkg get-install $PACKAGE\\\" /var/log/tazpkg-install.log;\
pascal@208 325 else script -c \\\"yes y | tazpkg get-install $PACKAGE\\\" /var/log/tazpkg-install.log; fi; \
pascal@200 326 [ x\${AUTO_EXEC} = xtrue ] && $PACKAGE; \
pascal@130 327 sleep 2\"</action>
pankso@81 328 <action type=\"closewindow\">MIRRORED_PACKAGE_ACTIONS</action>
pankso@81 329 </button>
pankso@81 330 <button>
pankso@81 331 <label>Get</label>
pankso@81 332 <input file icon=\"go-next\"></input>
pankso@81 333 <action>xterm -T \"Get $PACKAGE\" $XTERM_OPTS -e \"\
pankso@81 334 cd /var/cache/tazpkg; tazpkg get $PACKAGE; sleep 2\"</action>
pankso@81 335 <action type=\"closewindow\">MIRRORED_PACKAGE_ACTIONS</action>
pankso@81 336 </button>
pankso@81 337 <button>
pascal@99 338 <label>Files</label>
pascal@99 339 <input file icon=\"tazpkg\"></input>
pascal@99 340 <action type=\"launch\">LIST_FILES_MIRROR</action>
pascal@99 341 </button>
pascal@99 342 <button>
pankso@81 343 <input file icon=\"gtk-close\"></input>
pankso@81 344 <action type=\"closewindow\">MIRRORED_PACKAGE_ACTIONS</action>
pankso@81 345 </button>
pankso@81 346 </hbox>
pankso@81 347
pankso@81 348 </vbox>
pankso@81 349 </window>
pankso@81 350 "
pascal@90 351 export PACKAGE_INFOS
pankso@81 352 fi
pankso@81 353
pankso@81 354 gtkdialog --center --program=PACKAGE_INFOS
pankso@81 355
pankso@81 356 exit 0