diff options
author | Rafael Garcia-Suarez <rgarciasuarez@mandriva.org> | 2006-02-13 13:21:46 +0000 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@mandriva.org> | 2006-02-13 13:21:46 +0000 |
commit | 6c2023f0fd255166aae8e30fdfe81094cd70dc5b (patch) | |
tree | fc496dc4cdd8291325cee2cb7b2422cf5be942a6 | |
parent | 5cda058a27dab4b7bda4f0b2fce18d07517e82b2 (diff) | |
download | urpmi-6c2023f0fd255166aae8e30fdfe81094cd70dc5b.tar urpmi-6c2023f0fd255166aae8e30fdfe81094cd70dc5b.tar.gz urpmi-6c2023f0fd255166aae8e30fdfe81094cd70dc5b.tar.bz2 urpmi-6c2023f0fd255166aae8e30fdfe81094cd70dc5b.tar.xz urpmi-6c2023f0fd255166aae8e30fdfe81094cd70dc5b.zip |
Make --ignorearch really work by overriding a package subroutine (not very
clean, but fast)
-rw-r--r-- | urpm.pm | 12 | ||||
-rwxr-xr-x | urpmi | 4 | ||||
-rwxr-xr-x | urpmq | 4 |
3 files changed, 13 insertions, 7 deletions
@@ -26,6 +26,11 @@ BEGIN { } } +#- this violently overrides is_arch_compat() to always return true. +sub shunt_ignorearch { + eval q( sub URPM::Package::is_arch_compat { 1 } ); +} + #- create a new urpm object. sub new { my ($class) = @_; @@ -2166,10 +2171,7 @@ sub search_packages { #- try to search through provides. if (my @l = map { $_ - && ($options{ignorearch} - ? 1 - : $options{src} ? $_->arch eq 'src' : $_->is_arch_compat - ) + && ($options{src} ? $_->arch eq 'src' : $_->is_arch_compat) && ($options{use_provides} || $_->name eq $v) && defined($_->id) && (!defined $urpm->{searchmedia} || ( @@ -2208,7 +2210,7 @@ sub search_packages { (0 .. $#{$urpm->{depslist}}) ) { my $pkg = $urpm->{depslist}[$id]; - ($options{ignorearch} ? 1 : $options{src} ? $pkg->arch eq 'src' : $pkg->is_arch_compat) or next; + ($options{src} ? $pkg->arch eq 'src' : $pkg->is_arch_compat) or next; my $pack_name = $pkg->name; my $pack_ra = $pack_name . '-' . $pkg->version; my $pack_a = "$pack_ra-" . $pkg->release; @@ -306,6 +306,9 @@ unless ($env || $nolock) { $urpm->shlock_urpmi_db; } +#- should we ignore arch compatibility +if ($urpm->{options}{ignorearch}) { urpm::shunt_ignorearch() } + my %config_hash = ( bug => $bug, excludemedia => $excludemedia, @@ -386,7 +389,6 @@ if (@names) { all => $all, use_provides => $use_provides, fuzzy => $urpm->{options}{fuzzy}, - ignorearch => $urpm->{options}{ignorearch}, ) || $force or exit 1; } if (@src_names) { @@ -131,6 +131,9 @@ if ($urpm::args::options{env}) { $urpm->{statedir} = $urpm::args::options{env}; } +#- should we ignore arch compatibility +if ($urpm::args::options{ignorearch}) { urpm::shunt_ignorearch() } + $urpm::args::options{upgrade} && !$urpm::args::options{env} && !$urpm::args::options{nolock} and $urpm->shlock_rpm_db; $urpm::args::options{nolock} or $urpm->shlock_urpmi_db; @@ -200,7 +203,6 @@ if ($urpm::args::options{list_aliases}) { fuzzy => $urpm::args::options{fuzzy}, caseinsensitive => $urpm::args::options{caseinsensitive}, all => $urpm::args::options{all}, - ignorearch => $urpm::args::options{ignorearch}, ) or $urpm::args::options{force} or exit 1; } |