Skip to content

Commit eea82df

Browse files
topolaritymaleadt
andauthored
Add support for OCaml (#425)
Co-authored-by: Tim Besard <tim.besard@gmail.com>
1 parent 2d00e52 commit eea82df

File tree

6 files changed

+366
-13
lines changed

6 files changed

+366
-13
lines changed

Artifacts.toml

Lines changed: 230 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3804,6 +3804,226 @@ os = "linux"
38043804
sha256 = "80c9869b8421b7efdba72f13ec2c24c7ef77b533ad75d8c72739a312adcaef75"
38053805
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/LLVMBootstrap-v9.0.1+0/LLVMBootstrap.v9.0.1.x86_64-linux-musl.unpacked.tar.gz"
38063806

3807+
[["OCaml-aarch64-apple-darwin20.v5.3.0.x86_64-linux-musl.squashfs"]]
3808+
arch = "x86_64"
3809+
git-tree-sha1 = "de0550d76f247cac467472ff2a3dbcb0694aa9fe"
3810+
lazy = true
3811+
libc = "musl"
3812+
os = "linux"
3813+
3814+
[["OCaml-aarch64-apple-darwin20.v5.3.0.x86_64-linux-musl.squashfs".download]]
3815+
sha256 = "107cefa839c3f1c94f2e5b30c44e4b4fbb23ebf5487fb32cf20a497981cab593"
3816+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.3.0/OCaml-aarch64-apple-darwin20.v5.3.0.x86_64-linux-musl.squashfs.tar.gz"
3817+
3818+
[["OCaml-aarch64-apple-darwin20.v5.3.0.x86_64-linux-musl.unpacked"]]
3819+
arch = "x86_64"
3820+
git-tree-sha1 = "13a51495efeb02b136646c0666a0819613e3de62"
3821+
lazy = true
3822+
libc = "musl"
3823+
os = "linux"
3824+
3825+
[["OCaml-aarch64-apple-darwin20.v5.3.0.x86_64-linux-musl.unpacked".download]]
3826+
sha256 = "655ad7f266a62c4f2f5c8f8465b8c0cb189c73217347d07a24bcca2d0fabbcdb"
3827+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.3.0/OCaml-aarch64-apple-darwin20.v5.3.0.x86_64-linux-musl.unpacked.tar.gz"
3828+
3829+
[["OCaml-aarch64-linux-gnu.v5.3.0.x86_64-linux-musl.squashfs"]]
3830+
arch = "x86_64"
3831+
git-tree-sha1 = "c89ab016353f478ec9bb434e56d9f881afeea968"
3832+
lazy = true
3833+
libc = "musl"
3834+
os = "linux"
3835+
3836+
[["OCaml-aarch64-linux-gnu.v5.3.0.x86_64-linux-musl.squashfs".download]]
3837+
sha256 = "7b4af26bda6a425b5439c9a9854487b3fefe09caef482164b7cfa692db4f4296"
3838+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.3.0/OCaml-aarch64-linux-gnu.v5.3.0.x86_64-linux-musl.squashfs.tar.gz"
3839+
3840+
[["OCaml-aarch64-linux-gnu.v5.3.0.x86_64-linux-musl.unpacked"]]
3841+
arch = "x86_64"
3842+
git-tree-sha1 = "2bb7ce55f9eaf7cc3fe78ddf385fbc0a7eaeb346"
3843+
lazy = true
3844+
libc = "musl"
3845+
os = "linux"
3846+
3847+
[["OCaml-aarch64-linux-gnu.v5.3.0.x86_64-linux-musl.unpacked".download]]
3848+
sha256 = "0408b92a81b6c374c82750c609d435e2fe71a5e2aff264d4eaad2c978166cb70"
3849+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.3.0/OCaml-aarch64-linux-gnu.v5.3.0.x86_64-linux-musl.unpacked.tar.gz"
3850+
3851+
[["OCaml-aarch64-linux-musl.v5.3.0.x86_64-linux-musl.squashfs"]]
3852+
arch = "x86_64"
3853+
git-tree-sha1 = "f001442241dcb6e4fcb81f56c3045005d188bdb1"
3854+
lazy = true
3855+
libc = "musl"
3856+
os = "linux"
3857+
3858+
[["OCaml-aarch64-linux-musl.v5.3.0.x86_64-linux-musl.squashfs".download]]
3859+
sha256 = "950a5e9ccfa53e653b17119ca19c0b1c16366573ba170e9e18dda83436f62339"
3860+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.3.0/OCaml-aarch64-linux-musl.v5.3.0.x86_64-linux-musl.squashfs.tar.gz"
3861+
3862+
[["OCaml-aarch64-linux-musl.v5.3.0.x86_64-linux-musl.unpacked"]]
3863+
arch = "x86_64"
3864+
git-tree-sha1 = "d760ad80581202684b74fe08e385dc7bfc4cbf55"
3865+
lazy = true
3866+
libc = "musl"
3867+
os = "linux"
3868+
3869+
[["OCaml-aarch64-linux-musl.v5.3.0.x86_64-linux-musl.unpacked".download]]
3870+
sha256 = "86a02c44357fce9aa0fd3ae704aca404ffbfe8aa5096040e82c4f81a98f3cf54"
3871+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.3.0/OCaml-aarch64-linux-musl.v5.3.0.x86_64-linux-musl.unpacked.tar.gz"
3872+
3873+
[["OCaml-powerpc64le-linux-gnu.v5.3.0.x86_64-linux-musl.squashfs"]]
3874+
arch = "x86_64"
3875+
git-tree-sha1 = "8d0e51df93d6f19d4fa092616ad0d1bba44e6321"
3876+
lazy = true
3877+
libc = "musl"
3878+
os = "linux"
3879+
3880+
[["OCaml-powerpc64le-linux-gnu.v5.3.0.x86_64-linux-musl.squashfs".download]]
3881+
sha256 = "91d54e9c4fc66ceed17ce76c06e68f5ee234cf365eb46a8b494ebeaf780abd42"
3882+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.3.0/OCaml-powerpc64le-linux-gnu.v5.3.0.x86_64-linux-musl.squashfs.tar.gz"
3883+
3884+
[["OCaml-powerpc64le-linux-gnu.v5.3.0.x86_64-linux-musl.unpacked"]]
3885+
arch = "x86_64"
3886+
git-tree-sha1 = "71d4a8da70c5418ad77446bf48a0ca31430b289d"
3887+
lazy = true
3888+
libc = "musl"
3889+
os = "linux"
3890+
3891+
[["OCaml-powerpc64le-linux-gnu.v5.3.0.x86_64-linux-musl.unpacked".download]]
3892+
sha256 = "ca08d8deacde4ce1eabc71fe7c10920cec9de4fdec64b5a2b8d4d20b35b1d3b9"
3893+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.3.0/OCaml-powerpc64le-linux-gnu.v5.3.0.x86_64-linux-musl.unpacked.tar.gz"
3894+
3895+
[["OCaml-riscv64-linux-gnu.v5.3.0.x86_64-linux-musl.squashfs"]]
3896+
arch = "x86_64"
3897+
git-tree-sha1 = "fd3ab1cf7b516ffc7697325c005ef3e30c55066b"
3898+
lazy = true
3899+
libc = "musl"
3900+
os = "linux"
3901+
3902+
[["OCaml-riscv64-linux-gnu.v5.3.0.x86_64-linux-musl.squashfs".download]]
3903+
sha256 = "48042269b5424b5c9ed8d6ce4ef5edc1603f6373f3caad27ec7f7475931ce7bc"
3904+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.3.0/OCaml-riscv64-linux-gnu.v5.3.0.x86_64-linux-musl.squashfs.tar.gz"
3905+
3906+
[["OCaml-riscv64-linux-gnu.v5.3.0.x86_64-linux-musl.unpacked"]]
3907+
arch = "x86_64"
3908+
git-tree-sha1 = "16d513ff9b195ed74062b2572896834c90e1631c"
3909+
lazy = true
3910+
libc = "musl"
3911+
os = "linux"
3912+
3913+
[["OCaml-riscv64-linux-gnu.v5.3.0.x86_64-linux-musl.unpacked".download]]
3914+
sha256 = "9b99f266e168cc0f2f2d36914de71dadf46fc5ca073b16e84db3572349c43570"
3915+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.3.0/OCaml-riscv64-linux-gnu.v5.3.0.x86_64-linux-musl.unpacked.tar.gz"
3916+
3917+
[["OCaml-riscv64-linux-musl.v5.3.0.x86_64-linux-musl.squashfs"]]
3918+
arch = "x86_64"
3919+
git-tree-sha1 = "a49b65a2551251a2c9546ce17c00111628e0232f"
3920+
lazy = true
3921+
libc = "musl"
3922+
os = "linux"
3923+
3924+
[["OCaml-riscv64-linux-musl.v5.3.0.x86_64-linux-musl.squashfs".download]]
3925+
sha256 = "3485bc17d146a9ac45d0f4f1801e88141151cd93e7265862ed04a46458cde4ba"
3926+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.3.0/OCaml-riscv64-linux-musl.v5.3.0.x86_64-linux-musl.squashfs.tar.gz"
3927+
3928+
[["OCaml-riscv64-linux-musl.v5.3.0.x86_64-linux-musl.unpacked"]]
3929+
arch = "x86_64"
3930+
git-tree-sha1 = "ae032556d4797b288b7aeb6578ba9978f7d6447e"
3931+
lazy = true
3932+
libc = "musl"
3933+
os = "linux"
3934+
3935+
[["OCaml-riscv64-linux-musl.v5.3.0.x86_64-linux-musl.unpacked".download]]
3936+
sha256 = "9fab3376a84b966232ae8c735e9572f1f5d606ce2a5675c49dcc6c48b0df5efb"
3937+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.3.0/OCaml-riscv64-linux-musl.v5.3.0.x86_64-linux-musl.unpacked.tar.gz"
3938+
3939+
[["OCaml-x86_64-apple-darwin14.v5.3.0.x86_64-linux-musl.squashfs"]]
3940+
arch = "x86_64"
3941+
git-tree-sha1 = "3c7f6936c0a409a01ec2d29bc2882907f22fa07f"
3942+
lazy = true
3943+
libc = "musl"
3944+
os = "linux"
3945+
3946+
[["OCaml-x86_64-apple-darwin14.v5.3.0.x86_64-linux-musl.squashfs".download]]
3947+
sha256 = "1c4331908bb6ea8490d4aeb0d592cc2b3b67ba459f4693e8c4226745329e2a44"
3948+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.3.0/OCaml-x86_64-apple-darwin14.v5.3.0.x86_64-linux-musl.squashfs.tar.gz"
3949+
3950+
[["OCaml-x86_64-apple-darwin14.v5.3.0.x86_64-linux-musl.unpacked"]]
3951+
arch = "x86_64"
3952+
git-tree-sha1 = "412284d0501f7ff4183fabe4b01b42f9349595e7"
3953+
lazy = true
3954+
libc = "musl"
3955+
os = "linux"
3956+
3957+
[["OCaml-x86_64-apple-darwin14.v5.3.0.x86_64-linux-musl.unpacked".download]]
3958+
sha256 = "7571f9dc92e9e2090dae015e5ca3a61caab6ff5028649e4efe8bd4057b1ee0c1"
3959+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.3.0/OCaml-x86_64-apple-darwin14.v5.3.0.x86_64-linux-musl.unpacked.tar.gz"
3960+
3961+
[["OCaml-x86_64-linux-gnu.v5.3.0.x86_64-linux-musl.squashfs"]]
3962+
arch = "x86_64"
3963+
git-tree-sha1 = "d35c3c1e7d3dc49fd6c03bdd78a15559f7e8d932"
3964+
lazy = true
3965+
libc = "musl"
3966+
os = "linux"
3967+
3968+
[["OCaml-x86_64-linux-gnu.v5.3.0.x86_64-linux-musl.squashfs".download]]
3969+
sha256 = "3d05abc56c24b5af7f7eb42f3d62d88b9057d439af92be8d1b3435cb22ca180e"
3970+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.3.0/OCaml-x86_64-linux-gnu.v5.3.0.x86_64-linux-musl.squashfs.tar.gz"
3971+
3972+
[["OCaml-x86_64-linux-gnu.v5.3.0.x86_64-linux-musl.unpacked"]]
3973+
arch = "x86_64"
3974+
git-tree-sha1 = "85a95ad17a577a13405d85676bfc47a3c8211848"
3975+
lazy = true
3976+
libc = "musl"
3977+
os = "linux"
3978+
3979+
[["OCaml-x86_64-linux-gnu.v5.3.0.x86_64-linux-musl.unpacked".download]]
3980+
sha256 = "38addd3152cab4d9fb23421fe6185c5c5fed7690c38e4419d43c390307395cc3"
3981+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.3.0/OCaml-x86_64-linux-gnu.v5.3.0.x86_64-linux-musl.unpacked.tar.gz"
3982+
3983+
[["OCaml-x86_64-linux-musl.v5.3.0.x86_64-linux-musl.squashfs"]]
3984+
arch = "x86_64"
3985+
git-tree-sha1 = "895e83f0c14bc290624619f3ca799b93e65707ef"
3986+
lazy = true
3987+
libc = "musl"
3988+
os = "linux"
3989+
3990+
[["OCaml-x86_64-linux-musl.v5.3.0.x86_64-linux-musl.squashfs".download]]
3991+
sha256 = "d695204156d486002c7ab5d144a7a2f481927522ef4860a721920e3e9d984ecc"
3992+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.3.0/OCaml-x86_64-linux-musl.v5.3.0.x86_64-linux-musl.squashfs.tar.gz"
3993+
3994+
[["OCaml-x86_64-linux-musl.v5.3.0.x86_64-linux-musl.unpacked"]]
3995+
arch = "x86_64"
3996+
git-tree-sha1 = "8e1897ce320de751abd342f1bd52f1f6078ce895"
3997+
lazy = true
3998+
libc = "musl"
3999+
os = "linux"
4000+
4001+
[["OCaml-x86_64-linux-musl.v5.3.0.x86_64-linux-musl.unpacked".download]]
4002+
sha256 = "8333a5f9ed3cb1e7f188bbaa777378ef5c218bcec1c5e300ec7a39cc2e34c738"
4003+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.3.0/OCaml-x86_64-linux-musl.v5.3.0.x86_64-linux-musl.unpacked.tar.gz"
4004+
4005+
[["OCaml-x86_64-w64-mingw32.v5.3.0.x86_64-linux-musl.squashfs"]]
4006+
arch = "x86_64"
4007+
git-tree-sha1 = "539ad8304485169066d00a022763c02306258c8b"
4008+
lazy = true
4009+
libc = "musl"
4010+
os = "linux"
4011+
4012+
[["OCaml-x86_64-w64-mingw32.v5.3.0.x86_64-linux-musl.squashfs".download]]
4013+
sha256 = "45c2bfaf674be1d8d9fc297c4c95a1035d834363df99e854825d15c31c93d502"
4014+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.3.0/OCaml-x86_64-w64-mingw32.v5.3.0.x86_64-linux-musl.squashfs.tar.gz"
4015+
4016+
[["OCaml-x86_64-w64-mingw32.v5.3.0.x86_64-linux-musl.unpacked"]]
4017+
arch = "x86_64"
4018+
git-tree-sha1 = "5fe39d6ccd8f3431e52c689bb0336d8286269668"
4019+
lazy = true
4020+
libc = "musl"
4021+
os = "linux"
4022+
4023+
[["OCaml-x86_64-w64-mingw32.v5.3.0.x86_64-linux-musl.unpacked".download]]
4024+
sha256 = "6d7d26a3302110a58a9c57aa472bbff9a26d7c271fede770f9ca89e0bf7f4ddf"
4025+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.3.0/OCaml-x86_64-w64-mingw32.v5.3.0.x86_64-linux-musl.unpacked.tar.gz"
4026+
38074027
[["PlatformSupport-aarch64-apple-darwin20.v2021.8.10.x86_64-linux-musl.squashfs"]]
38084028
arch = "x86_64"
38094029
git-tree-sha1 = "e99cd089f71d5d9605621ba7dd6d32994bba3de8"
@@ -5168,27 +5388,27 @@ os = "linux"
51685388
sha256 = "52cc47c4b37c7c71b1deb54de47ab4faad4131fa2a0df8e068f29c76457e4962"
51695389
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/PlatformSupport-v2025.2.15/PlatformSupport-x86_64-w64-mingw32.v2025.2.15.x86_64-linux-musl.unpacked.tar.gz"
51705390

5171-
[["Rootfs.v2024.3.29.x86_64-linux-musl.squashfs"]]
5391+
[["Rootfs.v2025.7.4.x86_64-linux-musl.squashfs"]]
51725392
arch = "x86_64"
5173-
git-tree-sha1 = "cd7eb75d02dc550a4b95ead30b531348f27e0dbe"
5393+
git-tree-sha1 = "68d66eaf3d8ed99afea82229e16ce9eda2b454da"
51745394
lazy = true
51755395
libc = "musl"
51765396
os = "linux"
51775397

5178-
[["Rootfs.v2024.3.29.x86_64-linux-musl.squashfs".download]]
5179-
sha256 = "7aff4bdc3d4fc451e8bfc29db0efc06a68a426321e23aea96364f3829ffb7a9c"
5180-
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/Rootfs-v2024.3.29/Rootfs.v2024.3.29.x86_64-linux-musl.squashfs.tar.gz"
5398+
[["Rootfs.v2025.7.4.x86_64-linux-musl.squashfs".download]]
5399+
sha256 = "303aa5972b7b5b92838de6d20208fcbce26dfc1ed41328cba8c78cd5b9fb7b30"
5400+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/Rootfs-v2025.7.4/Rootfs.v2025.7.4.x86_64-linux-musl.squashfs.tar.gz"
51815401

5182-
[["Rootfs.v2024.3.29.x86_64-linux-musl.unpacked"]]
5402+
[["Rootfs.v2025.7.4.x86_64-linux-musl.unpacked"]]
51835403
arch = "x86_64"
5184-
git-tree-sha1 = "73b10e7f9f6b94c9754056030a3adbcf64bf5b90"
5404+
git-tree-sha1 = "e8c56f9c44dbe45e2f378f5b44bf8e81190c3e62"
51855405
lazy = true
51865406
libc = "musl"
51875407
os = "linux"
51885408

5189-
[["Rootfs.v2024.3.29.x86_64-linux-musl.unpacked".download]]
5190-
sha256 = "f51e2d7defe0979abff04e024f75d75d1ef18da9cc9813dbfd5deb8701b8cf7f"
5191-
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/Rootfs-v2024.3.29/Rootfs.v2024.3.29.x86_64-linux-musl.unpacked.tar.gz"
5409+
[["Rootfs.v2025.7.4.x86_64-linux-musl.unpacked".download]]
5410+
sha256 = "b0e3353902e74394387311cb3122a1856704c35257acf9bb39268860f7a77df6"
5411+
url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/Rootfs-v2025.7.4/Rootfs.v2025.7.4.x86_64-linux-musl.unpacked.tar.gz"
51925412

51935413
[["RustBase.v1.57.0.x86_64-linux-musl.squashfs"]]
51945414
arch = "x86_64"

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "BinaryBuilderBase"
22
uuid = "7f725544-6523-48cd-82d1-3fa08ff4056e"
33
authors = ["Elliot Saba <staticfloat@gmail.com>"]
4-
version = "1.37.0"
4+
version = "1.38.0"
55

66
[deps]
77
Bzip2_jll = "6e34b625-4abd-537c-b88f-471c36dfa7a0"

src/Rootfs.jl

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,10 @@ struct RustBuild <: CompilerBuild
383383
version::VersionNumber
384384
end
385385

386+
struct OCamlBuild <: CompilerBuild
387+
version::VersionNumber
388+
end
389+
386390
getversion(c::CompilerBuild) = c.version
387391
getabi(c::CompilerBuild) = c.abi
388392

@@ -418,6 +422,8 @@ const available_go_builds = GoBuild.(get_available_builds("Go."))
418422

419423
const available_rust_builds = RustBuild.(get_available_builds("RustBase."))
420424

425+
const available_ocaml_builds = OCamlBuild.(get_available_builds("OCaml-"))
426+
421427
"""
422428
gcc_version(p::AbstractPlatform, GCC_builds::Vector{GCCBuild},
423429
compilers::Vector{Symbol}=[:c];
@@ -586,11 +592,12 @@ function choose_shards(p::AbstractPlatform;
586592
LLVM_builds::Vector{LLVMBuild}=available_llvm_builds,
587593
Rust_builds::Vector{RustBuild}=available_rust_builds,
588594
Go_builds::Vector{GoBuild}=available_go_builds,
595+
OCaml_builds::Vector{OCamlBuild}=available_ocaml_builds,
589596
archive_type::Symbol = (use_squashfs[] ? :squashfs : :unpacked),
590597
bootstrap_list::Vector{Symbol} = bootstrap_list,
591598
# Because GCC has lots of compatibility issues, we always default to
592599
# the earliest version possible.
593-
preferred_gcc_version::VersionNumber = getversion(GCC_builds[1]),
600+
preferred_gcc_version::Union{Nothing,VersionNumber} = nothing,
594601
# Because LLVM doesn't have compatibility issues, we always default
595602
# to the newest version possible.
596603
preferred_llvm_version::VersionNumber = getversion(LLVM_builds[end]),
@@ -599,8 +606,21 @@ function choose_shards(p::AbstractPlatform;
599606
preferred_rust_version::VersionNumber = maximum(getversion.(Rust_builds)),
600607
# Always default to the latest Go version
601608
preferred_go_version::VersionNumber = maximum(getversion.(Go_builds)),
609+
# Always default to the latest OCaml version
610+
preferred_ocaml_version::VersionNumber = maximum(getversion.(OCaml_builds)),
602611
)
603612

613+
# The preferred GCC version depends on the compilers we are using.
614+
if preferred_gcc_version === nothing
615+
preferred_gcc_version = if :ocaml in compilers
616+
# OCaml shards have been compiled agains GCC 6
617+
compatible_gcc_builds = filter(b -> getversion(b) >= v"6", GCC_builds)
618+
getversion(compatible_gcc_builds[1])
619+
else
620+
getversion(GCC_builds[1])
621+
end
622+
end
623+
604624
function find_shard(name, version, archive_type; target = nothing)
605625
# aarch64-apple-darwin is a special platform because it has a single GCCBootstrap
606626
# with a version number different from any other platforms: match this shard with a
@@ -713,6 +733,25 @@ function choose_shards(p::AbstractPlatform;
713733

714734
push!(shards, find_shard("Go", Go_build, archive_type))
715735
end
736+
737+
if :ocaml in compilers
738+
# Make sure the selected OCaml toolchain version is available
739+
if preferred_ocaml_version in getversion.(OCaml_builds)
740+
OCaml_build = preferred_ocaml_version
741+
else
742+
error("Requested OCaml toolchain $(preferred_ocaml_version) not available in $(OCaml_builds)")
743+
end
744+
745+
# Add a host-native shard, which we often need to bootstrap
746+
push!(shards, find_shard("OCaml", OCaml_build, archive_type;
747+
target=default_host_platform))
748+
749+
# If needed, add a cross-compiling target shard
750+
if !isa(p, AnyPlatform) && !platforms_match(p, default_host_platform)
751+
push!(shards, find_shard("OCaml", OCaml_build, archive_type;
752+
target=p))
753+
end
754+
end
716755
else
717756
function find_latest_version(name)
718757
versions = [cs.version for cs in all_compiler_shards()

0 commit comments

Comments
 (0)