summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThierry Vignaud <tv@mageia.org>2013-02-09 12:20:39 +0000
committerThierry Vignaud <tv@mageia.org>2013-02-09 12:20:39 +0000
commit9eca2b973e99171862d18c8acf469a620e435924 (patch)
treed0d0ed6c5cba2ae6fed7df7e58fa5cb8ff7106b5
parent2bc79300c87a438c07212112afc08fc5aa4fad89 (diff)
downloadurpmi-9eca2b973e99171862d18c8acf469a620e435924.tar
urpmi-9eca2b973e99171862d18c8acf469a620e435924.tar.gz
urpmi-9eca2b973e99171862d18c8acf469a620e435924.tar.bz2
urpmi-9eca2b973e99171862d18c8acf469a620e435924.tar.xz
urpmi-9eca2b973e99171862d18c8acf469a620e435924.zip
(install_logger) keep a separate counter for erasures
only initialize $total_pkg: - when starting a new transaction - or on first erasure in transaction (_compute_pkg_total) kill it (no more needed) adjust testsuite accordingly
-rw-r--r--NEWS2
-rw-r--r--t/superuser--obsolete-and-conflict.t6
-rw-r--r--urpm/install.pm12
-rw-r--r--urpm/main_loop.pm31
4 files changed, 14 insertions, 37 deletions
diff --git a/NEWS b/NEWS
index b1057d88..e8d3cf99 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,5 @@
+- keep a separate counter for erasures
+
Version 7.17 - 5 February 2013, by Thierry Vignaud
- fix counting for erasures
diff --git a/t/superuser--obsolete-and-conflict.t b/t/superuser--obsolete-and-conflict.t
index be3af8be..5284618d 100644
--- a/t/superuser--obsolete-and-conflict.t
+++ b/t/superuser--obsolete-and-conflict.t
@@ -31,10 +31,10 @@ sub test1 {
my $arch = urpm::cfg::get_arch();
test_urpmi("b c", sprintf(<<'EOF', $arch, $arch));
- 1/3: c
- 2/3: b
+ 1/2: c
+ 2/2: b
removing package a-1-1.%s
- 3/3: removing a-1-1.%s
+ 1/1: removing a-1-1.%s
EOF
check_installed_and_remove('b', 'c');
}
diff --git a/urpm/install.pm b/urpm/install.pm
index 9a3ec057..25b96114 100644
--- a/urpm/install.pm
+++ b/urpm/install.pm
@@ -91,29 +91,33 @@ Standard logger for transactions
=cut
# install logger callback
-my ($erase_logger, $index);
+my ($erase_logger, $index, $total_pkg, $uninst_count);
sub install_logger {
my ($urpm, $type, undef, $subtype, $amount, $total) = @_;
- my $total_pkg = $urpm->{nb_install};
local $| = 1;
if ($subtype eq 'start') {
$urpm->{logger_progress} = 0;
if ($type eq 'trans') {
+ $total_pkg = $urpm->{nb_install};
$urpm->{logger_count} ||= 0;
+ $uninst_count = 0;
my $p = N("Preparing...");
print $p, " " x (33 - length $p);
} else {
my $pname;
+ my $cnt;
if ($type eq 'uninst') {
+ $total_pkg = $urpm->{trans}->NElements - $index if !$uninst_count;
+ $cnt = ++$uninst_count;
$pname = N("removing %s", $urpm->{trans}->Element_fullname($index));
$erase_logger->($urpm, undef, undef, $subtype);
} else {
# index already got bumped in {callback_open}:
$pname = $urpm->{trans}->Element_name($index-1);
+ ++$urpm->{logger_count} if $pname;
+ $cnt = $pname ? $urpm->{logger_count} : '-';
}
- ++$urpm->{logger_count} if $pname;
- my $cnt = $pname ? $urpm->{logger_count} : '-';
my $s = sprintf("%9s: %-22s", $cnt . "/" . $total_pkg, $pname);
print $s;
$s =~ / $/ or printf "\n%9s %-22s", '', '';
diff --git a/urpm/main_loop.pm b/urpm/main_loop.pm
index 57290355..ce1ea974 100644
--- a/urpm/main_loop.pm
+++ b/urpm/main_loop.pm
@@ -29,7 +29,7 @@ use urpm::select;
use urpm::orphans;
use urpm::get_pkgs;
use urpm::signature;
-use urpm::util qw(any difference2 find intersection member partition untaint);
+use urpm::util qw(difference2 find intersection member partition untaint);
#- global boolean options
my ($auto_select, $no_install, $install_src, $clean, $noclean, $force, $parallel, $test);
@@ -309,32 +309,6 @@ sub _run_transaction {
!$fatal;
}
-# computes the number of packages to install or to erase -
-# side-effects: urpm->{nb_install}
-my $fullname2name_re = qr/^(.*)-[^\-]*-[^\-]*\.[^\.\-]*$/;
-sub _compute_pkg_total {
- my ($urpm, $state, $options) = @_;
- $urpm->{nb_install} = 0;
-
- # first account for install/erasures we will schedule (upgrades count twice as they involve erasure of the older package):
- foreach my $set (@{$state->{transaction} || []}) {
- my ($install, $upgrade) = partition {
- my $pkg = $urpm->{depslist}[$_];
- $pkg && !$pkg->flag_installed;
- } @{$set->{upgrade}};
- my $remove = $options->{'allow-force'} ? [] : $set->{remove} || [];
- my ($rm_count, $inst_count, $up_count) = (scalar(@$remove), scalar(values @$install), scalar(keys @$upgrade));
- $urpm->{nb_install} += $rm_count + $inst_count + 2 * $up_count;
- }
-
- # account for erases added by rpm (removal through obsoletes):
- foreach my $fn (keys %{$state->{transaction_state}{rejected} || {}}) {
- my ($n) = $fn =~ $fullname2name_re;
- next if !keys %{$state->{transaction_state}{rejected}{$fn}{obsoleted}};
- $urpm->{nb_install}++ if any { !/^\Q$n/ } keys %{$state->{transaction_state}{rejected}{$fn}{obsoleted}};
- }
-}
-
=item run($urpm, $state, $something_was_to_be_done, $ask_unselect, $_requested, $callbacks)
Run the main urpm loop:
@@ -425,9 +399,6 @@ sub run {
my $migrate_back_rpmdb_db_version =
$urpm->{root} && urpm::select::should_we_migrate_back_rpmdb_db_version($urpm, $state);
- #- compute package total:
- _compute_pkg_total($urpm, $state, $options);
-
#- now process each remove/install transaction
foreach my $set (@{$state->{transaction} || []}) {