diff options
Diffstat (limited to 'perl-install/crypto.pm')
-rw-r--r-- | perl-install/crypto.pm | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/perl-install/crypto.pm b/perl-install/crypto.pm index 7cd0b2447..830c908cd 100644 --- a/perl-install/crypto.pm +++ b/perl-install/crypto.pm @@ -44,6 +44,14 @@ use ftp; %mirrors = (); +sub compat_arch_for_updates($) { + # FIXME: We prefer 64-bit packages to update on biarch platforms, + # since the system is populated with 64-bit packages anyway. + my ($arch) = @_; + return $arch =~ /x86_64|amd64/ if (arch() eq 'x86_64'); + MDK::Common::System::compat_arch($arch); +} + sub mirror2text { $mirrors{$_[0]} && $mirrors{$_[0]}[0] . '|' . $_[0] } sub mirrors { my ($o_distro_type) = @_; @@ -60,7 +68,7 @@ sub mirrors { my $sub_dir = $distro_type =~ /cooker|community/ ? '' : ($::corporate ? '/corporate' : '') . '/' . version(); foreach (<$f>) { my ($arch, $url, $dir) = m|$distro_type([^:]*):ftp://([^/]*)(/\S*)| or next; - MDK::Common::System::compat_arch($arch) or + compat_arch_for_updates($arch) or log::l("ignoring updates from $url because of incompatible arch: $arch"), next; my $land = N("United States"); foreach (keys %url2land) { @@ -104,11 +112,12 @@ sub bestMirror { #- hack to retrieve Mandrakelinux version... sub version() { - require pkgs; - my $pkg = pkgs::packageByName($::o->{packages}, 'mandrake-release'); - $pkg && $pkg->version || '9.1'; #- safe but dangerous ;-) + my $release = cat_("$::prefix/etc/mandrake-release"); + my ($version) = $release =~ /Mandrake\s*linux.*\srelease\s+([\d.]+)/i; + $version || '10.0'; #- safe but dangerous ;-) } + sub dir { $mirrors{$_[0]}[1] } sub ftp($) { ftp::new($_[0], dir($_[0])) } |