tazpkg annotate lib/tazpkgbox/package_infos @ rev 187

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