tazpkg view lib/tazpkgbox/package_infos @ rev 342

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