]> xenbits.xensource.com Git - people/aperard/osstest.git/commitdiff
Debian mirror selection: Introduce DebianMirror[_<suite>[_<arch>]]
authorIan Jackson <iwj@xenproject.org>
Tue, 9 Feb 2021 12:18:04 +0000 (12:18 +0000)
committerIan Jackson <iwj@xenproject.org>
Tue, 9 Feb 2021 15:12:32 +0000 (15:12 +0000)
No functional change with existing configs.

Signed-off-by: Ian Jackson <iwj@xenproject.org>
Osstest/Debian.pm
README
make-distros-flight
production-config
ts-debian-install

index 01930e1f6b30f2c296a65301586fa79c52faf9b1..05cc6e1f72abd55ea37610a35f6db52ad43eb3e4 100644 (file)
@@ -22,6 +22,7 @@ use warnings;
 
 use POSIX;
 
+use Carp;
 use IO::File;
 use File::Copy;
 use File::Basename;
@@ -35,6 +36,8 @@ BEGIN {
     $VERSION     = 1.00;
     @ISA         = qw(Exporter);
     @EXPORT      = qw(debian_boot_setup
+                     debian_mirror_url debian_mirror_host_path
+                     debian_mirror_url_suite_arch
                       di_installer_path di_special_kernel
                       setupboot_bootloader_edited_rune
                       debian_overlays debian_overlays_fixup_cmd
@@ -811,12 +814,36 @@ chmod 600 $subdir/etc/ssh/ssh_host_*_key ||:
 END
 }
 
+sub debian_mirror_url ($) {
+    # I think ideally this should handle, and be used for, backports too.
+    # It would need an optional suite suffix which could be "-backports"?
+    my ($ho) = @_;
+    my $suite = $ho->{Suite};
+    my $arch = $ho->{Arch};
+    my $url =
+      $c{"DebianMirror_${suite}_${arch}"} //
+      $c{"DebianMirror_${suite}"} //
+      $c{"DebianMirror"};
+    if (!defined $url) {
+       $url = "http://$c{DebianMirrorHost}/$c{DebianMirrorSubpath}";
+    }
+    return $url;
+}
+
+sub debian_mirror_host_path ($) {
+    my ($ho) = @_;
+    my $url = debian_mirror_url($ho);
+    $url =~ m{^http://([^/]+)/(.*)$} or
+      confess "unsupported Debian url (needs to be http://HOST/...): $url";
+    return ($1, $2);
+}
+
 sub preseed_backports_packages ($$$$@) {
     my ($ho, $sfx, $xopts, $suite, @pkgs) = @_;
 
     if (! $xopts->{BackportsSourcesAlreadyAdded}++) {
        my $bp_url = $c{"DebianSnapshotBackports_$suite"};
-       $bp_url ||= "http://$c{DebianMirrorHost}/$c{DebianMirrorSubpath}";
+       $bp_url ||= debian_mirror_url($ho);
 
        my $apt_insert='';
        my $extra_rune='';
@@ -942,6 +969,8 @@ END
     preseed_hook_command($ho, 'late_command', $sfx,
                         debian_dhcp_rofs_fix($ho, '/target'));
 
+    my ($mhost, $mpath) = debian_mirror_host_path($ho);
+
     my $preseed = <<"END";
 d-i debian-installer/locale string en_GB
 d-i console-keymaps-at/keymap select gb
@@ -1001,9 +1030,9 @@ d-i finish-install/keep-consoles boolean true
 d-i finish-install/reboot_in_progress note
 d-i cdrom-detect/eject boolean false
 
-d-i mirror/http/hostname string $c{DebianMirrorHost}
+d-i mirror/http/hostname string $mhost
+d-i mirror/http/directory string /$mpath
 d-i mirror/http/proxy string $c{DebianMirrorProxy}
-d-i mirror/http/directory string /$c{DebianMirrorSubpath}
 d-i apt-setup/use_mirror boolean yes
 d-i apt-setup/another boolean false
 d-i apt-setup/non-free boolean false
diff --git a/README b/README
index 33c4d2cc0301364c7e0b22f763faf7603343ba87..20d9802a33ccf19e9e2b10bc095ebc4cbca05477 100644 (file)
--- a/README
+++ b/README
@@ -398,6 +398,10 @@ DebianMirrorProxy
    The apt proxy to specify for Debian (and derivatives),
    eg http://apt-cacher:3142/ .
 
+DebianMirror[_<suite>[_<arch>]]
+   Overrides DebianMirrorHost and DebianMirrorSubpath, optionally
+   for specific suite and arch.
+
 TestHost <hostname>
 TestHost_<ident> <hostname>
    Specifies the test box to use.  Should be a bare hostname,
index 406d7d64857cbd98f3a9206f5a1e4b562024e487..47094ef5bbe48d5ddf76d4795a9a0d979f01c0e4 100755 (executable)
@@ -74,6 +74,8 @@ test_do_one_netboot () {
   else
     #local mirror="http://`getconfig DebianMirrorHost`/`getconfig DebianMirrorSubpath`"
     # XXX local mirror seems to serve up stale files.
+    # ^ this should use debian_mirror_url, not plain config, so it
+    #   honours suite- and arch- specific settings
     local mirror="http://ftp.debian.org/debian"
     diurl="$mirror/dists/$guest_suite/main/installer-$domU/current/images/netboot"
     gver=$guest_suite
index df32e863975f2a311233fa18c9afee592b0fe3ec..e7009a556c8a1cf7c1f99812fc7395dad3f653a3 100644 (file)
@@ -126,9 +126,6 @@ CoverityUploadUrl https://scan.coverity.com/builds?project=XenProject
 CoverityTools cov-analysis-linux64-2019.03.tar.gz
 CoverityToolsStripComponents 1
 
-# We use the IP address because Citrix can't manage reliable nameservice
-#DebianMirrorHost debian.uk.xensource.com
-#DebianMirrorHost 10.80.16.196
 DebianMirrorProxy http://cache:3143/
 
 HostProp_DhcpWatchMethod leases dhcp3 infra.t:5556
index 8caa9d7685ee8eed3fd0f1ed8f998d231dab820a..c42e8a37a5659d2269e924092061eb4f9fa29b61 100755 (executable)
@@ -83,12 +83,14 @@ END
     $cmd .= <<END if defined $useproxy;
         http_proxy=$useproxy \\
 END
+    my $mirror = debian_mirror_url($gho);
+
     $cmd .= <<END;
         xen-create-image \\
             --dhcp --mac $gho->{Ether} \\
             --memory ${ram_mb}Mb --swap ${swap_mb}Mb \\
             --dist $gsuite \\
-            --mirror http://$c{DebianMirrorHost}/$c{DebianMirrorSubpath} \\
+            --mirror $mirror \\
             --hostname $gho->{Name} \\
             --lvm $gho->{Vg} --force \\
             --kernel $kernpath \\