tazpkg annotate lib/tazpkgbox/package_infos @ rev 210

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