diff options
author | Francois Pons <fpons@mandriva.com> | 2002-08-27 14:20:02 +0000 |
---|---|---|
committer | Francois Pons <fpons@mandriva.com> | 2002-08-27 14:20:02 +0000 |
commit | 9f65aa2d647cf7204ac9c137478bc9fb3ae54536 (patch) | |
tree | 47b502bda3627ba26bf2babaea5343ae9923099f /urpm.pm | |
parent | 1c885578b7c9ffa8870044873f24f60af57d5407 (diff) | |
download | urpmi-9f65aa2d647cf7204ac9c137478bc9fb3ae54536.tar urpmi-9f65aa2d647cf7204ac9c137478bc9fb3ae54536.tar.gz urpmi-9f65aa2d647cf7204ac9c137478bc9fb3ae54536.tar.bz2 urpmi-9f65aa2d647cf7204ac9c137478bc9fb3ae54536.tar.xz urpmi-9f65aa2d647cf7204ac9c137478bc9fb3ae54536.zip |
4.0-6mdk
Diffstat (limited to 'urpm.pm')
-rw-r--r-- | urpm.pm | 28 |
1 files changed, 15 insertions, 13 deletions
@@ -1669,27 +1669,29 @@ sub deselect_unwanted_packages { open F, $urpm->{skiplist}; while (<F>) { chomp; s/#.*$//; s/^\s*//; s/\s*$//; - if (my ($n, $s) = /^([^\s\[]*)(?:\[\*\])?\[?([^\s\]]*\s*[^\s\]]*)/) { - $skip{$n}{$s} = undef; + if (my ($n, $s) = /^([^\s\[]+)(?:\[\*\])?\[?\s*([^\s\]]*\s*[^\s\]]*)/) { + $skip{$n}{$s} = undef; } } close F; - %skip and return; + %skip or return; foreach (grep { $options{force} || (exists $packages->{$_} && ! defined $packages->{$_}) } keys %$packages) { my $pkg = $urpm->{depslist}[$_] or next; my $remove_it; - #- find skiped entry that match the package fullname. - foreach (keys %skip) { - exists $skip{$_}{''} && $pkg->fullname =~ /$_/ and delete $packages->{$pkg->id}; - } - - #- check if a provides match at least one package. - foreach ($pkg->provides) { - if (my ($n, $s) = /^([^\s\[]*)(?:\[\*\])?\[?([^\s\]]*\s*[^\s\]]*)/) { - foreach (keys %{$skip{$n} || {}}) { - range_overlap($_, $s) and delete $packages->{$pkg->id}; + #- check if fullname is matching a regexp. + if (grep { exists $skip{$_}{''} && /^\/(.*)\/$/ && $pkg->fullname =~ /$1/ } keys %skip) { + delete $packages->{$pkg->id}; + } else { + #- check if a provides match at least one package. + foreach ($pkg->provides) { + if (my ($n, $s) = /^([^\s\[]*)(?:\[\*\])?\[?([^\s\]]*\s*[^\s\]]*)/) { + foreach my $sn ($n, grep { /^\/(.*)\/$/ && $n =~ /$1/ } keys %skip) { + foreach (keys %{$skip{$sn} || {}}) { + URPM::ranges_overlap($_, $s) and delete $packages->{$pkg->id}; + } + } } } } |