tazpkg annotate lib/tazpkgbox/package_infos @ rev 209

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