tazpkg annotate modules/upgrade @ rev 972

Remove ashism ==
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue Feb 26 08:21:22 2019 +0100 (2019-02-26)
parents 50421cb50644
children
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
pascal@972 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