Skip to content

Commit c473b81

Browse files
committed
Add macos_kernel_version() and tests
This provides the reverse mapping for `macos_version()`.
1 parent 99793f2 commit c473b81

File tree

2 files changed

+49
-1
lines changed

2 files changed

+49
-1
lines changed

BinaryBuilderPlatformExtensions.jl/src/PlatformProperties.jl

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export macos_version, nbits, proc_family, exeext, dlext
1+
export macos_version, macos_kernel_version, nbits, proc_family, exeext, dlext
22

33
function macos_version(kernel_version::Integer)
44
# See https://en.wikipedia.org/wiki/Darwin_(operating_system)#Release_history
@@ -13,9 +13,35 @@ function macos_version(kernel_version::Integer)
1313
19 => "10.15",
1414
20 => "11.0",
1515
21 => "12.0",
16+
22 => "13.0",
17+
23 => "14.0",
18+
24 => "15.0",
1619
)
1720
return get(kernel_to_macos, kernel_version, nothing)
1821
end
22+
macos_version(v::VersionNumber) = macos_version(v.major)
23+
24+
"""
25+
macos_kernel_version(v::VersionNumber)
26+
27+
Return the kernel version from a macOS VersionNumber, e.g. when given
28+
`10.10`` return `14`. If given a VersionNumber outside of what we
29+
understand, return the closest valid number.
30+
"""
31+
function macos_kernel_version(v::VersionNumber)
32+
if v.major < 10
33+
return 12
34+
elseif v.major == 10
35+
if v.minor <= 8
36+
return 12
37+
else
38+
return min(12 + (v.minor - 8), 19)
39+
end
40+
else
41+
return 20 + (v.major - 11)
42+
end
43+
end
44+
macos_kernel_version(s::String) = macos_kernel_version(VersionNumber(s))
1945

2046
"""
2147
macos_version(p::AbstractPlatform)
@@ -38,6 +64,16 @@ function macos_version(p::AbstractPlatform)
3864
return macos_version(os_version(p))
3965
end
4066

67+
function macos_kernel_version(p::AbstractPlatform)
68+
if os(p) != "macos"
69+
return nothing
70+
end
71+
if os_version(p) === nothing
72+
return nothing
73+
end
74+
return Int(os_version(p).major)
75+
end
76+
4177

4278
"""
4379
nbits(p::AbstractPlatform)

BinaryBuilderPlatformExtensions.jl/test/runtests.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,18 @@ using BinaryBuilderPlatformExtensions, Test, Base.BinaryPlatforms, Artifacts
211211
end
212212
end
213213

214+
@testset "macos_version" begin
215+
@test macos_version(Platform("x86_64", "macos")) === nothing
216+
@test macos_version(Platform("x86_64", "macos"; os_version="14")) === "10.10"
217+
@test macos_version(Platform("x86_64", "macos"; os_version="20")) === "11.0"
218+
for idx in 12:24
219+
p = Platform("aarch64", "macos"; os_version=string(idx))
220+
@test macos_version(p) !== nothing
221+
@test macos_kernel_version(p) == idx
222+
@test macos_kernel_version(macos_version(p)) == idx
223+
end
224+
end
225+
214226
@testset "nbits" begin
215227
for p in [Platform("i686", "linux"), Platform("i686", "windows"), Platform("armv7l", "linux")]
216228
@test nbits(p) == 32

0 commit comments

Comments
 (0)