tazpkg view lib/tazpkgbox/package_infos @ rev 287

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