11local distro_check = import "../../configs/distro_check.libjsonnet";
22
3- local distro_base(suite, distro_mirror, distro, architecture, distro_mirror_default) = {
3+ local mirror_link(
4+ distro_mirror,
5+ snapshot_timestamp,
6+ distro,
7+ architecture,
8+ distro_mirror_default,
9+ snapshot_mirror_default
10+ ) = if snapshot_timestamp != ""
11+ then
12+ // Build with snapshot service
13+ snapshot_mirror_default + snapshot_timestamp
14+ else
15+ (if distro_mirror == ""
16+ then
17+ // Primary archive
18+ distro_mirror_default
19+ else
20+ distro_mirror) + "/" +
21+ (if distro == "ubuntu" && architecture != "amd64"
22+ then
23+ distro + "-ports"
24+ else
25+ distro);
26+
27+ local distro_base(
28+ suite,
29+ distro_mirror,
30+ distro,
31+ architecture,
32+ snapshot_timestamp,
33+ distro_mirror_default,
34+ snapshot_mirror_default,
35+ ) = {
436 mmdebstrap+: {
537 components+: [
638 "main",
739 ],
840 mirrors+: [
9- // Primary archive
10- (if distro_mirror == ""
11- then
12- distro_mirror_default
13- else
14- distro_mirror)
15- + "/" +
16- (if distro == "ubuntu" && architecture != "amd64"
17- then
18- distro + "-ports"
19- else
20- distro),
41+ mirror_link(distro_mirror,
42+ snapshot_timestamp,
43+ distro,
44+ architecture,
45+ distro_mirror_default,
46+ snapshot_mirror_default),
2147 ],
2248 "setup-hooks"+: [
2349 |||
@@ -26,7 +52,7 @@ local distro_base(suite, distro_mirror, distro, architecture, distro_mirror_defa
2652 # backports archive
2753 head -n 1 "$1/etc/apt/sources.list" | sed -E -e "s/(%(suite)s)/\\1-backports/" > "$1/etc/apt/sources.list.d/50-%(suite)s-backports.list"
2854 # security archive
29- head -n 1 "$1/etc/apt/sources.list" | sed -E -e "s/(%(suite)s)/\\1-security/" -e "s|/debian |/debian-security |" > "$1/etc/apt/sources.list.d/50-%(suite)s-security.list"
55+ head -n 1 "$1/etc/apt/sources.list" | sed -E -e "s/(%(suite)s)/\\1-security/" -e "s|/debian|/debian-security|" > "$1/etc/apt/sources.list.d/50-%(suite)s-security.list"
3056 # main archive
3157 mv "$1/etc/apt/sources.list" "$1/etc/apt/sources.list.d/50-%(suite)s.list"
3258 ||| % {
@@ -53,8 +79,9 @@ local distro_debian(
5379 suite,
5480 distro_mirror,
5581 architecture,
82+ snapshot_timestamp,
5683 distro = "debian",
57- ) = distro_base(suite, distro_mirror, distro, architecture, "https://deb.debian.org") + {
84+ ) = distro_base(suite, distro_mirror, distro, architecture, snapshot_timestamp, "https://deb.debian.org", "https://snapshot.debian.org/archive/debian/ ") + {
5885 mmdebstrap+: {
5986 components+: std.prune([
6087 "contrib",
@@ -68,8 +95,9 @@ local distro_ubuntu(
6895 suite,
6996 distro_mirror,
7097 architecture,
98+ snapshot_timestamp,
7199 distro = "ubuntu",
72- ) = distro_base(suite, distro_mirror, distro, architecture, "http://ports.ubuntu.com") + {
100+ ) = distro_base(suite, distro_mirror, distro, architecture, snapshot_timestamp, "http://ports.ubuntu.com", "https://snapshot.ubuntu.com/ubuntu/ ") + {
73101 mmdebstrap+: {
74102 components+: [
75103 "restricted",
@@ -79,10 +107,10 @@ local distro_ubuntu(
79107 }
80108};
81109
82- function(suite, distro_mirror, architecture)
110+ function(suite, distro_mirror, architecture, snapshot_timestamp )
83111 if distro_check(suite) == "debian"
84112 then
85- distro_debian(suite, distro_mirror, architecture)
113+ distro_debian(suite, distro_mirror, architecture, snapshot_timestamp )
86114 else if distro_check(suite) == "ubuntu"
87115 then
88- distro_ubuntu(suite, distro_mirror, architecture)
116+ distro_ubuntu(suite, distro_mirror, architecture, snapshot_timestamp )
0 commit comments