use POSIX;
+use Carp;
use IO::File;
use File::Copy;
use File::Basename;
$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
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='';
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
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
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,