diff options
author | Pascal Rigaux <pixel@mandriva.com> | 2007-06-07 18:22:35 +0000 |
---|---|---|
committer | Pascal Rigaux <pixel@mandriva.com> | 2007-06-07 18:22:35 +0000 |
commit | 0ca6719f421a9c5ac971f30fcd9a20782f38435a (patch) | |
tree | c246022b5b8688d3a4444945d093fdcfc82a440d /urpm | |
parent | 8a79470e525a0c0523953cafa526e7c56647ddaf (diff) | |
download | urpmi-0ca6719f421a9c5ac971f30fcd9a20782f38435a.tar urpmi-0ca6719f421a9c5ac971f30fcd9a20782f38435a.tar.gz urpmi-0ca6719f421a9c5ac971f30fcd9a20782f38435a.tar.bz2 urpmi-0ca6719f421a9c5ac971f30fcd9a20782f38435a.tar.xz urpmi-0ca6719f421a9c5ac971f30fcd9a20782f38435a.zip |
- urpmi
o prefer best architecture over exact name
(eg: urpmi libfoo-devel prefers lib64foo-devel over libfoo-devel)
- add function min()
Diffstat (limited to 'urpm')
-rw-r--r-- | urpm/select.pm | 10 | ||||
-rw-r--r-- | urpm/util.pm | 4 |
2 files changed, 13 insertions, 1 deletions
diff --git a/urpm/select.pm b/urpm/select.pm index 4b6f90a8..16aa2e87 100644 --- a/urpm/select.pm +++ b/urpm/select.pm @@ -51,6 +51,16 @@ sub search_packages { ? $_ : @{[]}; } $urpm->packages_providing($v)) { + #- find the lowest value of is_arch_compat + my %compats; + push @{$compats{$_->is_arch_compat}}, $_ foreach @l; + + delete $compats{0}; #- means not compatible + #- if there are pkgs matching arch, prefer them + if (%compats) { + @l = @{$compats{min(keys %compats)}}; + } + #- we assume that if there is at least one package providing #- the resource exactly, this should be the best one; but we #- first check if one of the packages has the same name as searched. diff --git a/urpm/util.pm b/urpm/util.pm index 47a89f08..321902b4 100644 --- a/urpm/util.pm +++ b/urpm/util.pm @@ -5,7 +5,7 @@ package urpm::util; use strict; use Exporter; our @ISA = 'Exporter'; -our @EXPORT = qw(quotespace unquotespace +our @EXPORT = qw(min quotespace unquotespace remove_internal_name reduce_pathname offset_pathname untaint @@ -17,6 +17,8 @@ our @EXPORT = qw(quotespace unquotespace (our $VERSION) = q($Revision$) =~ /(\d+)/; +sub min { my $n = shift; $_ < $n and $n = $_ foreach @_; $n } + #- quoting/unquoting a string that may be containing space chars. sub quotespace { my $x = $_[0] || ''; $x =~ s/(\s)/\\$1/g; $x } sub unquotespace { my $x = $_[0] || ''; $x =~ s/\\(\s)/$1/g; $x } |