commit d66ae590be88c1e5e47088dcd250b7f9b9b4a8dc Author: Dousig Date: Mon Mar 5 15:31:53 2012 +0100 (install) fix circular reference that defeats perl's GC else we keep the RPM DB open several times until rpm fails: created transaction for installing on / (remove=0, install=0, upgrade=8) error: rpmdb: Lock table is out of available locker entries error: cannot open Basenames index using db4 - Cannot allocate memory (12) error: rpmdb: Lock table is out of available locker entries error: cannot open Group index using db4 - Cannot allocate memory (12) error: rpmdb: Lock table is out of available locker entries error: cannot open Requirename index using db4 - Cannot allocate memory (12) error: rpmdb: Lock table is out of available locker entries error: cannot open Triggername index using db4 - Cannot allocate memory (12) error: rpmdb: Lock table is out of available locker entries (...) regression introduced in commit r2946 on 2012-02-14 (was: '(install) --test: do not display "More information on package"') diff --git a/NEWS b/NEWS index 50b0dba..dfbc36d 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,5 @@ - explicitely close the RPM DB after each transaction +- fix circular dependency that defeats perl's GC - warn if --allow-force, --allow-nodeps, --force or --keep is in use (mga#3127) Version 6.45 - 27 February 2012 diff --git a/urpm/install.pm b/urpm/install.pm index fc30b84..3dd9730 100644 --- a/urpm/install.pm +++ b/urpm/install.pm @@ -222,6 +222,7 @@ sub install { $urpm->{readmes} = {}; my $index; my $fh; + my $is_test = $options{test}; # fix circular reference #- assume default value for some parameter. $options{delta} ||= 1000; @@ -239,7 +240,7 @@ sub install { my ($urpm, undef, $pkgid) = @_; return unless defined $pkgid; $callback_close_helper and $callback_close_helper->($db, @_); - get_README_files($urpm, $trans, $urpm->{depslist}[$pkgid]) if !$options{test}; + get_README_files($urpm, $trans, $urpm->{depslist}[$pkgid]) if !$is_test; close $fh if defined $fh; }; #- ensure perl does not create a circular reference below, otherwise all this won't be collected,