From 862faaf416eb543c96514be8ff161e25bf51391d Mon Sep 17 00:00:00 2001 From: Mandrake Date: Tue, 12 Sep 2006 10:57:40 +0000 Subject: alter the get_obsoleted version, the filter should be deported into URPM.pm, but working for now --- lib/Youri/Repository.pm | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/Youri/Repository.pm b/lib/Youri/Repository.pm index 255d217..30bd520 100644 --- a/lib/Youri/Repository.pm +++ b/lib/Youri/Repository.pm @@ -181,7 +181,10 @@ sub get_obsoleted_packages { my @packages; foreach my $obsolete ($package->get_obsoletes()) { my $pattern = $self->get_package_class()->get_pattern($obsolete->[Youri::Package::DEPENDENCY_NAME]); - push(@packages, + my $obs = $obsolete->[Youri::Package::DEPENDENCY_NAME]; + my $range = $obsolete->[Youri::Package::DEPENDENCY_RANGE]; + my @list; + push(@list, map { $self->get_package_class()->new(file => $_) } $self->get_files( $self->{_install_root}, @@ -189,7 +192,23 @@ sub get_obsoleted_packages { $pattern ) ); + my ($flag, $version) = $range =~ /(\S+)\s+(.*)/; + if ($version) { + my ($epoch, $ver, $release) = $version =~ /(?:(\d+):)?([^-]+(?:-[^-]*)?)/; + $release ||= '0'; + $epoch ||= '0'; + $range = "$flag $epoch-$ver-$release"; + print "Potential obsolete: @list\n"; + push @packages, grep { + my $full_version = $_->get_full_version; + print "Comparing $range with $full_version\n"; + URPM::ranges_overlap($range, "== $full_version") + } @list; + } else { + push @packages, @list + } } + print "Obsoleted: @packages\n"; return @packages; } -- cgit v1.2.1