summaryrefslogtreecommitdiffstats
path: root/perl-install/crypto.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/crypto.pm')
-rw-r--r--perl-install/crypto.pm17
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])) }