From 49ae8a7ea7b7a258bf6a56377b50d49892b4377e Mon Sep 17 00:00:00 2001 From: Pascal Rigaux Date: Fri, 3 Aug 2007 14:14:28 +0000 Subject: - urpmi o handle README..upgrade.urpmi and README.-.upgrade.urpmi: the content is displayed when upgrading from rpm older than (#30187) - fix build of some test rpms --- urpm/install.pm | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) (limited to 'urpm') diff --git a/urpm/install.pm b/urpm/install.pm index 29821e90..5f960b0d 100644 --- a/urpm/install.pm +++ b/urpm/install.pm @@ -95,10 +95,33 @@ sub install_logger { } sub get_README_files { - my ($urpm, $pkg) = @_; - my $fullname = $pkg->fullname; - my $trtype = $pkg->flag_installed ? '(upgrade|update)' : 'install'; - foreach ($pkg->files) { /\bREADME(\.$trtype)?\.urpmi$/ and $urpm->{readmes}{$_} = $fullname } + my ($urpm, $trans, $pkg) = @_; + + foreach my $file ($pkg->files) { + my ($kind) = $file =~ m!/README([^/]*)\.urpmi$! or next; + my $valid; + if ($kind eq '') { + $valid = 1; + } elsif ($kind eq '.install' && !$pkg->flag_installed) { + $valid = 1; + } elsif ($kind =~ /(.*)\.(upgrade|update)$/ && $pkg->flag_installed) { + if (!$1) { + $valid = 1; + } else { + my $version = $1; + foreach my $i (0 .. $trans->NElements - 1) { + $trans->Element_name($i) eq $pkg->name or next; + + my $vr = $trans->Element_version($i) . '-' . $trans->Element_release($i); + if (URPM::ranges_overlap("== $vr", "< $version")) { + $valid = 1; + last; + } + } + } + } + $valid and $urpm->{readmes}{$file} = $pkg->fullname; + } } #- install packages according to each hash (remove, install or upgrade). @@ -168,7 +191,7 @@ sub install { $options{callback_close} = sub { my ($urpm, undef, $pkgid) = @_; return unless defined $pkgid; - get_README_files($urpm, $urpm->{depslist}[$pkgid]); + get_README_files($urpm, $trans, $urpm->{depslist}[$pkgid]); close $fh if defined $fh; }; $options{callback_uninst} = sub { -- cgit v1.2.1