tazpkg annotate modules/upgrade @ rev 931
Add module/bb: manage Busybox applets.
Remove function definitions that are now in the /lib/libtaz.sh (die, im).
Remove function definitions that are now in the /lib/libtaz.sh (die, im).
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Sun Jan 08 11:24:12 2017 +0200 (2017-01-08) |
parents | d6cbd0c5f273 |
children | 50421cb50644 |
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 |
al@836 | 138 # Pkgs to upgrade ? Skip, let 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 |