Skip to content

Commit 7a053ff

Browse files
authored
Add utility to find the latest common denominator Julia version (#434)
@DilumAluthge @IanButterworth so it appears that the latest version of Julia we have that satisfies armv7l and ppc64le at the same time is 1.6.3, which of course is too old for Sandbox.jl. Sigh. So I guess we should just disable either the armv7l or ppc64le bots from doing the generic jobs like upload jobs.
1 parent e1e77d4 commit 7a053ff

File tree

4 files changed

+194
-0
lines changed

4 files changed

+194
-0
lines changed
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# This file is machine-generated - editing it directly is not advised
2+
3+
julia_version = "1.11.3"
4+
manifest_format = "2.0"
5+
project_hash = "23f7a7c414b93b4fd223b2486b8aed83d346b1cd"
6+
7+
[[deps.ArgTools]]
8+
uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f"
9+
version = "1.1.2"
10+
11+
[[deps.Artifacts]]
12+
uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33"
13+
version = "1.11.0"
14+
15+
[[deps.Dates]]
16+
deps = ["Printf"]
17+
uuid = "ade2ca70-3891-5945-98fb-dc099432e06a"
18+
version = "1.11.0"
19+
20+
[[deps.Downloads]]
21+
deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"]
22+
uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6"
23+
version = "1.6.0"
24+
25+
[[deps.FileWatching]]
26+
uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee"
27+
version = "1.11.0"
28+
29+
[[deps.JSON3]]
30+
deps = ["Dates", "Mmap", "Parsers", "PrecompileTools", "StructTypes", "UUIDs"]
31+
git-tree-sha1 = "1d322381ef7b087548321d3f878cb4c9bd8f8f9b"
32+
uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1"
33+
version = "1.14.1"
34+
35+
[deps.JSON3.extensions]
36+
JSON3ArrowExt = ["ArrowTypes"]
37+
38+
[deps.JSON3.weakdeps]
39+
ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd"
40+
41+
[[deps.LibCURL]]
42+
deps = ["LibCURL_jll", "MozillaCACerts_jll"]
43+
uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21"
44+
version = "0.6.4"
45+
46+
[[deps.LibCURL_jll]]
47+
deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"]
48+
uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0"
49+
version = "8.6.0+0"
50+
51+
[[deps.LibSSH2_jll]]
52+
deps = ["Artifacts", "Libdl", "MbedTLS_jll"]
53+
uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8"
54+
version = "1.11.0+1"
55+
56+
[[deps.Libdl]]
57+
uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
58+
version = "1.11.0"
59+
60+
[[deps.MbedTLS_jll]]
61+
deps = ["Artifacts", "Libdl"]
62+
uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1"
63+
version = "2.28.6+0"
64+
65+
[[deps.Mmap]]
66+
uuid = "a63ad114-7e13-5084-954f-fe012c677804"
67+
version = "1.11.0"
68+
69+
[[deps.MozillaCACerts_jll]]
70+
uuid = "14a3606d-f60d-562e-9121-12d972cd8159"
71+
version = "2023.12.12"
72+
73+
[[deps.NetworkOptions]]
74+
uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908"
75+
version = "1.2.0"
76+
77+
[[deps.Parsers]]
78+
deps = ["Dates", "PrecompileTools", "UUIDs"]
79+
git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821"
80+
uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
81+
version = "2.8.1"
82+
83+
[[deps.PrecompileTools]]
84+
deps = ["Preferences"]
85+
git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f"
86+
uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a"
87+
version = "1.2.1"
88+
89+
[[deps.Preferences]]
90+
deps = ["TOML"]
91+
git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6"
92+
uuid = "21216c6a-2e73-6563-6e65-726566657250"
93+
version = "1.4.3"
94+
95+
[[deps.Printf]]
96+
deps = ["Unicode"]
97+
uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7"
98+
version = "1.11.0"
99+
100+
[[deps.Random]]
101+
deps = ["SHA"]
102+
uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
103+
version = "1.11.0"
104+
105+
[[deps.SHA]]
106+
uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce"
107+
version = "0.7.0"
108+
109+
[[deps.StructTypes]]
110+
deps = ["Dates", "UUIDs"]
111+
git-tree-sha1 = "159331b30e94d7b11379037feeb9b690950cace8"
112+
uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4"
113+
version = "1.11.0"
114+
115+
[[deps.TOML]]
116+
deps = ["Dates"]
117+
uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76"
118+
version = "1.0.3"
119+
120+
[[deps.UUIDs]]
121+
deps = ["Random", "SHA"]
122+
uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"
123+
version = "1.11.0"
124+
125+
[[deps.Unicode]]
126+
uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
127+
version = "1.11.0"
128+
129+
[[deps.Zlib_jll]]
130+
deps = ["Libdl"]
131+
uuid = "83775a58-1f1d-513f-b197-d71354ab007a"
132+
version = "1.2.13+1"
133+
134+
[[deps.nghttp2_jll]]
135+
deps = ["Artifacts", "Libdl"]
136+
uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d"
137+
version = "1.59.0+0"
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[deps]
2+
Downloads = "f43a241f-c20a-4ad4-852c-f6b1247861c6"
3+
JSON3 = "0f8b85d8-7281-11e9-16c2-39a750bddbf1"
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Finding the latest common Julia version
2+
3+
For our generic jobs (such as upload jobs) it is useful to know what's the latest version of Julia that is supported on all our build systems. Currently, the answer is quite depressing if we include both `armv7l` and `ppc64le` (`1.6.3`).
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
using Downloads, JSON3, Base.BinaryPlatforms
2+
3+
json_buff = IOBuffer()
4+
Downloads.download("https://julialang-s3.julialang.org/bin/versions.json", json_buff)
5+
versions_json = JSON3.read(String(take!(json_buff)))
6+
7+
root_dir = dirname(dirname(@__DIR__))
8+
9+
# Read the set of triplets from our .arches files:
10+
function read_arches_file(arches_file)
11+
triplets_script = """
12+
bash $(root_dir)/utilities/arches_env.sh $(arches_file) | while read env_map; do
13+
eval "export \${env_map}"
14+
echo "\${TRIPLET}"
15+
done
16+
"""
17+
platforms = Platform[]
18+
for line in split(readchomp(`bash -c $triplets_script`), "\n")
19+
if isempty(line) || endswith(line, "gnuassert") || endswith(line, "gnummtk") || endswith(line, "gnuprofiling")
20+
continue
21+
end
22+
try
23+
push!(platforms, parse(Platform, line))
24+
catch
25+
@warn("Couldn't parse $(line) as a platform!")
26+
end
27+
end
28+
return platforms
29+
end
30+
31+
arches_files = filter(readdir(joinpath(root_dir, "pipelines", "main", "platforms"); join=true)) do fname
32+
return endswith(fname, ".arches")
33+
end
34+
platforms = unique(vcat(read_arches_file.(arches_files)...))
35+
36+
# Only care about Linux versions, since those are the ones we use to launch jobs
37+
platforms = filter(Sys.islinux, platforms)
38+
39+
# Collect all versions that have
40+
versions = filter(versions_json) do (v, d)
41+
if !d["stable"]
42+
return false
43+
end
44+
version_platforms = [parse(Platform, f.triplet) for f in d.files]
45+
if any(p version_platforms for p in platforms)
46+
return false
47+
end
48+
return true
49+
end
50+
latest_common_version = maximum(VersionNumber.(String.(collect(keys(versions)))))
51+
@show latest_common_version

0 commit comments

Comments
 (0)