1
1
# frozen_string_literal: true
2
2
3
3
require_relative "edition"
4
+ require_relative "arch"
4
5
5
6
module RootFS
6
7
module Distro
@@ -13,12 +14,24 @@ module Ubuntu
13
14
14
15
EDITION_URL = {
15
16
desktop : {
16
- release : "http://cdimage.ubuntu.com/releases/{version}/release/SHA256SUMS" ,
17
- daily : "http://cdimage.ubuntu.com/{codename}/daily-preinstalled/current/SHA256SUMS"
17
+ release : {
18
+ amd64 : "http://releases.ubuntu.com/{version}/SHA256SUMS" ,
19
+ others : "http://cdimage.ubuntu.com/releases/{version}/release/SHA256SUMS"
20
+ } ,
21
+ daily : {
22
+ amd64 : "http://cdimage.ubuntu.com/{codename}/daily-live/current/SHA256SUMS" ,
23
+ others : "http://cdimage.ubuntu.com/{codename}/daily-preinstalled/current/SHA256SUMS"
24
+ }
18
25
} ,
19
26
server : {
20
- release : "http://cdimage.ubuntu.com/releases/{version}/release/SHA256SUMS" ,
21
- daily : "http://cdimage.ubuntu.com/ubuntu-server/{codename}/daily-preinstalled/current/SHA256SUMS"
27
+ release : {
28
+ amd64 : "http://releases.ubuntu.com/{version}/SHA256SUMS" ,
29
+ others : "http://cdimage.ubuntu.com/releases/{version}/release/SHA256SUMS"
30
+ } ,
31
+ daily : {
32
+ amd64 : "http://cdimage.ubuntu.com/ubuntu-server/{codename}/daily-live/current/SHA256SUMS" ,
33
+ others : "http://cdimage.ubuntu.com/ubuntu-server/{codename}/daily-preinstalled/current/SHA256SUMS"
34
+ }
22
35
} ,
23
36
base : {
24
37
release : "http://cdimage.ubuntu.com/ubuntu-base/releases/{version}/release/SHA256SUMS" ,
@@ -34,7 +47,7 @@ module Ubuntu
34
47
}
35
48
} . freeze
36
49
37
- def url_of ( edi , rel , daily = false )
50
+ def url_of ( edi , rel , daily = false , arch : "amd64" )
38
51
hash = RootFS ::Distro ::Ubuntu . parse_edition ( edi )
39
52
return unless hash
40
53
@@ -49,8 +62,22 @@ def url_of(edi, rel, daily = false)
49
62
dev = hash [ :dev ]
50
63
daily ||= type == "codename"
51
64
52
- url_tmpl = !daily ? EDITION_URL [ edition . to_sym ] [ :release ] : EDITION_URL [ edition . to_sym ] [ :daily ]
53
- top_dir = url_tmpl . start_with? ( "http://cdimage.ubuntu.com" ) && dev && daily
65
+ hash = RootFS ::Distro ::Ubuntu . parse_arch ( arch )
66
+ return unless hash
67
+
68
+ arch = hash [ :arch ]
69
+
70
+ url_tmpl = if %w[ desktop server ] . include? ( edition )
71
+ if arch == "amd64"
72
+ !daily ? EDITION_URL [ edition . to_sym ] [ :release ] [ :amd64 ] : EDITION_URL [ edition . to_sym ] [ :daily ] [ :amd64 ]
73
+ else
74
+ !daily ? EDITION_URL [ edition . to_sym ] [ :release ] [ :others ] : EDITION_URL [ edition . to_sym ] [ :daily ] [ :others ]
75
+ end
76
+ else
77
+ !daily ? EDITION_URL [ edition . to_sym ] [ :release ] : EDITION_URL [ edition . to_sym ] [ :daily ]
78
+ end
79
+
80
+ top_dir = url_tmpl . include? ( "cdimage.ubuntu.com" ) && dev && daily
54
81
codename = "" if top_dir
55
82
56
83
url_tmpl . gsub ( "{version}" , version ) . gsub ( "{codename}" , codename . to_s )
0 commit comments