rev |
line source |
al@836
|
1 #!/bin/sh
|
al@836
|
2 # TazPkg - Tiny autonomous zone packages manager, hg.slitaz.org/tazpkg
|
al@836
|
3 # upgrade - TazPkg module
|
al@836
|
4 # Check for upgrades and make system up-to-date
|
al@836
|
5
|
al@836
|
6
|
al@836
|
7 # Environment variables:
|
al@836
|
8 # root Root of the packages DB
|
al@836
|
9 # check Only check for upgrades
|
al@836
|
10 # install Check and install all upgraded packages
|
al@836
|
11
|
al@836
|
12
|
al@836
|
13 # Connect function libraries
|
al@836
|
14 . /lib/libtaz.sh
|
al@836
|
15
|
al@836
|
16 # Get TazPkg working environment
|
al@840
|
17 . @@MODULES@@/getenv
|
al@836
|
18
|
al@836
|
19
|
al@836
|
20 time="$(date +%s)"
|
al@836
|
21
|
al@840
|
22 # Recharge packages databases (if necessary) (respects already exported "root" value)
|
al@836
|
23 tazpkg recharge >&2
|
al@836
|
24
|
al@840
|
25 echo -n > "$UP_LIST"
|
al@836
|
26 blocked_counter=$(mktemp)
|
al@836
|
27 tmp_up_list=$(mktemp)
|
al@836
|
28
|
al@836
|
29 repo_number=1
|
al@844
|
30 for repo in $PRIORITY; do
|
al@836
|
31 if [ "$repo" == "$PKGS_DB" ]; then
|
al@836
|
32 repo_name='Main'
|
al@836
|
33 else
|
al@836
|
34 repo_name="$(basename "$repo")"
|
al@836
|
35 fi
|
al@836
|
36
|
al@836
|
37 [ ! -f "$repo/packages.info" ] && continue
|
al@836
|
38 {
|
al@840
|
39 cat "$BLOCKED" | awk '{printf "%s\t%s\n", $1, "b"}'
|
al@840
|
40 cat "$PKGS_DB/installed.info" | awk -F$'\t' '{printf "%s\t%s\t%s\t%s\n", $1, "i", $2, $9}'
|
al@840
|
41 cat "$repo/packages.info" | awk -F$'\t' '{printf "%s\t%s\t%s\t%s\n", $1, "p", $2, $9}'
|
al@836
|
42 } | sort -t$'\t' -k1,1 | awk -F$'\t' \
|
al@836
|
43 -vnewbuild="$(_ 'New build')" -vcolornewbuild="$(emsg '<c 34>')" \
|
al@836
|
44 -vnewver='→ ' -vcolornewver="$(emsg '<c 32>')" \
|
al@836
|
45 -vblocked=" ($(_ 'Blocked'))" -vcolorblocked="$(emsg '<c 31>')" \
|
al@836
|
46 -vcolor0="$(emsg '</c>')" \
|
al@840
|
47 -vreponum="$repo_number" -vreponame="$repo_name" \
|
al@836
|
48 -vuplist="$UP_LIST" -vblocked_counter="$blocked_counter" \
|
al@836
|
49 '{
|
al@836
|
50
|
al@836
|
51 if ($1 != p) {
|
al@836
|
52 if (vi && vp) {
|
al@836
|
53 bb = (b=="") ? "i" : "b"
|
al@836
|
54 if ("" vi != vp) { # important: compare as strings
|
al@836
|
55 startc = (b=="") ? colornewver : colorblocked;
|
al@840
|
56 printf "%s\t%s\t%s\t%s\t", p, vi, reponum, reponame;
|
al@840
|
57 printf "%s%s%s%s%s\t%s\n", startc, newver, vp, b, color0, bb;
|
al@840
|
58 if (b=="")
|
al@840
|
59 print p >> uplist;
|
al@840
|
60 else
|
al@840
|
61 printf 1 >> blocked_counter;
|
al@836
|
62 } else if (mi != mp) {
|
al@836
|
63 startc = (b=="") ? colornewbuild : colorblocked;
|
al@840
|
64 printf "%s\t%s\t%s\t%s\t", p, vi, reponum, reponame;
|
al@840
|
65 printf "%s%s%s%s\t%s\n", startc, newbuild, b, color0, bb;
|
al@840
|
66 if (b=="")
|
al@840
|
67 print p >> uplist;
|
al@840
|
68 else
|
al@840
|
69 printf 1 >> blocked_counter;
|
al@836
|
70 }
|
al@836
|
71 }
|
al@836
|
72 p = $1; b = b1 = b2 = vi = mi = vp = mp = "";
|
al@836
|
73 }
|
al@836
|
74 if ($2 == "b") { b = blocked; b1 = bl1; b2 = bl2; }
|
al@836
|
75 if ($2 == "i") { vi = $3; mi = $4; }
|
al@836
|
76 if ($2 == "p") { vp = $3; mp = $4; }
|
al@840
|
77 }' >> "$tmp_up_list"
|
al@836
|
78
|
al@836
|
79 repo_number=$((repo_number + 1))
|
al@836
|
80
|
al@836
|
81 done
|
al@836
|
82
|
al@836
|
83 case "$output" in
|
al@836
|
84 html)
|
al@836
|
85 cat <<EOT
|
al@836
|
86 <table class="wide zebra">
|
al@836
|
87 <thead>
|
al@836
|
88 <tr><td>$(_ 'Package')</td><td>$(_ 'Repository')</td><td>$(_ 'Version')</td><td>$(_ 'Status')</td></tr>
|
al@836
|
89 </thead>
|
al@836
|
90 <tbody>
|
al@836
|
91 EOT
|
al@840
|
92 sort -t$'\t' -k1,3 "$tmp_up_list" | awk -F$'\t' '{
|
al@886
|
93 if($4=="Main"){repo_icon="@slitaz@"}else{repo_icon="@web@"}
|
al@886
|
94 if($6=="b"){data_icon="@pkgib@"}else{data_icon="@pkgi@"}
|
al@836
|
95
|
al@836
|
96 printf "<tr><td><input type=\"checkbox\" name=\"pkg\" value=\"%s\"/>", $1;
|
al@840
|
97 printf "<a data-icon=\"%s\" href=\"?info=%s\">%s</a></td>", data_icon, $1, $1;
|
al@840
|
98 printf "<td><span data-icon=\"%s\">%s</span></td>", repo_icon, $4;
|
al@836
|
99 printf "<td>%s</td>", $2;
|
al@836
|
100 printf "<td>%s</td></tr>\n", $5;
|
al@836
|
101 }'
|
al@836
|
102 echo '</tbody></table>' ;;
|
al@836
|
103 *)
|
al@836
|
104 emsg "<n>$(_ 'Package')<i 26>$(_ 'Repository')<i 38>$(_ 'Version')<i 49>$(_ 'Status')<->"
|
al@840
|
105 sort -t$'\t' -k1,3 "$tmp_up_list" | awk -F$'\t' \
|
al@836
|
106 '{printf "%-24s %-11s %-10s %s\n", $1, $4, $2, $5}';;
|
al@836
|
107 esac
|
al@836
|
108
|
al@840
|
109 sed -i /^$/d "$UP_LIST"
|
al@840
|
110 upnb=$(wc -l < "$UP_LIST")
|
al@840
|
111 pkgs=$(wc -l < "$PKGS_DB/installed.info")
|
al@836
|
112 time=$(($(date +%s) - $time))
|
al@836
|
113 if [ "$upnb" -eq 0 ]; then
|
al@836
|
114 install="n"
|
al@836
|
115 _ 'System is up-to-date...'
|
al@840
|
116 else
|
al@840
|
117 blocked_count=$(wc -m < "$blocked_counter")
|
al@836
|
118
|
al@840
|
119 blocked=$(_p \
|
al@836
|
120 '%s blocked' \
|
al@840
|
121 '%s blocked' "$blocked_count" \
|
al@840
|
122 "$blocked_count")
|
al@836
|
123
|
al@836
|
124 footer "$(_p \
|
al@836
|
125 'You have %s available upgrade (%s)' \
|
al@840
|
126 'You have %s available upgrades (%s)' "$upnb" \
|
al@840
|
127 "$upnb" "$blocked")"
|
al@836
|
128 fi
|
al@836
|
129 emsg "$(_p \
|
al@836
|
130 '%s installed package scanned in %ds' \
|
al@840
|
131 '%s installed packages scanned in %ds' "$pkgs" \
|
al@840
|
132 "<c 32>$pkgs</c>" "$time")"
|
al@836
|
133
|
al@836
|
134
|
al@836
|
135 # Clean
|
al@840
|
136 rm "$blocked_counter" "$tmp_up_list"
|
al@836
|
137
|
paul@943
|
138 # Pkgs to upgrade ? Skip, lets install them all, or ask user
|
al@836
|
139 [ -n "$check" ] && exit 0
|
al@840
|
140
|
al@836
|
141 if [ "$upnb" -gt 0 ]; then
|
al@836
|
142 if [ -n "$install" ]; then
|
al@836
|
143 answer=0
|
al@836
|
144 else
|
al@836
|
145 confirm "$(_ 'Do you wish to install them now? (y/N)')"
|
al@836
|
146 answer=$?
|
al@836
|
147 fi
|
al@836
|
148 case "$answer" in
|
al@836
|
149 0)
|
al@840
|
150 for pkg in $(cat "$UP_LIST"); do
|
al@836
|
151 echo 'y' | tazpkg -gi "$pkg" --forced #--reason="upgrade"
|
al@836
|
152 done
|
al@836
|
153 # List is generated each time and must be cleaned so
|
al@836
|
154 # tazpkg-notify doesn't find upgrades anymore.
|
al@840
|
155 rm "$UP_LIST"; touch "$UP_LIST" ;;
|
al@836
|
156 *)
|
al@836
|
157 _ 'Leaving without any upgrades installed.'
|
al@836
|
158 newline
|
al@836
|
159 exit 0 ;;
|
al@836
|
160 esac
|
al@836
|
161 fi
|
al@836
|
162 newline
|