# HG changeset patch # User Aleksej Bobylev # Date 1439649668 -10800 # Node ID 4fbdffec7f48ba7183fbb0d1b23aa8f0c530b7be # Parent c45468fb179e1de8834fc81867cbf6cbc93c47f0 Add module "upgrade"; make bullet-proof code to work with "root" ("recharge" and "upgrade" modules); re-make depends/rdepends commands. diff -r c45468fb179e -r 4fbdffec7f48 Makefile --- a/Makefile Sat Aug 15 12:23:33 2015 +0100 +++ b/Makefile Sat Aug 15 17:41:08 2015 +0300 @@ -31,7 +31,7 @@ --package-version="$(VERSION)" -kaction -ktitle -kdie -k_ -k_n -k_p:1,2 \ ./tazpkg \ ./modules/convert ./modules/find-depends ./modules/help ./modules/info \ - ./modules/list ./modules/mkdb ./modules/recharge \ + ./modules/list ./modules/mkdb ./modules/recharge ./modules/upgrade \ ./tazpkg-box ./tazpkg-notify ./tazpanel/pkgs.cgi msgmerge: diff -r c45468fb179e -r 4fbdffec7f48 modules/recharge --- a/modules/recharge Sat Aug 15 12:23:33 2015 +0100 +++ b/modules/recharge Sat Aug 15 17:41:08 2015 +0300 @@ -14,33 +14,49 @@ # Connect function libraries . /lib/libtaz.sh -# Get TazPkg configuration variables -. "$root/etc/slitaz/slitaz.conf" -. "$root/etc/slitaz/tazpkg.conf" -PKGS_DB="$root$PKGS_DB" -# Fallback actions + + + +# Get TazPkg working environment +# ------------------------------ + +[ ! -d "$root/etc/slitaz" ] && mkdir -p "$root/etc/slitaz" +[ ! -e "$root/etc/slitaz/slitaz.conf" ] && cp /etc/slitaz/slitaz.conf "$root/etc/slitaz" +[ ! -e "$root/etc/slitaz/tazpkg.conf" ] && cp /etc/slitaz/tazpkg.conf "$root/etc/slitaz" +[ ! -e "$root/etc/slitaz-release" ] && echo 'cooking' > "$root/etc/slitaz-release" + +# Read configuration +if [ -n "$root" ]; then + # Patch external conf files to correctly handle --root value + slitaz_conf=$(mktemp); cp "$root/etc/slitaz/slitaz.conf" $slitaz_conf + tazpkg_conf=$(mktemp); cp "$root/etc/slitaz/tazpkg.conf" $tazpkg_conf + sed -i "s| /| $root/|g; s|\"/|\"$root/|g" $slitaz_conf $tazpkg_conf + . $slitaz_conf; . $tazpkg_conf; rm $slitaz_conf $tazpkg_conf +else + . /etc/slitaz/slitaz.conf; . /etc/slitaz/tazpkg.conf +fi + +# Silent make missing files mkdir -p "$PKGS_DB" [ ! -e "$PKGS_DB/mirror" ] && echo "$ONLINE_PKGS" > "$PKGS_DB/mirror" + + # Functions # --------- # Download a file from specified mirror -download_from() { - # input: "+" "file_name" - local i - for i in $1; do - case "$i" in - # Mirror URL can have a trailing slash or not. - http://* | https://* | ftp://*) - busybox wget -c -q -T 30 -U $UA ${i%/}/$2 2>/dev/null && break ;; - *) - ln -sf ${i%/}/$2 . && break ;; - esac - done +get_from_mirror() { + case "$mirror" in + http://* | https://* | ftp://*) + busybox wget -c -q -T 30 -U $UA "$mirror$1" 2>/dev/null;; + *) + ln -sf "$mirror$1" .;; + esac + status } @@ -79,7 +95,8 @@ for path in $repo_to_recharge; do [ ! -f $path/mirror ] && continue # skip cd $path - mirror="$(cat mirror)" + # Mirror URL will have a trailing slash + mirror="$(cat mirror)"; mirror="${mirror%/}/" # Repository name if [ "$path" == "$PKGS_DB" ]; then @@ -96,33 +113,32 @@ [ -f ID ] && mv ID ID.bak # Compatibility with "old" ID [ -f IDs ] && mv IDs IDs.bak - download_from "$mirror" IDs + action 'Checking...' + get_from_mirror IDs + [ -e 'IDs' ] && awk '{print $1}' IDs > ID # Compatibility with "old" ID + [ -e 'IDs' ] && _ 'Database timestamp: %s' "$(date -d "@$(awk '{print $2}' IDs)" "+%x %R")" # Check if recharging is needed if [ -f 'IDs' ] && cmp -s IDs IDs.bak; then - action 'Checking...'; status # "Fake" message footer "$(_ 'Repository "%s" is up to date.' "$repo_name")" rm IDs.bak ID.bak continue fi rm IDs.bak ID.bak 2>/dev/null - [ -e 'IDs' ] && _ 'Database timestamp: %s' "$(date -d "@$(awk '{print $2}' IDs)" "+%x %R")" - action 'Creating backup of the last packages list...' for i in packages.desc packages.$SUM packages.txt packages.list \ packages.equiv files.list.lzma extra.list mirrors packages.info; do [ -f "$i" ] && mv -f $i $i.bak 2>/dev/null done - :; status + :; status # Always "[ Done ]" # Download and extract bundle: extra.list, mirrors, files-list.md5, # packages.{info,desc,md5,txt,list,equiv} bundle='bundle.tar.lzma' action 'Getting "%s"...' $bundle - download_from "$mirror" $bundle - status + get_from_mirror $bundle if [ -f "$bundle" ]; then busybox tar -xaf $bundle; rm $bundle else @@ -137,13 +153,11 @@ mv $files_local.bak $files_remote else action 'Getting "%s"...' $files_remote - download_from "$mirror" $files_remote - status + get_from_mirror $files_remote fi else action 'Getting "%s"...' $files_remote - download_from "$mirror" $files_remote - status + get_from_mirror $files_remote fi if [ ! -e "$files_remote" ]; then diff -r c45468fb179e -r 4fbdffec7f48 modules/upgrade --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/modules/upgrade Sat Aug 15 17:41:08 2015 +0300 @@ -0,0 +1,209 @@ +#!/bin/sh +# TazPkg - Tiny autonomous zone packages manager, hg.slitaz.org/tazpkg +# upgrade - TazPkg module +# Check for upgrades and make system up-to-date + + +# Options: + +# Environment variables: +# root Root of the packages DB +# check Only check for upgrades +# install Check and install all upgraded packages + + +# Connect function libraries +. /lib/libtaz.sh + + + + +# Get TazPkg working environment +# ------------------------------ + +[ ! -d "$root/etc/slitaz" ] && mkdir -p "$root/etc/slitaz" +[ ! -e "$root/etc/slitaz/slitaz.conf" ] && cp /etc/slitaz/slitaz.conf "$root/etc/slitaz" +[ ! -e "$root/etc/slitaz/tazpkg.conf" ] && cp /etc/slitaz/tazpkg.conf "$root/etc/slitaz" +[ ! -e "$root/etc/slitaz-release" ] && echo 'cooking' > "$root/etc/slitaz-release" + +# Read configuration +if [ -n "$root" ]; then + # Patch external conf files to correctly handle --root value + slitaz_conf=$(mktemp); cp "$root/etc/slitaz/slitaz.conf" $slitaz_conf + tazpkg_conf=$(mktemp); cp "$root/etc/slitaz/tazpkg.conf" $tazpkg_conf + sed -i "s| /| $root/|g; s|\"/|\"$root/|g" $slitaz_conf $tazpkg_conf + . $slitaz_conf; . $tazpkg_conf; rm $slitaz_conf $tazpkg_conf +else + . /etc/slitaz/slitaz.conf; . /etc/slitaz/tazpkg.conf +fi + + + + +# Functions +# --------- + +# Get repositories priority using $PKGS_DB/priority. +# In this file undigest repos are called by their names and main mirror +# by 'main'. Sort order: priority + +look_for_priority() { + [ -s "$PKGS_DB/priority" ] && priority=$(cat $PKGS_DB/priority) + + for rep in main $(ls $PKGS_DB/undigest 2>/dev/null); do + if [ ! -s "$PKGS_DB/priority" ] || ! grep -q ^$rep$ $PKGS_DB/priority; then + priority=$(echo -e "$priority\n$rep") + fi + done + + priority=$(echo "$priority" | sed '/^$/d' | \ + while read line; do + case $line in + (main) echo $PKGS_DB;; + (*) echo $PKGS_DB/undigest/$line;; + esac + done) +} + + + + +time="$(date +%s)" + +# Recharge packages databases (if necessary) (respects "root" value) +tazpkg recharge >&2 + +echo -n > $UP_LIST +blocked_counter=$(mktemp) +tmp_up_list=$(mktemp) + +look_for_priority +repo_number=1 +for repo in $priority; do + if [ "$repo" == "$PKGS_DB" ]; then + repo_name='Main' + else + repo_name="$(basename "$repo")" + fi + + [ ! -f "$repo/packages.info" ] && continue + { + cat $BLOCKED | awk '{printf "%s\t%s\n", $1, "b"}'; + cat $PKGS_DB/installed.info | awk -F$'\t' '{printf "%s\t%s\t%s\t%s\n", $1, "i", $2, $9}'; + cat $repo/packages.info | awk -F$'\t' '{printf "%s\t%s\t%s\t%s\n", $1, "p", $2, $9}' + } | sort -t$'\t' -k1,1 | awk -F$'\t' \ + -vnewbuild="$(_ 'New build')" -vcolornewbuild="$(emsg '')" \ + -vnewver='→ ' -vcolornewver="$(emsg '')" \ + -vblocked=" ($(_ 'Blocked'))" -vcolorblocked="$(emsg '')" \ + -vcolor0="$(emsg '')" \ + -vreponum=$repo_number -vreponame=$repo_name \ + -vuplist="$UP_LIST" -vblocked_counter="$blocked_counter" \ +'{ + + if ($1 != p) { + if (vi && vp) { + bb = (b=="") ? "i" : "b" + if ("" vi != vp) { # important: compare as strings + startc = (b=="") ? colornewver : colorblocked; + printf "%s\t%s\t%s\t%s\t%s%s%s%s%s\t%s\n", p, vi, reponum, reponame, startc, newver, vp, b, color0, bb; + print p >> uplist; + if (b!="") printf 1 >> blocked_counter; + } else if (mi != mp) { + startc = (b=="") ? colornewbuild : colorblocked; + printf "%s\t%s\t%s\t%s\t%s%s%s%s\t%s\n", p, vi, reponum, reponame, startc, newbuild, b, color0, bb; + print p >> uplist; + if (b!="") printf 1 >> blocked_counter; + } + } + p = $1; b = b1 = b2 = vi = mi = vp = mp = ""; + } + if ($2 == "b") { b = blocked; b1 = bl1; b2 = bl2; } + if ($2 == "i") { vi = $3; mi = $4; } + if ($2 == "p") { vp = $3; mp = $4; } +}' >> $tmp_up_list + + repo_number=$((repo_number + 1)) + +done + +case "$output" in + html) + cat < + + $(_ 'Package')$(_ 'Repository')$(_ 'Version')$(_ 'Status') + + +EOT + sort -t$'\t' -k1,3 $tmp_up_list | awk -F$'\t' '{ + if($4=="Main"){repoicon="slitaz"}else{repoicon="web"} + if($6=="b"){pkgicon="pkgib"}else{pkgicon="pkgi"} + + printf "", $1; + printf "%s", pkgicon, $1, $1; + printf "%s", repoicon, $4; + printf "%s", $2; + printf "%s\n", $5; + }' + echo '' ;; + *) + emsg "$(_ 'Package')$(_ 'Repository')$(_ 'Version')$(_ 'Status')<->" + sort -t$'\t' -k1,3 $tmp_up_list | awk -F$'\t' \ + '{printf "%-24s %-11s %-10s %s\n", $1, $4, $2, $5}';; +esac + +sed -i /^$/d $UP_LIST +upnb=$(wc -l < $UP_LIST) +pkgs=$(wc -l < $PKGS_DB/installed.info) +time=$(($(date +%s) - $time)) +if [ "$upnb" -eq 0 ]; then + install="n" + _ 'System is up-to-date...' +fi + +if [ "$upnb" -ne 0 ]; then + blocked_count="$(wc -m < $blocked_counter)" + + blocked="$(_p \ + '%s blocked' \ + '%s blocked' $blocked_count \ + $blocked_count)" + + footer "$(_p \ + 'You have %s available upgrade (%s)' \ + 'You have %s available upgrades (%s)' $upnb \ + $upnb "$blocked")" +fi +emsg "$(_p \ + '%s installed package scanned in %ds' \ + '%s installed packages scanned in %ds' $pkgs \ + "$pkgs" $time)" + + +# Clean +rm $blocked_counter $tmp_up_list + +# Pkgs to upgrade ? Skip, let install them all, or ask user +[ -n "$check" ] && exit 0 +if [ "$upnb" -gt 0 ]; then + if [ -n "$install" ]; then + answer=0 + else + confirm "$(_ 'Do you wish to install them now? (y/N)')" + answer=$? + fi + case "$answer" in + 0) + for pkg in $(cat $UP_LIST); do + echo 'y' | tazpkg -gi "$pkg" --forced #--reason="upgrade" + done + # List is generated each time and must be cleaned so + # tazpkg-notify doesn't find upgrades anymore. + rm $UP_LIST; touch $UP_LIST ;; + *) + _ 'Leaving without any upgrades installed.' + newline + exit 0 ;; + esac +fi +newline diff -r c45468fb179e -r 4fbdffec7f48 po/fr.po --- a/po/fr.po Sat Aug 15 12:23:33 2015 +0100 +++ b/po/fr.po Sat Aug 15 17:41:08 2015 +0300 @@ -2025,13 +2025,6 @@ #~ msgid "Web" #~ msgstr "Internet" -#~ msgid "all" -#~ msgstr "Toutes" - -#, fuzzy -#~ msgid "extra" -#~ msgstr "supplémentaire" - #~ msgid "Repositories" #~ msgstr "Dépôts" diff -r c45468fb179e -r 4fbdffec7f48 po/ru.po --- a/po/ru.po Sat Aug 15 12:23:33 2015 +0100 +++ b/po/ru.po Sat Aug 15 17:41:08 2015 +0300 @@ -2043,6 +2043,9 @@ msgid "Packages suggested by %s" msgstr "Пакеты, предложенные пакетом %s" +msgid "State" +msgstr "Состояние" + #~ msgid "Unknown option \"%s\"." #~ msgstr "Неизвестный параметр «%s»." diff -r c45468fb179e -r 4fbdffec7f48 tazpkg --- a/tazpkg Sat Aug 15 12:23:33 2015 +0100 +++ b/tazpkg Sat Aug 15 17:41:08 2015 +0300 @@ -78,14 +78,14 @@ # Path to tazpkg used dir and configuration files MIRROR="$PKGS_DB/mirror" -BLOCKED="$PKGS_DB/blocked-packages.list" -UP_LIST="$PKGS_DB/packages.up" +export BLOCKED="$PKGS_DB/blocked-packages.list" +export UP_LIST="$PKGS_DB/packages.up" DEFAULT_MIRROR="$ONLINE_PKGS" # TazPkg version VERSION=$(awk -F$'\t' '$1=="tazpkg"{print $2}' $PKGS_DB/installed.info) # User Agent -UA="TazPkg-$VERSION" +export UA="TazPkg-$VERSION" #title 'DEBUG'; emsg "COMMAND=\"$COMMAND\"\nPACKAGE=\"$PACKAGE\"\nPACKAGE_FILE=\"$PACKAGE_FILE\"\nTARGET_DIR=\"$TARGET_DIR\"\nTOP_DIR=\"$TOP_DIR\"\nTMP_DIR=\"$TMP_DIR\"\nINSTALL_LIST=\"$INSTALL_LIST\"\nSAVE_CACHE_DIR=\"$SAVE_CACHE_DIR\"\nMIRROR=\"$MIRROR\"\nBLOCKED=\"$BLOCKED\"\nUP_LIST=\"$UP_LIST\"\nDEFAULT_MIRROR=\"$DEFAULT_MIRROR\"\nVERSION=\"$VERSION\""; footer @@ -1248,11 +1248,18 @@ *\ $i\ *) continue;; esac ALL_DEPS="$ALL_DEPS $i" - [ -n "$2" ] && echo "$2$i ($(fgrep -A 3 $i $PKGS_DB/packages.txt | \ - tail -1 | sed 's/.*(\([^ ]*\).*/\1/'))" - [ -f $i/receipt ] || continue - DEPENDS="" - . $i/receipt + + if [ -z "$mark" ]; then + ii="$i" + else + ii="- $i"; grep -q ^$i$'\t' "$PKGS_DB/installed.info" && ii="+ $i" + fi + [ -n "$2" ] && echo "$2$ii ($(awk -F$'\t' -vp="$i" ' + $1==p{split($7,s," ");print s[2]}' "$PKGS_DB/packages.info"))" + + DEPENDS="$(awk -F$'\t' -vp="$i" '$1==p{print $8 " "}' "$PKGS_DB/installed.info")" + [ -z "$DEPENDS" ] && \ + DEPENDS="$(awk -F$'\t' -vp="$i" '$1==p{print $8 " "}' "$PKGS_DB/packages.info")" [ -n "$DEPENDS" ] && dep_scan "$DEPENDS" "$2 " done } @@ -1263,36 +1270,40 @@ rdep_scan() { SEARCH="$1" - for i in * ; do - DEPENDS='' - . $i/receipt - echo "$i $(echo $DEPENDS)" - done | busybox awk -v search=$SEARCH ' -function show_deps(deps, all_deps, pkg, space) + DB='installed'; [ -n "$all" ] && DB='packages' + + awk -F$'\t' '$8 {print $1 " " $8}' "$PKGS_DB/$DB.info" | \ + busybox awk -F' ' -v search="$SEARCH" ' +function show_deps(pkg, space, i, n, mydeps) { + if (processed[pkg]) return + processed[pkg] = 1; + + if (space) printf "%s %s\n", space, pkg; + + n = split(deps[pkg], mydeps, " "); + for (i = 1; i <= n; i++) + show_deps(mydeps[i], "==" space); +} + { - if (all_deps[pkg] == 1) return - all_deps[pkg] = 1 - if (space != "") printf "%s %s\n",space,pkg - for (i = 1, n = split(deps[pkg], mydeps, " "); i <= n; i++) { - show_deps(deps, all_deps, mydeps[i],"==" space) - } + for (i = 2; i <= NF; i++) + deps[$i] = deps[$i] " " $1; } -{ - all_deps[$1] = 0 - for (i = 2; i <= NF; i++) - deps[$i] = deps[$i] " " $1 -} - END { - show_deps(deps, all_deps, search, "") + show_deps(search, "") } ' | while read spc pkg; do + if [ -z "$mark" ]; then + pkgi="$pkg" + else + pkgi="- $pkg"; grep -q ^$pkg$'\t' "$PKGS_DB/installed.info" && pkgi="+ $pkg" + fi + echo -n $spc | sed 's/=/ /g' - echo -n $pkg - echo -n ' (' - fgrep -A 3 $pkg $PKGS_DB/packages.txt | tail -1 | \ - sed 's/.*(\([^ ]*\).*/\1)/' + + echo "$pkgi ($(awk -F$'\t' -vp="$pkg" '$1==p{split($7,s," ");print s[2]}' \ + "$PKGS_DB/$DB.info"))" done } @@ -2043,7 +2054,6 @@ # must have only the chosen main mirror. # check_root $@ - export UA @@MODULES@@/recharge $2 ;; @@ -2055,7 +2065,7 @@ up|upgrade) - check_root + check_root $@ # # This is the new way to upgrade packages making 'upgrade' and # upgradeable out-of-date. This new way is much, much more faster! @@ -2064,151 +2074,12 @@ # for opt in $@; do case "$opt" in - -i) install='yes';; - -c) check='yes';; + -i) export install='yes';; + -c) export check='yes';; esac done - time="$(date +%s)" - - # Recharge packages databases (if necessary) - tazpkg recharge >/dev/null - - cd $INSTALLED - echo -n > $UP_LIST - blocked_counter=$(mktemp) - tmp_up_list=$(mktemp) - - look_for_priority - repo_number=1 - for repo in $priority; do - if [ "$repo" == "$PKGS_DB" ]; then - repo_name='Main' - else - repo_name="$(basename "$repo")" - fi - - [ ! -f "$repo/packages.info" ] && continue - { - cat $PKGS_DB/blocked-packages.list | awk '{printf "%s\t%s\n", $1, "b"}'; - cat $PKGS_DB/installed.info | awk -F$'\t' '{printf "%s\t%s\t%s\t%s\n", $1, "i", $2, $9}'; - cat $repo/packages.info | awk -F$'\t' '{printf "%s\t%s\t%s\t%s\n", $1, "p", $2, $9}' - } | sort -t$'\t' -k1,1 | awk -F$'\t' \ - -vnewbuild="$(_ 'New build')" -vcolornewbuild="$(emsg '')" \ - -vnewver='→ ' -vcolornewver="$(emsg '')" \ - -vblocked=" ($(_ 'Blocked'))" -vcolorblocked="$(emsg '')" \ - -vcolor0="$(emsg '')" \ - -vreponum=$repo_number -vreponame=$repo_name \ - -vuplist="$UP_LIST" -vblocked_counter="$blocked_counter" \ -'{ - - if ($1 != p) { - if (vi && vp) { - bb = (b=="") ? "i" : "b" - if ("" vi != vp) { # important: compare as strings - startc = (b=="") ? colornewver : colorblocked; - printf "%s\t%s\t%s\t%s\t%s%s%s%s%s\t%s\n", p, vi, reponum, reponame, startc, newver, vp, b, color0, bb; - print p >> uplist; - if (b!="") printf 1 >> blocked_counter; - } else if (mi != mp) { - startc = (b=="") ? colornewbuild : colorblocked; - printf "%s\t%s\t%s\t%s\t%s%s%s%s\t%s\n", p, vi, reponum, reponame, startc, newbuild, b, color0, bb; - print p >> uplist; - if (b!="") printf 1 >> blocked_counter; - } - } - p = $1; b = b1 = b2 = vi = mi = vp = mp = ""; - } - if ($2 == "b") { b = blocked; b1 = bl1; b2 = bl2; } - if ($2 == "i") { vi = $3; mi = $4; } - if ($2 == "p") { vp = $3; mp = $4; } -}' >> $tmp_up_list - - repo_number=$((repo_number + 1)) - - done - - case "$output" in - html) - cat < - - $(_ 'Package')$(_ 'Repository')$(_ 'Version')$(_ 'Status') - - -EOT - sort -t$'\t' -k1,3 $tmp_up_list | awk -F$'\t' '{ - if($4=="Main"){repoicon="slitaz"}else{repoicon="web"} - if($6=="b"){pkgicon="pkgib"}else{pkgicon="pkgi"} - - printf "", $1; - printf "%s", pkgicon, $1, $1; - printf "%s", repoicon, $4; - printf "%s", $2; - printf "%s\n", $5; - }' - echo '' ;; - *) - emsg "$(_ 'Package')$(_ 'Repository')$(_ 'Version')$(_ 'Status')<->" - sort -t$'\t' -k1,3 $tmp_up_list | awk -F$'\t' \ - '{printf "%-24s %-11s %-10s %s\n", $1, $4, $2, $5}';; - esac - - sed -i /^$/d $UP_LIST - upnb=$(wc -l < $UP_LIST) - pkgs=$(ls | wc -l) - time=$(($(date +%s) - $time)) - if [ "$upnb" -eq 0 ]; then - install="n" - _ 'System is up-to-date...' - fi - - if [ "$upnb" -ne 0 ]; then - blocked_count="$(wc -m < $blocked_counter)" - - blocked="$(_p \ - '%s blocked' \ - '%s blocked' $blocked_count \ - $blocked_count)" - - footer "$(_p \ - 'You have %s available upgrade (%s)' \ - 'You have %s available upgrades (%s)' $upnb \ - $upnb "$blocked")" - fi - emsg "$(_p \ - '%s installed package scanned in %ds' \ - '%s installed packages scanned in %ds' $pkgs \ - "$pkgs" $time)" - - - # Clean - rm $blocked_counter $tmp_up_list - - # Pkgs to upgrade ? Skip, let install them all or ask user - [ -n "$check" ] && exit 0 - if [ "$upnb" -gt 0 ]; then - if [ -n "$install" ]; then - answer=0 - else - confirm "$(_ 'Do you wish to install them now? (y/N)')" - answer=$? - fi - case "$answer" in - 0) - for pkg in $(cat $UP_LIST); do - echo 'y' | tazpkg -gi "$pkg" --forced #--reason="upgrade" - done - # List is generated each time and must be cleaned so - # tazpkg-notify doesn't find upgrades anymore. - rm $UP_LIST; touch $UP_LIST ;; - *) - _ 'Leaving without any upgrades installed.' - newline - exit 0 ;; - esac - fi - newline + @@MODULES@@/upgrade ;; @@ -2694,20 +2565,34 @@ depends) # Display dependencies tree - cd $INSTALLED - ALL_DEPS='' - if [ -f "$2/receipt" ]; then - dep_scan $2 '' - fi ;; + unset ALL_DEPS + mkdir $TMP_DIR + dep_scan $2 '' | tee "$TMP_DIR/depends" + if [ -n "$total" ]; then + separator + NUM="$(wc -l < "$TMP_DIR/depends")" + TOTAL="$(sed 's|.*(\([^)]*\))|\1|' "$TMP_DIR/depends" | hrsum)" + _p 'Total: %s package (%s)' 'Total: %s packages (%s)' "$NUM" \ + "$NUM" "$TOTAL" + newline + + if [ -n "$mark" ]; then + NUM="$(grep '^ *-' "$TMP_DIR/depends" | wc -l)" + TOTAL="$(grep '^ *-' "$TMP_DIR/depends" | sed 's|.*(\([^)]*\))|\1|' | hrsum)" + _p 'To install: %s package (%s)' 'To install: %s packages (%s)' "$NUM" \ + "$NUM" "$TOTAL" + newline + fi + fi + rm -rf "$TMP_DIR" + ;; rdepends) # Display reverse dependencies tree cd $INSTALLED - ALL_DEPS='' - if [ -f "$2/receipt" ]; then - rdep_scan $2 - fi + unset ALL_DEPS + rdep_scan "$2" ;;