tazpkg view lib/tazpkgbox/package_infos @ rev 320

Add upgrade button
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue Feb 23 00:09:30 2010 +0100 (2010-02-23)
parents 9b57d55f7f65
children 50b4af64dff1
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 [ -n "$UPGRADE" ] && PACKAGE_INFOS="$PACKAGE_INFOS
255 <button>
256 <label>Upgrade</label>
257 <input file icon=\"go-next\"></input>
258 <action>xterm -T \"Install $PKG\" $XTERM_OPTS -e \"\
259 tazpkg get-install $PKG --forced ; sleep 5\"</action>
260 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
261 </button>"
262 grep -q post_install /var/lib/tazpkg/installed/$PKG/receipt && PACKAGE_INFOS="$PACKAGE_INFOS
263 <button>
264 <label>Reconfigure</label>
265 <input file icon=\"reload\"></input>
266 <action>xterm -T \"Reconfigure $PACKAGE\" $XTERM_OPTS -e \"\
267 tazpkg reconfigure $PACKAGE; sleep 2\"</action>
268 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
269 </button>"
270 if grep -qs ^$PKG$ /var/lib/tazpkg/blocked-packages.list; then
271 PACKAGE_INFOS="$PACKAGE_INFOS
272 <button>
273 <label>Unblock</label>
274 <input file icon=\"up\"></input>
275 <action>xterm -T \"Unblock $PACKAGE\" $XTERM_OPTS -e \"\
276 tazpkg unblock $PACKAGE; sleep 2\"</action>
277 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
278 </button>"
279 else
280 PACKAGE_INFOS="$PACKAGE_INFOS
281 <button>
282 <label>Block</label>
283 <input file icon=\"down\"></input>
284 <action>xterm -T \"Block $PACKAGE\" $XTERM_OPTS -e \"\
285 tazpkg block $PACKAGE; sleep 2\"</action>
286 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
287 </button>"
288 fi
289 if [ ! -s /var/lib/tazpkg/installed/$PKG/modifiers ]; then
290 PACKAGE_INFOS="$PACKAGE_INFOS
291 <button>
292 <label>Repack</label>
293 <input file icon=\"edit-redo\"></input>
294 <action>xterm -T \"Repack $PACKAGE\" $XTERM_OPTS -e \"\
295 cd /var/cache/tazpkg; \
296 tazpkg repack $PACKAGE; sleep 2\"</action>
297 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
298 </button>
299 "
300 else
301 PACKAGE_INFOS="$PACKAGE_INFOS
302 <button>
303 <label>Re-install</label>
304 <input file icon=\"edit-redo\"></input>
305 <action>xterm -T \"Re-install $PACKAGE\" $XTERM_OPTS -e \"\
306 tazpkg get-install $PACKAGE --forced; sleep 2\"</action>
307 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
308 </button>
309 "
310 fi
311 PACKAGE_INFOS="$PACKAGE_INFOS
312 <button>
313 <label>Remove</label>
314 <input file icon=\"edit-delete\"></input>
315 <action>xterm -T \"Remove $PACKAGE\" $XTERM_OPTS -e \"\
316 tazpkg remove $PACKAGE; sleep 2\"</action>
317 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
318 </button>
319 <button>
320 <label>Files</label>
321 <input file icon=\"tazpkg\"></input>
322 <action type=\"launch\">LIST_FILES</action>
323 </button>
324 <button>
325 <input file icon=\"gtk-close\"></input>
326 <action type=\"closewindow\">INSTALLED_PACKAGE_ACTIONS</action>
327 </button>
328 </hbox>
330 </vbox>
331 </window>
332 "
333 export PACKAGE_INFOS
334 else
335 RES=`grep -sh "^$PKG " /var/lib/tazpkg/packages.desc \
336 /var/lib/tazpkg/undigest/*/packages.desc`
337 PACKAGE=`echo "$RES" | cut -d "|" -f 1`
338 VERSION=`echo "$RES" | cut -d "|" -f 2`
339 SHORT_DESC=`echo "$RES" | cut -d "|" -f 3`
340 CATEGORY=`echo "$RES" | cut -d "|" -f 4`
341 WEB_SITE=`echo "$RES" | cut -d "|" -f 5`
342 SIZES=`grep -sh -A 3 "^$(echo $PACKAGE)$" /var/lib/tazpkg/packages.txt \
343 /var/lib/tazpkg/undigest/*/packages.txt | tail -1`
344 DEPENDS=""
345 SUGGESTED=""
346 MAINTAINER=""
347 BUGS=""
348 HANDBOOK_URL=""
349 TAGS=""
350 CONFIG_FILES=""
351 height=160
352 if [ -s /home/slitaz/wok/$PKG/receipt ]; then
353 . /home/slitaz/wok/$PKG/receipt
354 height=200
355 fi
356 PACKAGE_INFOS="
357 <window title=\"Package: $PACKAGE\" icon-name=\"package-x-generic\">
358 <vbox>
360 <tree>
361 <width>460</width><height>$height</height>
362 <label>$PKG|$SHORT_DESC</label>
363 <variable>FIELD2</variable>
364 <item icon=\"tazpkg\">Version: | $VERSION</item>
365 <item icon=\"tazpkg\">Category: | $CATEGORY</item>"
366 [ -n "$DEPENDS" ] && PACKAGE_INFOS="$PACKAGE_INFOS
367 <item icon=\"tazpkg\">Depends: | $(echo $DEPENDS)</item>"
368 [ -n "$SUGGESTED" ] && PACKAGE_INFOS="$PACKAGE_INFOS
369 <item icon=\"tazpkg\">Suggested: | $(echo $SUGGESTED)</item>"
370 [ -n "$SIZES" ] && PACKAGE_INFOS="$PACKAGE_INFOS
371 <item icon=\"tazpkg\">Size: | $SIZES</item>"
372 [ -n "$MAINTAINER" ] && PACKAGE_INFOS="$PACKAGE_INFOS
373 <item icon=\"system-users\">Maintainer: | $MAINTAINER</item>"
374 [ -n "$BUGS" ] && PACKAGE_INFOS="$PACKAGE_INFOS
375 <item icon=\"important\">Bugs: | $BUGS</item>"
376 [ -n "$HANDBOOK_URL" ] && PACKAGE_INFOS="$PACKAGE_INFOS
377 <item icon=\"ascii\">Handbook: | $HANDBOOK_URL</item>"
378 [ -n "$TAGS" ] && PACKAGE_INFOS="$PACKAGE_INFOS
379 <item icon=\"tazpkg\">Tags: | $TAGS</item>"
380 [ -n "$CONFIG_FILES" ] && PACKAGE_INFOS="$PACKAGE_INFOS
381 <item icon=\"tazpkg\">Config files: | $CONFIG_FILES</item>"
382 PACKAGE_INFOS="$PACKAGE_INFOS
383 <item icon=\"applications-internet\">Web site: | $WEB_SITE</item>
384 <action>case \$FIELD2 in Web*) firefox $WEB_SITE &;; esac</action>
385 </tree>
387 <hbox>"
388 [ ${PACKAGE%%-*} = get ] && PACKAGE_INFOS="$PACKAGE_INFOS
389 <checkbox>
390 <label>Auto exec</label>
391 <variable>AUTO_EXEC</variable>
392 <default>true</default>
393 </checkbox>"
394 PACKAGE_INFOS="$PACKAGE_INFOS
395 <checkbox>
396 <label>Auto install depends</label>
397 <variable>AUTO_DEPENDS</variable>
398 <default>true</default>
399 </checkbox>
400 <button>
401 <label>Get-install</label>
402 <input file icon=\"go-next\"></input>
403 <action>xterm -T \"Install $PACKAGE\" $XTERM_OPTS -e \"\
404 if [ x\$AUTO_DEPENDS != xtrue ]; then script -c \\\"tazpkg get-install $PACKAGE\\\" /var/log/tazpkg-install.log;\
405 else script -c \\\"yes y | tazpkg get-install $PACKAGE\\\" /var/log/tazpkg-install.log; fi; \
406 [ x\${AUTO_EXEC} = xtrue ] && $PACKAGE; \
407 sleep 2\"</action>
408 <action type=\"closewindow\">MIRRORED_PACKAGE_ACTIONS</action>
409 </button>
410 <button>
411 <label>Get</label>
412 <input file icon=\"go-next\"></input>
413 <action>xterm -T \"Get $PACKAGE\" $XTERM_OPTS -e \"\
414 cd /var/cache/tazpkg; tazpkg get $PACKAGE; sleep 2\"</action>
415 <action type=\"closewindow\">MIRRORED_PACKAGE_ACTIONS</action>
416 </button>
417 <button>
418 <label>Files</label>
419 <input file icon=\"tazpkg\"></input>
420 <action type=\"launch\">LIST_FILES_MIRROR</action>
421 </button>
422 <button>
423 <input file icon=\"gtk-close\"></input>
424 <action type=\"closewindow\">MIRRORED_PACKAGE_ACTIONS</action>
425 </button>
426 </hbox>
428 </vbox>
429 </window>
430 "
431 export PACKAGE_INFOS
432 fi
434 gtkdialog --center --program=PACKAGE_INFOS
436 exit 0