From 2d9be45fef0660620cb18afd12fc80481d550d72 Mon Sep 17 00:00:00 2001 From: Cody Tapscott Date: Thu, 8 May 2025 19:54:55 -0400 Subject: [PATCH 01/18] Implement OCaml compiler support --- Artifacts.toml | 154 ++++++++++++++++++++++++++++++++++++++++++++++++ src/Rootfs.jl | 21 +++++++ src/Runner.jl | 29 +++++++++ test/rootfs.jl | 10 ++++ test/runners.jl | 21 +++++++ 5 files changed, 235 insertions(+) diff --git a/Artifacts.toml b/Artifacts.toml index 5390ee80..c41e2b88 100644 --- a/Artifacts.toml +++ b/Artifacts.toml @@ -3804,6 +3804,160 @@ os = "linux" sha256 = "80c9869b8421b7efdba72f13ec2c24c7ef77b533ad75d8c72739a312adcaef75" url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/LLVMBootstrap-v9.0.1+0/LLVMBootstrap.v9.0.1.x86_64-linux-musl.unpacked.tar.gz" +[["OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs"]] +arch = "x86_64" +git-tree-sha1 = "1f9faa347127cf618ef813b387d721e8af22c276" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs".download]] + sha256 = "ac11194f566997f6da4a86ef39e9e28e57d33884e8467b7a48555b84797e0ee2" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + +[["OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked"]] +arch = "x86_64" +git-tree-sha1 = "9f0d650ccbd8200284ec7bb8100cc4c6ce44ca2c" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked".download]] + sha256 = "8d1c3c9fdb01159c22380ff8b0178813b9b26adf78873ac970e56580fbe11037" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + +[["OCaml-aarch64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs"]] +arch = "x86_64" +git-tree-sha1 = "43825a0f78b3cd4537bc7450e0b9d0ca9dab2468" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-aarch64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs".download]] + sha256 = "cac028a1fec129df5ca919a1c978f5333a3673025c523ffb34e3b3a67c4208c6" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + +[["OCaml-aarch64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked"]] +arch = "x86_64" +git-tree-sha1 = "8e050f2038df590797f3f69f158534324f7ce2c9" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-aarch64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked".download]] + sha256 = "2b15cde9b66c82e4da4ec336566fb162f6bfae9d0c5187e1d23e8335de549c30" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + +[["OCaml-aarch64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs"]] +arch = "x86_64" +git-tree-sha1 = "c27e000b6061db267d69bb554142a6036b1a1883" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-aarch64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs".download]] + sha256 = "7352645dc52064131f9fc20d3c8db8708400bf1b9737701339cc4b3f7febf02b" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + +[["OCaml-aarch64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked"]] +arch = "x86_64" +git-tree-sha1 = "10b7c45f5cdc390b07ac18f6de7b773bc6303070" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-aarch64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked".download]] + sha256 = "b3327ffe3525604f2793ab07b823ca70fcd73e0b97af733d98ccda0e0fc8f680" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + +[["OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs"]] +arch = "x86_64" +git-tree-sha1 = "ac1a2a8809bde935390af5d6e0681c68a00a4db1" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs".download]] + sha256 = "2a4b7d421a203e217e99034f804f46c5e3c564671bafc172eecc711e4f382726" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + +[["OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked"]] +arch = "x86_64" +git-tree-sha1 = "1ba0493deaa6ec2b3d1b468ef1cdd633af6e9ab1" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked".download]] + sha256 = "0d824d99193c18b1ff6380a128605bd0237d6ed5f771ca6948ac0c796d302bd2" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + +[["OCaml-x86_64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs"]] +arch = "x86_64" +git-tree-sha1 = "81ee49ddc2991943d42f5f958117b9a12e6d8542" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-x86_64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs".download]] + sha256 = "f0e5b04a1beb69bcaab12289e5bc7237e14d8520c8b66edf0b8f90eda828b24e" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + +[["OCaml-x86_64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked"]] +arch = "x86_64" +git-tree-sha1 = "adfa663e0cf79e8fa40afb1dfa3d5f2b13c144ed" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-x86_64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked".download]] + sha256 = "57f6bbe7af42ef089809fc50b5881f4c8c6c5216813c455b8319b753b60d1b40" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + +[["OCaml-x86_64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs"]] +arch = "x86_64" +git-tree-sha1 = "e09f0e9d114794327a1d16f18fca33fbf9dac98b" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-x86_64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs".download]] + sha256 = "296cebca96f8e045292730426c5c3baab3a8785ad9a9c5d4c7638e63f556c71a" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + +[["OCaml-x86_64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked"]] +arch = "x86_64" +git-tree-sha1 = "3b6ebd3c7d07a6eb2980d559c17f94ff921fa510" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-x86_64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked".download]] + sha256 = "ebf316f8c81be0c74439be1ec45d0ebc4c42b8303487d6bb3136f6e64ecc2ee9" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + +[["OCaml-x86_64-w64-mingw32.v5.4.0.x86_64-linux-musl.squashfs"]] +arch = "x86_64" +git-tree-sha1 = "85b2f93bedd5a49457a508522c9184221a85494b" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-x86_64-w64-mingw32.v5.4.0.x86_64-linux-musl.squashfs".download]] + sha256 = "b7b4c0a802cd17a2f315186ac102318273fe044ae1c4a829ff01d7fa054d57fa" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-w64-mingw32.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + +[["OCaml-x86_64-w64-mingw32.v5.4.0.x86_64-linux-musl.unpacked"]] +arch = "x86_64" +git-tree-sha1 = "d49567a0c987074f9d3509c63ca73cce5b3512a0" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-x86_64-w64-mingw32.v5.4.0.x86_64-linux-musl.unpacked".download]] + sha256 = "c35291496ff5f9d17abbc7182d0a835857a9ee5012b2d1c08421469e7a0bb9ef" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-w64-mingw32.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + [["PlatformSupport-aarch64-apple-darwin20.v2021.8.10.x86_64-linux-musl.squashfs"]] arch = "x86_64" git-tree-sha1 = "e99cd089f71d5d9605621ba7dd6d32994bba3de8" diff --git a/src/Rootfs.jl b/src/Rootfs.jl index 395b7853..74257ab4 100644 --- a/src/Rootfs.jl +++ b/src/Rootfs.jl @@ -383,6 +383,10 @@ struct RustBuild <: CompilerBuild version::VersionNumber end +struct OCamlBuild <: CompilerBuild + version::VersionNumber +end + getversion(c::CompilerBuild) = c.version getabi(c::CompilerBuild) = c.abi @@ -418,6 +422,8 @@ const available_go_builds = GoBuild.(get_available_builds("Go.")) const available_rust_builds = RustBuild.(get_available_builds("RustBase.")) +const available_ocaml_builds = OCamlBuild.(get_available_builds("OCaml-")) + """ gcc_version(p::AbstractPlatform, GCC_builds::Vector{GCCBuild}, compilers::Vector{Symbol}=[:c]; @@ -586,6 +592,7 @@ function choose_shards(p::AbstractPlatform; LLVM_builds::Vector{LLVMBuild}=available_llvm_builds, Rust_builds::Vector{RustBuild}=available_rust_builds, Go_builds::Vector{GoBuild}=available_go_builds, + OCaml_builds::Vector{OCamlBuild}=available_ocaml_builds, archive_type::Symbol = (use_squashfs[] ? :squashfs : :unpacked), bootstrap_list::Vector{Symbol} = bootstrap_list, # Because GCC has lots of compatibility issues, we always default to @@ -599,6 +606,8 @@ function choose_shards(p::AbstractPlatform; preferred_rust_version::VersionNumber = maximum(getversion.(Rust_builds)), # Always default to the latest Go version preferred_go_version::VersionNumber = maximum(getversion.(Go_builds)), + # Always default to the latest OCaml version + preferred_ocaml_version::VersionNumber = maximum(getversion.(OCaml_builds)), ) function find_shard(name, version, archive_type; target = nothing) @@ -713,6 +722,18 @@ function choose_shards(p::AbstractPlatform; push!(shards, find_shard("Go", Go_build, archive_type)) end + + if :ocaml in compilers + # Make sure the selected OCaml toolchain version is available + if preferred_ocaml_version in getversion.(OCaml_builds) + OCaml_build = preferred_ocaml_version + else + error("Requested OCaml toolchain $(preferred_ocaml_version) not available in $(OCaml_builds)") + end + + push!(shards, find_shard("OCaml", OCaml_build, archive_type; + target = isa(p, AnyPlatform) ? default_host_platform : p)) + end else function find_latest_version(name) versions = [cs.version for cs in all_compiler_shards() diff --git a/src/Runner.jl b/src/Runner.jl index 183618aa..5c0be7c5 100644 --- a/src/Runner.jl +++ b/src/Runner.jl @@ -729,6 +729,14 @@ function generate_compiler_wrappers!(platform::AbstractPlatform; bin_path::Abstr end gofmt(io::IO, p::AbstractPlatform) = wrapper(io, "/opt/$(host_target)/go/bin/gofmt"; allow_ccache=false) + # OCaml stuff + function ocaml_wrapper(io::IO, tool::String, p::AbstractPlatform) + return wrapper(io, "/opt/$(aatriplet(p))/bin/$(tool)") + end + ocamlc(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "ocamlc.opt", p) + ocamlopt(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "ocamlopt.opt", p) + flexlink(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "flexlink", p) + # Rust stuff function rust_flags!(p::AbstractPlatform, flags::Vector{String} = String[]) if Sys.islinux(p) @@ -966,6 +974,16 @@ function generate_compiler_wrappers!(platform::AbstractPlatform; bin_path::Abstr end end + # Generate OCaml stuff + if :ocaml in compilers + write_wrapper(ocamlc, p, "$(t)-ocamlc.opt") + write_wrapper(ocamlopt, p, "$(t)-ocamlopt.opt") + + if Sys.iswindows(p) + write_wrapper(flexlink, p, "$(t)-flexlink") + end + end + # Generate go stuff if :go in compilers write_wrapper(go, p, "$(t)-go") @@ -1012,6 +1030,12 @@ function generate_compiler_wrappers!(platform::AbstractPlatform; bin_path::Abstr if :rust in compilers append!(default_tools, ("rustc","rustup","cargo")) end + if :ocaml in compilers + append!(default_tools, ("ocamlc.opt", "ocamlopt.opt")) + if Sys.iswindows(platform) + push!(default_tools, "flexlink") + end + end if :go in compilers append!(default_tools, ("go", "gofmt")) end @@ -1269,6 +1293,11 @@ function platform_envs(platform::AbstractPlatform, src_name::AbstractString; )) end + # OCaml stuff + if :ocaml in compilers + # no environment variables required (yet) + end + # Rust stuff if :rust in compilers merge!(mapping, Dict( diff --git a/test/rootfs.jl b/test/rootfs.jl index dd9e98c1..9267185b 100644 --- a/test/rootfs.jl +++ b/test/rootfs.jl @@ -138,6 +138,16 @@ end @test_throws ErrorException choose_shards(platform; preferred_go_version = v"1.14", (common_opts)...) end + @testset "OCaml toolchain selection" begin + platform = Platform("x86_64", "linux") + common_opts = (preferred_gcc_version=v"9", compilers=[:c, :ocaml]) + + shards = choose_shards(platform; preferred_ocaml_version = v"5.4", (common_opts)... ) + @test filter(s-> s.name == "OCaml", shards)[end].version == v"5.4" + + @test_throws ErrorException choose_shards(platform; preferred_ocaml_version = v"4.1", (common_opts)...) + end + @testset "GCC ABI matching" begin # Preferred libgfortran version and C++ string ABI platform = Platform("x86_64", "freebsd") diff --git a/test/runners.jl b/test/runners.jl index 7a12eb05..18ec886c 100644 --- a/test/runners.jl +++ b/test/runners.jl @@ -581,4 +581,25 @@ end @test run(ur, `/bin/bash -c "$(test_script)"`, iobuff) end end + @testset "basic program" begin + mktempdir() do dir + compilers = [:c, :ocaml] + ur = preferred_runner()(dir; platform=Platform("x86_64", "linux"; libc="glibc"), preferred_gcc_version=v"5", compilers) + # Make sure the runner platform is concrete even if the requested platform isn't + @test !isnothing(libgfortran_version(ur.platform)) + @test !isnothing(cxxstring_abi(ur.platform)) + iobuff = IOBuffer() + test_script = raw""" + set -e + mkdir -p ${prefix}/bin + echo 'let () = print_endline "hello world"' > hello.ml + ocamlopt -o ${prefix}/bin/hello_world${exeext} hello.ml + install_license /usr/share/licenses/MIT + + # Make sure it runs + ${prefix}/bin/hello_world${exeext} + """ + @test run(ur, `/bin/bash -c "$(test_script)"`, iobuff) + end + end end From a126db94710c07a7437db075e13a4bd46abc2316 Mon Sep 17 00:00:00 2001 From: Cody Tapscott Date: Mon, 12 May 2025 07:09:40 -0400 Subject: [PATCH 02/18] Use `aarch64-apple-darwin20` / `x86_64-apple-darwin14` for shards --- Artifacts.toml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/Artifacts.toml b/Artifacts.toml index c41e2b88..dc361b23 100644 --- a/Artifacts.toml +++ b/Artifacts.toml @@ -3804,27 +3804,27 @@ os = "linux" sha256 = "80c9869b8421b7efdba72f13ec2c24c7ef77b533ad75d8c72739a312adcaef75" url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/LLVMBootstrap-v9.0.1+0/LLVMBootstrap.v9.0.1.x86_64-linux-musl.unpacked.tar.gz" -[["OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs"]] +[["OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "1f9faa347127cf618ef813b387d721e8af22c276" +git-tree-sha1 = "c89112114146d405a3fa393913a6a81aaebd1c89" lazy = true libc = "musl" os = "linux" - [["OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "ac11194f566997f6da4a86ef39e9e28e57d33884e8467b7a48555b84797e0ee2" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + [["OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.squashfs".download]] + sha256 = "ed44e69ff293ce2c222ca2cbdb4dd81ce7526a69c7c5ec9ab9e07211b56ea357" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" -[["OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked"]] +[["OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.unpacked"]] arch = "x86_64" git-tree-sha1 = "9f0d650ccbd8200284ec7bb8100cc4c6ce44ca2c" lazy = true libc = "musl" os = "linux" - [["OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked".download]] + [["OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.unpacked".download]] sha256 = "8d1c3c9fdb01159c22380ff8b0178813b9b26adf78873ac970e56580fbe11037" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" [["OCaml-aarch64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" @@ -3870,27 +3870,27 @@ os = "linux" sha256 = "b3327ffe3525604f2793ab07b823ca70fcd73e0b97af733d98ccda0e0fc8f680" url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" -[["OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs"]] +[["OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "ac1a2a8809bde935390af5d6e0681c68a00a4db1" +git-tree-sha1 = "cb559d35f820a3323742c58912c02c8bb2d87cc1" lazy = true libc = "musl" os = "linux" - [["OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "2a4b7d421a203e217e99034f804f46c5e3c564671bafc172eecc711e4f382726" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + [["OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.squashfs".download]] + sha256 = "4867ca2f6e21d7cf5589b2f1c8bf73e6055e9c417a0b92bf0d842ba8834e337a" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" -[["OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked"]] +[["OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.unpacked"]] arch = "x86_64" git-tree-sha1 = "1ba0493deaa6ec2b3d1b468ef1cdd633af6e9ab1" lazy = true libc = "musl" os = "linux" - [["OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked".download]] + [["OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.unpacked".download]] sha256 = "0d824d99193c18b1ff6380a128605bd0237d6ed5f771ca6948ac0c796d302bd2" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" [["OCaml-x86_64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" From 486d92cf52b31966cff7688210583af02487ef8a Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Fri, 27 Jun 2025 13:49:54 +0200 Subject: [PATCH 03/18] Bump the GCC version when using OCaml. --- src/Rootfs.jl | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Rootfs.jl b/src/Rootfs.jl index 74257ab4..be7b506a 100644 --- a/src/Rootfs.jl +++ b/src/Rootfs.jl @@ -597,7 +597,7 @@ function choose_shards(p::AbstractPlatform; bootstrap_list::Vector{Symbol} = bootstrap_list, # Because GCC has lots of compatibility issues, we always default to # the earliest version possible. - preferred_gcc_version::VersionNumber = getversion(GCC_builds[1]), + preferred_gcc_version::Union{Nothing,VersionNumber} = nothing, # Because LLVM doesn't have compatibility issues, we always default # to the newest version possible. preferred_llvm_version::VersionNumber = getversion(LLVM_builds[end]), @@ -610,6 +610,17 @@ function choose_shards(p::AbstractPlatform; preferred_ocaml_version::VersionNumber = maximum(getversion.(OCaml_builds)), ) + # The preferred GCC version depends on the compilers we are using. + if preferred_gcc_version === nothing + preferred_gcc_version = if :ocaml in compilers + # OCaml shards have been compiled agains GCC 6 + compatible_gcc_builds = filter(b -> getversion(b) >= v"6", GCC_builds) + getversion(compatible_gcc_builds[1]) + else + getversion(GCC_builds[1]) + end + end + function find_shard(name, version, archive_type; target = nothing) # aarch64-apple-darwin is a special platform because it has a single GCCBootstrap # with a version number different from any other platforms: match this shard with a From d893a37755d0a707e52722219d86a4776c6b266e Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Fri, 27 Jun 2025 13:50:06 +0200 Subject: [PATCH 04/18] Add additional OCaml wrappers. --- src/Runner.jl | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Runner.jl b/src/Runner.jl index 5c0be7c5..1f1a9eb2 100644 --- a/src/Runner.jl +++ b/src/Runner.jl @@ -736,6 +736,9 @@ function generate_compiler_wrappers!(platform::AbstractPlatform; bin_path::Abstr ocamlc(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "ocamlc.opt", p) ocamlopt(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "ocamlopt.opt", p) flexlink(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "flexlink", p) + dune(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "dune", p) + ocamlbuild(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "ocamlbuild", p) + opam(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "opam", p) # Rust stuff function rust_flags!(p::AbstractPlatform, flags::Vector{String} = String[]) @@ -982,6 +985,10 @@ function generate_compiler_wrappers!(platform::AbstractPlatform; bin_path::Abstr if Sys.iswindows(p) write_wrapper(flexlink, p, "$(t)-flexlink") end + + write_wrapper(dune, p, "$(t)-dune") + write_wrapper(ocamlbuild, p, "$(t)-ocamlbuild") + write_wrapper(opam, p, "$(t)-opam") end # Generate go stuff @@ -1035,6 +1042,7 @@ function generate_compiler_wrappers!(platform::AbstractPlatform; bin_path::Abstr if Sys.iswindows(platform) push!(default_tools, "flexlink") end + append!(default_tools, ("dune", "ocamlbuild", "opam")) end if :go in compilers append!(default_tools, ("go", "gofmt")) From 0bf0466618625621fe6aab952ec3a792db442269 Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Fri, 27 Jun 2025 14:22:26 +0200 Subject: [PATCH 05/18] Update artifacts. --- Artifacts.toml | 154 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 132 insertions(+), 22 deletions(-) diff --git a/Artifacts.toml b/Artifacts.toml index dc361b23..7c5c1b85 100644 --- a/Artifacts.toml +++ b/Artifacts.toml @@ -3804,6 +3804,28 @@ os = "linux" sha256 = "80c9869b8421b7efdba72f13ec2c24c7ef77b533ad75d8c72739a312adcaef75" url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/LLVMBootstrap-v9.0.1+0/LLVMBootstrap.v9.0.1.x86_64-linux-musl.unpacked.tar.gz" +[["OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs"]] +arch = "x86_64" +git-tree-sha1 = "0fb7f2b055421aa486b77bc88e2f24a475d6da8e" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs".download]] + sha256 = "1acc30f3b896a5f492b493c07e89995e294400722daa6c7a3b04d4dd70bc3c2a" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + +[["OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked"]] +arch = "x86_64" +git-tree-sha1 = "d158b3adb4f15ae9eaaa82cbdee5b1c2edd80c22" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked".download]] + sha256 = "5c7f7f1b2dbf322c243ec24b309ab07962f80423501757601be51aa3047a709c" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + [["OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" git-tree-sha1 = "c89112114146d405a3fa393913a6a81aaebd1c89" @@ -3828,48 +3850,136 @@ os = "linux" [["OCaml-aarch64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "43825a0f78b3cd4537bc7450e0b9d0ca9dab2468" +git-tree-sha1 = "4c92b99878772c11036ac3f3d35613cd0d22a105" lazy = true libc = "musl" os = "linux" [["OCaml-aarch64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "cac028a1fec129df5ca919a1c978f5333a3673025c523ffb34e3b3a67c4208c6" + sha256 = "8c79f86d3d8ea8bf1ca3921286810ad848622375eb76a0a7cc375b6725f087c8" url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" [["OCaml-aarch64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked"]] arch = "x86_64" -git-tree-sha1 = "8e050f2038df590797f3f69f158534324f7ce2c9" +git-tree-sha1 = "16f2000e45cacb3b2c1b25a90eab5b9027814a9b" lazy = true libc = "musl" os = "linux" [["OCaml-aarch64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked".download]] - sha256 = "2b15cde9b66c82e4da4ec336566fb162f6bfae9d0c5187e1d23e8335de549c30" + sha256 = "b4dd597e1cee242a0fa6c4794a9f2335cb9cf53b5244d97e7bb2787aa4479e66" url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" [["OCaml-aarch64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "c27e000b6061db267d69bb554142a6036b1a1883" +git-tree-sha1 = "eb905333bf339d68b06007aeb276eaf0efb692aa" lazy = true libc = "musl" os = "linux" [["OCaml-aarch64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "7352645dc52064131f9fc20d3c8db8708400bf1b9737701339cc4b3f7febf02b" + sha256 = "9369b4798f826970bccb95a1d1365e8691848614bdb9c08f1bee1d419c33ccba" url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" [["OCaml-aarch64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked"]] arch = "x86_64" -git-tree-sha1 = "10b7c45f5cdc390b07ac18f6de7b773bc6303070" +git-tree-sha1 = "9398cc967a856044880290ba1b741a910c813bec" lazy = true libc = "musl" os = "linux" [["OCaml-aarch64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked".download]] - sha256 = "b3327ffe3525604f2793ab07b823ca70fcd73e0b97af733d98ccda0e0fc8f680" + sha256 = "0b9ea6a1335942d96f2ade4a4a43fe758ad5316a3a8bc764d0c4539776a7bc2c" url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" +[["OCaml-powerpc64le-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs"]] +arch = "x86_64" +git-tree-sha1 = "49eefc6b4c91d6c59d60afc456d7083ce356cde5" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-powerpc64le-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs".download]] + sha256 = "506523e90f61442915f7659fd9fb753ce8e017c715b290efa5bd93ec4bc3014c" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-powerpc64le-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + +[["OCaml-powerpc64le-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked"]] +arch = "x86_64" +git-tree-sha1 = "225dca8fd51acf700c95525cc915665e0e4f8d58" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-powerpc64le-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked".download]] + sha256 = "f61f19b9ab2ac48c14a37e17f0f14fcb3859e9b41f4fcfebcbc376122b7c9cda" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-powerpc64le-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + +[["OCaml-riscv64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs"]] +arch = "x86_64" +git-tree-sha1 = "e8e774d2168a2391d47ea911265df3237912a17e" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-riscv64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs".download]] + sha256 = "e20c30f117e55d467f5d3cc0bdd22c559f90463c5882c1ed2c9ba20a8f58dbb8" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-riscv64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + +[["OCaml-riscv64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked"]] +arch = "x86_64" +git-tree-sha1 = "964e9cd1822b50951db2c05939535f589f371105" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-riscv64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked".download]] + sha256 = "63ee68d9f0203e98da8e109829f12ac9487fb7b0a5612d83d89cb816128692e1" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-riscv64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + +[["OCaml-riscv64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs"]] +arch = "x86_64" +git-tree-sha1 = "c18e4bc321203e62ab2fb66e0221f645c001ec58" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-riscv64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs".download]] + sha256 = "c24c752703fd1f8ea8c2652fc7892164cb01a5cb0d05cc4034792b8536207892" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-riscv64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + +[["OCaml-riscv64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked"]] +arch = "x86_64" +git-tree-sha1 = "364cea6c4e086679f7a0b849526f42be9fbc8170" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-riscv64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked".download]] + sha256 = "696f216f1fffa0fda91bcb25e3b43f245eddc7a1eba6e8fb8ca4c1dc2275a3b7" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-riscv64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + +[["OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs"]] +arch = "x86_64" +git-tree-sha1 = "1286e0c9cfd128c0d6dcf218e2ca27281c55569e" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs".download]] + sha256 = "deaec8203f8cec9e407ba83f697cd430df6afebdb57db901401e699ea363bb27" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + +[["OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked"]] +arch = "x86_64" +git-tree-sha1 = "f1348a293134d2739b6dabb034ef9325d8fac81f" +lazy = true +libc = "musl" +os = "linux" + + [["OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked".download]] + sha256 = "980d6d24975b1254b44c37e74a6a193ae83530a29b7f89b2dbd195ead1e7960c" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + [["OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" git-tree-sha1 = "cb559d35f820a3323742c58912c02c8bb2d87cc1" @@ -3894,69 +4004,69 @@ os = "linux" [["OCaml-x86_64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "81ee49ddc2991943d42f5f958117b9a12e6d8542" +git-tree-sha1 = "ace1695c3922d652a76297783d40d000ee8565b2" lazy = true libc = "musl" os = "linux" [["OCaml-x86_64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "f0e5b04a1beb69bcaab12289e5bc7237e14d8520c8b66edf0b8f90eda828b24e" + sha256 = "6ee4429eeb5c0d1fd49012da14deb31af2f2a977ff40e6bdd9fbd00075ed119b" url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" [["OCaml-x86_64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked"]] arch = "x86_64" -git-tree-sha1 = "adfa663e0cf79e8fa40afb1dfa3d5f2b13c144ed" +git-tree-sha1 = "2a35dab4cd616a1b4af521affdda66fc71a1e853" lazy = true libc = "musl" os = "linux" [["OCaml-x86_64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked".download]] - sha256 = "57f6bbe7af42ef089809fc50b5881f4c8c6c5216813c455b8319b753b60d1b40" + sha256 = "dcbdd0fda993695dc0df7a2a5a0b0f051e9f413d8b36df49f12a96cc7af6ef4d" url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" [["OCaml-x86_64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "e09f0e9d114794327a1d16f18fca33fbf9dac98b" +git-tree-sha1 = "831d24ba8d4ab79979e174ab1aa48ac7f15e9344" lazy = true libc = "musl" os = "linux" [["OCaml-x86_64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "296cebca96f8e045292730426c5c3baab3a8785ad9a9c5d4c7638e63f556c71a" + sha256 = "d8499159c52913752dd797369e80aa231b3de16547903e8f27e43a2fcbae5d75" url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" [["OCaml-x86_64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked"]] arch = "x86_64" -git-tree-sha1 = "3b6ebd3c7d07a6eb2980d559c17f94ff921fa510" +git-tree-sha1 = "283fee71290024e3f041139420b1c32fa9b2de26" lazy = true libc = "musl" os = "linux" [["OCaml-x86_64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked".download]] - sha256 = "ebf316f8c81be0c74439be1ec45d0ebc4c42b8303487d6bb3136f6e64ecc2ee9" + sha256 = "8cd963297240fc9d47a246b718a022a8c4c4f5dab13b3244bf306c832e27a57a" url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" [["OCaml-x86_64-w64-mingw32.v5.4.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "85b2f93bedd5a49457a508522c9184221a85494b" +git-tree-sha1 = "d0376ec8d9051da75069b537e492f23d54e757c0" lazy = true libc = "musl" os = "linux" [["OCaml-x86_64-w64-mingw32.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "b7b4c0a802cd17a2f315186ac102318273fe044ae1c4a829ff01d7fa054d57fa" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-w64-mingw32.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + sha256 = "f885c585acd4cc1fef1d4460a4dd31b7c75a67d373d26632b66099457d3d7d19" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0+0/OCaml-x86_64-w64-mingw32.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" [["OCaml-x86_64-w64-mingw32.v5.4.0.x86_64-linux-musl.unpacked"]] arch = "x86_64" -git-tree-sha1 = "d49567a0c987074f9d3509c63ca73cce5b3512a0" +git-tree-sha1 = "94fd8bd51bdf8680bc2ea5880c7955e88019d58c" lazy = true libc = "musl" os = "linux" [["OCaml-x86_64-w64-mingw32.v5.4.0.x86_64-linux-musl.unpacked".download]] - sha256 = "c35291496ff5f9d17abbc7182d0a835857a9ee5012b2d1c08421469e7a0bb9ef" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-w64-mingw32.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + sha256 = "ae373dcc3382fe9dbc80deef2c2f0cc561ee64345361cd6a91a79aa75c126134" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0+0/OCaml-x86_64-w64-mingw32.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" [["PlatformSupport-aarch64-apple-darwin20.v2021.8.10.x86_64-linux-musl.squashfs"]] arch = "x86_64" From d70b1c0f4a91447525dc0abc8bb7e02805dd6e86 Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Fri, 27 Jun 2025 14:44:34 +0200 Subject: [PATCH 06/18] Fix Darwin shards. --- Artifacts.toml | 46 ++++++++++++---------------------------------- 1 file changed, 12 insertions(+), 34 deletions(-) diff --git a/Artifacts.toml b/Artifacts.toml index 7c5c1b85..38e4c8e3 100644 --- a/Artifacts.toml +++ b/Artifacts.toml @@ -3804,49 +3804,27 @@ os = "linux" sha256 = "80c9869b8421b7efdba72f13ec2c24c7ef77b533ad75d8c72739a312adcaef75" url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/LLVMBootstrap-v9.0.1+0/LLVMBootstrap.v9.0.1.x86_64-linux-musl.unpacked.tar.gz" -[["OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs"]] -arch = "x86_64" -git-tree-sha1 = "0fb7f2b055421aa486b77bc88e2f24a475d6da8e" -lazy = true -libc = "musl" -os = "linux" - - [["OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "1acc30f3b896a5f492b493c07e89995e294400722daa6c7a3b04d4dd70bc3c2a" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" - -[["OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked"]] -arch = "x86_64" -git-tree-sha1 = "d158b3adb4f15ae9eaaa82cbdee5b1c2edd80c22" -lazy = true -libc = "musl" -os = "linux" - - [["OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked".download]] - sha256 = "5c7f7f1b2dbf322c243ec24b309ab07962f80423501757601be51aa3047a709c" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" - [["OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "c89112114146d405a3fa393913a6a81aaebd1c89" +git-tree-sha1 = "07f8b6b69fe1b0cb07e398491755335f9b18d315" lazy = true libc = "musl" os = "linux" [["OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "ed44e69ff293ce2c222ca2cbdb4dd81ce7526a69c7c5ec9ab9e07211b56ea357" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + sha256 = "9f1111cb10dac171ced05e141c64ceee8df00818810755e4fccb1a515b2eeddc" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0+0/OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" [["OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.unpacked"]] arch = "x86_64" -git-tree-sha1 = "9f0d650ccbd8200284ec7bb8100cc4c6ce44ca2c" +git-tree-sha1 = "b85f61a66ba2d6eb2b87b1061f78f6841ce47470" lazy = true libc = "musl" os = "linux" [["OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.unpacked".download]] - sha256 = "8d1c3c9fdb01159c22380ff8b0178813b9b26adf78873ac970e56580fbe11037" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + sha256 = "378a13c379f32cfb6431b300d3b193f19122c6cef98f87f93a0556c2ecc0f367" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0+0/OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" [["OCaml-aarch64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" @@ -3982,25 +3960,25 @@ os = "linux" [["OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "cb559d35f820a3323742c58912c02c8bb2d87cc1" +git-tree-sha1 = "4fd4470d73a4cb3052f69d81b58c6be995e4568e" lazy = true libc = "musl" os = "linux" [["OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "4867ca2f6e21d7cf5589b2f1c8bf73e6055e9c417a0b92bf0d842ba8834e337a" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + sha256 = "62cf8d1587c57813bda0db95267d7eba9062e6cb4bcee6d031faf7517450e34c" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0+0/OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" [["OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.unpacked"]] arch = "x86_64" -git-tree-sha1 = "1ba0493deaa6ec2b3d1b468ef1cdd633af6e9ab1" +git-tree-sha1 = "dc4fcca16508ed1d1eec5e2b0bc5b4dd945b6791" lazy = true libc = "musl" os = "linux" [["OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.unpacked".download]] - sha256 = "0d824d99193c18b1ff6380a128605bd0237d6ed5f771ca6948ac0c796d302bd2" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + sha256 = "68e11b31cb66a8cc6244b2c700e95122610d8be55e54f3789331cca53e62613b" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0+0/OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" [["OCaml-x86_64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" From d1531abba83ddef19c752d75144605b61bfd7c08 Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Fri, 27 Jun 2025 15:08:48 +0200 Subject: [PATCH 07/18] Bump the used GCC version. --- test/runners.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/runners.jl b/test/runners.jl index 18ec886c..a13202d3 100644 --- a/test/runners.jl +++ b/test/runners.jl @@ -584,7 +584,7 @@ end @testset "basic program" begin mktempdir() do dir compilers = [:c, :ocaml] - ur = preferred_runner()(dir; platform=Platform("x86_64", "linux"; libc="glibc"), preferred_gcc_version=v"5", compilers) + ur = preferred_runner()(dir; platform=Platform("x86_64", "linux"; libc="glibc"), preferred_gcc_version=v"6", compilers) # Make sure the runner platform is concrete even if the requested platform isn't @test !isnothing(libgfortran_version(ur.platform)) @test !isnothing(cxxstring_abi(ur.platform)) From e3361c66dfc627fd15d64e81003e7c76cc402e66 Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Thu, 3 Jul 2025 11:13:12 +0200 Subject: [PATCH 08/18] Also mount a host shard when requesting OCaml. --- src/Rootfs.jl | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Rootfs.jl b/src/Rootfs.jl index be7b506a..ac9686a8 100644 --- a/src/Rootfs.jl +++ b/src/Rootfs.jl @@ -742,8 +742,15 @@ function choose_shards(p::AbstractPlatform; error("Requested OCaml toolchain $(preferred_ocaml_version) not available in $(OCaml_builds)") end + # Add a host-native shard, which we often need to bootstrap push!(shards, find_shard("OCaml", OCaml_build, archive_type; - target = isa(p, AnyPlatform) ? default_host_platform : p)) + target=default_host_platform)) + + # If needed, add a cross-compiling target shard + if !isa(p, AnyPlatform) && !platforms_match(p, default_host_platform) + push!(shards, find_shard("OCaml", OCaml_build, archive_type; + target=p)) + end end else function find_latest_version(name) From 6dfed709a9427e27573c886104fbd9d1222245c6 Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Thu, 3 Jul 2025 11:13:34 +0200 Subject: [PATCH 09/18] Update list of wrappers. --- src/Runner.jl | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/src/Runner.jl b/src/Runner.jl index 1f1a9eb2..d5f9179d 100644 --- a/src/Runner.jl +++ b/src/Runner.jl @@ -733,12 +733,21 @@ function generate_compiler_wrappers!(platform::AbstractPlatform; bin_path::Abstr function ocaml_wrapper(io::IO, tool::String, p::AbstractPlatform) return wrapper(io, "/opt/$(aatriplet(p))/bin/$(tool)") end - ocamlc(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "ocamlc.opt", p) - ocamlopt(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "ocamlopt.opt", p) + ## cross-tools for the target + ocamlc(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "ocamlc", p) + ocamlopt(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "ocamlopt", p) + ocamldep(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "ocamldep", p) flexlink(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "flexlink", p) - dune(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "dune", p) - ocamlbuild(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "ocamlbuild", p) - opam(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "opam", p) + ocamllex(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "ocamllex", p) + # XXX: ocamlyacc not being a cross tool seems like a bug? + ocamlyacc(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "ocamlyacc", host_platform) + ## native parts of the toolchain + ocaml(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "ocaml", host_platform) + ocamlrun(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "ocamlrun", host_platform) + ## auxiliary tools that are only built for the host + dune(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "dune", host_platform) + ocamlbuild(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "ocamlbuild", host_platform) + ocamlfind(io::IO, p::AbstractPlatform) = ocaml_wrapper(io, "ocamlfind", host_platform) # Rust stuff function rust_flags!(p::AbstractPlatform, flags::Vector{String} = String[]) @@ -979,8 +988,13 @@ function generate_compiler_wrappers!(platform::AbstractPlatform; bin_path::Abstr # Generate OCaml stuff if :ocaml in compilers - write_wrapper(ocamlc, p, "$(t)-ocamlc.opt") - write_wrapper(ocamlopt, p, "$(t)-ocamlopt.opt") + write_wrapper(ocaml, p, "$(t)-ocaml") + write_wrapper(ocamldep, p, "$(t)-ocamldep") + write_wrapper(ocamlc, p, "$(t)-ocamlc") + write_wrapper(ocamlopt, p, "$(t)-ocamlopt") + write_wrapper(ocamlrun, p, "$(t)-ocamlrun") + write_wrapper(ocamlyacc, p, "$(t)-ocamlyacc") + write_wrapper(ocamllex, p, "$(t)-ocamllex") if Sys.iswindows(p) write_wrapper(flexlink, p, "$(t)-flexlink") @@ -988,7 +1002,7 @@ function generate_compiler_wrappers!(platform::AbstractPlatform; bin_path::Abstr write_wrapper(dune, p, "$(t)-dune") write_wrapper(ocamlbuild, p, "$(t)-ocamlbuild") - write_wrapper(opam, p, "$(t)-opam") + write_wrapper(ocamlfind, p, "$(t)-ocamlfind") end # Generate go stuff @@ -1038,11 +1052,11 @@ function generate_compiler_wrappers!(platform::AbstractPlatform; bin_path::Abstr append!(default_tools, ("rustc","rustup","cargo")) end if :ocaml in compilers - append!(default_tools, ("ocamlc.opt", "ocamlopt.opt")) + append!(default_tools, ("ocaml", "ocamldep", "ocamlc", "ocamlopt", "ocamlrun", "ocamlyacc", "ocamllex")) if Sys.iswindows(platform) push!(default_tools, "flexlink") end - append!(default_tools, ("dune", "ocamlbuild", "opam")) + append!(default_tools, ("dune", "ocamlbuild", "ocamlfind")) end if :go in compilers append!(default_tools, ("go", "gofmt")) From f23834664fec6b84ad131c61a3acffab98711807 Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Thu, 3 Jul 2025 11:13:56 +0200 Subject: [PATCH 10/18] Also generate wrappers for the host toolchain. Otherwise it's hard to use gcc without fully specifying it. --- src/Runner.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Runner.jl b/src/Runner.jl index d5f9179d..5f270651 100644 --- a/src/Runner.jl +++ b/src/Runner.jl @@ -1061,9 +1061,10 @@ function generate_compiler_wrappers!(platform::AbstractPlatform; bin_path::Abstr if :go in compilers append!(default_tools, ("go", "gofmt")) end - # Create symlinks for default compiler invocations, invoke target toolchain + # Create symlinks for default compiler invocations for tool in default_tools symlink("$(target)-$(tool)", joinpath(bin_path, triplet(platform), tool)) + symlink("$(host_target)-$(tool)", joinpath(bin_path, triplet(host_platform), tool)) end # Generate other fake system-specific tools. From 4da0a1e7d1a656591cbb0aa47501853f2f17c59c Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Thu, 3 Jul 2025 11:14:11 +0200 Subject: [PATCH 11/18] Set OCAMLLIB in the environment. --- src/Runner.jl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Runner.jl b/src/Runner.jl index 5f270651..27eca1df 100644 --- a/src/Runner.jl +++ b/src/Runner.jl @@ -1318,7 +1318,9 @@ function platform_envs(platform::AbstractPlatform, src_name::AbstractString; # OCaml stuff if :ocaml in compilers - # no environment variables required (yet) + merge!(mapping, Dict( + "OCAMLLIB" => "/opt/$(target)/lib/ocaml", + )) end # Rust stuff From db33683d75f0f1c11a9c8b9d9ed9fdf6128ead44 Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Fri, 4 Jul 2025 13:30:40 +0200 Subject: [PATCH 12/18] Regenerate OCaml 5.3, remove 5.4. --- Artifacts.toml | 222 ++++++++++++++++++++++--------------------------- 1 file changed, 100 insertions(+), 122 deletions(-) diff --git a/Artifacts.toml b/Artifacts.toml index 38e4c8e3..3d13fd93 100644 --- a/Artifacts.toml +++ b/Artifacts.toml @@ -3804,247 +3804,225 @@ os = "linux" sha256 = "80c9869b8421b7efdba72f13ec2c24c7ef77b533ad75d8c72739a312adcaef75" url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/LLVMBootstrap-v9.0.1+0/LLVMBootstrap.v9.0.1.x86_64-linux-musl.unpacked.tar.gz" -[["OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.squashfs"]] +[["OCaml-aarch64-apple-darwin20.v5.3.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "07f8b6b69fe1b0cb07e398491755335f9b18d315" +git-tree-sha1 = "de0550d76f247cac467472ff2a3dbcb0694aa9fe" lazy = true libc = "musl" os = "linux" - [["OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "9f1111cb10dac171ced05e141c64ceee8df00818810755e4fccb1a515b2eeddc" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0+0/OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + [["OCaml-aarch64-apple-darwin20.v5.3.0.x86_64-linux-musl.squashfs".download]] + sha256 = "107cefa839c3f1c94f2e5b30c44e4b4fbb23ebf5487fb32cf20a497981cab593" + 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" -[["OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.unpacked"]] +[["OCaml-aarch64-apple-darwin20.v5.3.0.x86_64-linux-musl.unpacked"]] arch = "x86_64" -git-tree-sha1 = "b85f61a66ba2d6eb2b87b1061f78f6841ce47470" +git-tree-sha1 = "13a51495efeb02b136646c0666a0819613e3de62" lazy = true libc = "musl" os = "linux" - [["OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.unpacked".download]] - sha256 = "378a13c379f32cfb6431b300d3b193f19122c6cef98f87f93a0556c2ecc0f367" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0+0/OCaml-aarch64-apple-darwin20.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + [["OCaml-aarch64-apple-darwin20.v5.3.0.x86_64-linux-musl.unpacked".download]] + sha256 = "655ad7f266a62c4f2f5c8f8465b8c0cb189c73217347d07a24bcca2d0fabbcdb" + 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" -[["OCaml-aarch64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs"]] +[["OCaml-aarch64-linux-gnu.v5.3.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "4c92b99878772c11036ac3f3d35613cd0d22a105" +git-tree-sha1 = "c89ab016353f478ec9bb434e56d9f881afeea968" lazy = true libc = "musl" os = "linux" - [["OCaml-aarch64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "8c79f86d3d8ea8bf1ca3921286810ad848622375eb76a0a7cc375b6725f087c8" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + [["OCaml-aarch64-linux-gnu.v5.3.0.x86_64-linux-musl.squashfs".download]] + sha256 = "7b4af26bda6a425b5439c9a9854487b3fefe09caef482164b7cfa692db4f4296" + 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" -[["OCaml-aarch64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked"]] +[["OCaml-aarch64-linux-gnu.v5.3.0.x86_64-linux-musl.unpacked"]] arch = "x86_64" -git-tree-sha1 = "16f2000e45cacb3b2c1b25a90eab5b9027814a9b" +git-tree-sha1 = "2bb7ce55f9eaf7cc3fe78ddf385fbc0a7eaeb346" lazy = true libc = "musl" os = "linux" - [["OCaml-aarch64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked".download]] - sha256 = "b4dd597e1cee242a0fa6c4794a9f2335cb9cf53b5244d97e7bb2787aa4479e66" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + [["OCaml-aarch64-linux-gnu.v5.3.0.x86_64-linux-musl.unpacked".download]] + sha256 = "0408b92a81b6c374c82750c609d435e2fe71a5e2aff264d4eaad2c978166cb70" + 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" -[["OCaml-aarch64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs"]] +[["OCaml-aarch64-linux-musl.v5.3.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "eb905333bf339d68b06007aeb276eaf0efb692aa" +git-tree-sha1 = "f001442241dcb6e4fcb81f56c3045005d188bdb1" lazy = true libc = "musl" os = "linux" - [["OCaml-aarch64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "9369b4798f826970bccb95a1d1365e8691848614bdb9c08f1bee1d419c33ccba" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + [["OCaml-aarch64-linux-musl.v5.3.0.x86_64-linux-musl.squashfs".download]] + sha256 = "950a5e9ccfa53e653b17119ca19c0b1c16366573ba170e9e18dda83436f62339" + 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" -[["OCaml-aarch64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked"]] +[["OCaml-aarch64-linux-musl.v5.3.0.x86_64-linux-musl.unpacked"]] arch = "x86_64" -git-tree-sha1 = "9398cc967a856044880290ba1b741a910c813bec" +git-tree-sha1 = "d760ad80581202684b74fe08e385dc7bfc4cbf55" lazy = true libc = "musl" os = "linux" - [["OCaml-aarch64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked".download]] - sha256 = "0b9ea6a1335942d96f2ade4a4a43fe758ad5316a3a8bc764d0c4539776a7bc2c" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-aarch64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + [["OCaml-aarch64-linux-musl.v5.3.0.x86_64-linux-musl.unpacked".download]] + sha256 = "86a02c44357fce9aa0fd3ae704aca404ffbfe8aa5096040e82c4f81a98f3cf54" + 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" -[["OCaml-powerpc64le-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs"]] +[["OCaml-powerpc64le-linux-gnu.v5.3.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "49eefc6b4c91d6c59d60afc456d7083ce356cde5" +git-tree-sha1 = "8d0e51df93d6f19d4fa092616ad0d1bba44e6321" lazy = true libc = "musl" os = "linux" - [["OCaml-powerpc64le-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "506523e90f61442915f7659fd9fb753ce8e017c715b290efa5bd93ec4bc3014c" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-powerpc64le-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + [["OCaml-powerpc64le-linux-gnu.v5.3.0.x86_64-linux-musl.squashfs".download]] + sha256 = "91d54e9c4fc66ceed17ce76c06e68f5ee234cf365eb46a8b494ebeaf780abd42" + 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" -[["OCaml-powerpc64le-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked"]] +[["OCaml-powerpc64le-linux-gnu.v5.3.0.x86_64-linux-musl.unpacked"]] arch = "x86_64" -git-tree-sha1 = "225dca8fd51acf700c95525cc915665e0e4f8d58" +git-tree-sha1 = "71d4a8da70c5418ad77446bf48a0ca31430b289d" lazy = true libc = "musl" os = "linux" - [["OCaml-powerpc64le-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked".download]] - sha256 = "f61f19b9ab2ac48c14a37e17f0f14fcb3859e9b41f4fcfebcbc376122b7c9cda" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-powerpc64le-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + [["OCaml-powerpc64le-linux-gnu.v5.3.0.x86_64-linux-musl.unpacked".download]] + sha256 = "ca08d8deacde4ce1eabc71fe7c10920cec9de4fdec64b5a2b8d4d20b35b1d3b9" + 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" -[["OCaml-riscv64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs"]] +[["OCaml-riscv64-linux-gnu.v5.3.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "e8e774d2168a2391d47ea911265df3237912a17e" +git-tree-sha1 = "fd3ab1cf7b516ffc7697325c005ef3e30c55066b" lazy = true libc = "musl" os = "linux" - [["OCaml-riscv64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "e20c30f117e55d467f5d3cc0bdd22c559f90463c5882c1ed2c9ba20a8f58dbb8" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-riscv64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + [["OCaml-riscv64-linux-gnu.v5.3.0.x86_64-linux-musl.squashfs".download]] + sha256 = "48042269b5424b5c9ed8d6ce4ef5edc1603f6373f3caad27ec7f7475931ce7bc" + 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" -[["OCaml-riscv64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked"]] +[["OCaml-riscv64-linux-gnu.v5.3.0.x86_64-linux-musl.unpacked"]] arch = "x86_64" -git-tree-sha1 = "964e9cd1822b50951db2c05939535f589f371105" +git-tree-sha1 = "16d513ff9b195ed74062b2572896834c90e1631c" lazy = true libc = "musl" os = "linux" - [["OCaml-riscv64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked".download]] - sha256 = "63ee68d9f0203e98da8e109829f12ac9487fb7b0a5612d83d89cb816128692e1" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-riscv64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + [["OCaml-riscv64-linux-gnu.v5.3.0.x86_64-linux-musl.unpacked".download]] + sha256 = "9b99f266e168cc0f2f2d36914de71dadf46fc5ca073b16e84db3572349c43570" + 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" -[["OCaml-riscv64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs"]] +[["OCaml-riscv64-linux-musl.v5.3.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "c18e4bc321203e62ab2fb66e0221f645c001ec58" +git-tree-sha1 = "a49b65a2551251a2c9546ce17c00111628e0232f" lazy = true libc = "musl" os = "linux" - [["OCaml-riscv64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "c24c752703fd1f8ea8c2652fc7892164cb01a5cb0d05cc4034792b8536207892" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-riscv64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + [["OCaml-riscv64-linux-musl.v5.3.0.x86_64-linux-musl.squashfs".download]] + sha256 = "3485bc17d146a9ac45d0f4f1801e88141151cd93e7265862ed04a46458cde4ba" + 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" -[["OCaml-riscv64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked"]] +[["OCaml-riscv64-linux-musl.v5.3.0.x86_64-linux-musl.unpacked"]] arch = "x86_64" -git-tree-sha1 = "364cea6c4e086679f7a0b849526f42be9fbc8170" +git-tree-sha1 = "ae032556d4797b288b7aeb6578ba9978f7d6447e" lazy = true libc = "musl" os = "linux" - [["OCaml-riscv64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked".download]] - sha256 = "696f216f1fffa0fda91bcb25e3b43f245eddc7a1eba6e8fb8ca4c1dc2275a3b7" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-riscv64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + [["OCaml-riscv64-linux-musl.v5.3.0.x86_64-linux-musl.unpacked".download]] + sha256 = "9fab3376a84b966232ae8c735e9572f1f5d606ce2a5675c49dcc6c48b0df5efb" + 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" -[["OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs"]] +[["OCaml-x86_64-apple-darwin14.v5.3.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "1286e0c9cfd128c0d6dcf218e2ca27281c55569e" +git-tree-sha1 = "3c7f6936c0a409a01ec2d29bc2882907f22fa07f" lazy = true libc = "musl" os = "linux" - [["OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "deaec8203f8cec9e407ba83f697cd430df6afebdb57db901401e699ea363bb27" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + [["OCaml-x86_64-apple-darwin14.v5.3.0.x86_64-linux-musl.squashfs".download]] + sha256 = "1c4331908bb6ea8490d4aeb0d592cc2b3b67ba459f4693e8c4226745329e2a44" + 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" -[["OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked"]] +[["OCaml-x86_64-apple-darwin14.v5.3.0.x86_64-linux-musl.unpacked"]] arch = "x86_64" -git-tree-sha1 = "f1348a293134d2739b6dabb034ef9325d8fac81f" +git-tree-sha1 = "412284d0501f7ff4183fabe4b01b42f9349595e7" lazy = true libc = "musl" os = "linux" - [["OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked".download]] - sha256 = "980d6d24975b1254b44c37e74a6a193ae83530a29b7f89b2dbd195ead1e7960c" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-apple-darwin.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + [["OCaml-x86_64-apple-darwin14.v5.3.0.x86_64-linux-musl.unpacked".download]] + sha256 = "7571f9dc92e9e2090dae015e5ca3a61caab6ff5028649e4efe8bd4057b1ee0c1" + 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" -[["OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.squashfs"]] +[["OCaml-x86_64-linux-gnu.v5.3.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "4fd4470d73a4cb3052f69d81b58c6be995e4568e" +git-tree-sha1 = "d35c3c1e7d3dc49fd6c03bdd78a15559f7e8d932" lazy = true libc = "musl" os = "linux" - [["OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "62cf8d1587c57813bda0db95267d7eba9062e6cb4bcee6d031faf7517450e34c" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0+0/OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + [["OCaml-x86_64-linux-gnu.v5.3.0.x86_64-linux-musl.squashfs".download]] + sha256 = "3d05abc56c24b5af7f7eb42f3d62d88b9057d439af92be8d1b3435cb22ca180e" + 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" -[["OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.unpacked"]] +[["OCaml-x86_64-linux-gnu.v5.3.0.x86_64-linux-musl.unpacked"]] arch = "x86_64" -git-tree-sha1 = "dc4fcca16508ed1d1eec5e2b0bc5b4dd945b6791" +git-tree-sha1 = "85a95ad17a577a13405d85676bfc47a3c8211848" lazy = true libc = "musl" os = "linux" - [["OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.unpacked".download]] - sha256 = "68e11b31cb66a8cc6244b2c700e95122610d8be55e54f3789331cca53e62613b" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0+0/OCaml-x86_64-apple-darwin14.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + [["OCaml-x86_64-linux-gnu.v5.3.0.x86_64-linux-musl.unpacked".download]] + sha256 = "38addd3152cab4d9fb23421fe6185c5c5fed7690c38e4419d43c390307395cc3" + 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" -[["OCaml-x86_64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs"]] +[["OCaml-x86_64-linux-musl.v5.3.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "ace1695c3922d652a76297783d40d000ee8565b2" +git-tree-sha1 = "895e83f0c14bc290624619f3ca799b93e65707ef" lazy = true libc = "musl" os = "linux" - [["OCaml-x86_64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "6ee4429eeb5c0d1fd49012da14deb31af2f2a977ff40e6bdd9fbd00075ed119b" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-linux-gnu.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + [["OCaml-x86_64-linux-musl.v5.3.0.x86_64-linux-musl.squashfs".download]] + sha256 = "d695204156d486002c7ab5d144a7a2f481927522ef4860a721920e3e9d984ecc" + 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" -[["OCaml-x86_64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked"]] +[["OCaml-x86_64-linux-musl.v5.3.0.x86_64-linux-musl.unpacked"]] arch = "x86_64" -git-tree-sha1 = "2a35dab4cd616a1b4af521affdda66fc71a1e853" +git-tree-sha1 = "8e1897ce320de751abd342f1bd52f1f6078ce895" lazy = true libc = "musl" os = "linux" - [["OCaml-x86_64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked".download]] - sha256 = "dcbdd0fda993695dc0df7a2a5a0b0f051e9f413d8b36df49f12a96cc7af6ef4d" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-linux-gnu.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + [["OCaml-x86_64-linux-musl.v5.3.0.x86_64-linux-musl.unpacked".download]] + sha256 = "8333a5f9ed3cb1e7f188bbaa777378ef5c218bcec1c5e300ec7a39cc2e34c738" + 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" -[["OCaml-x86_64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs"]] +[["OCaml-x86_64-w64-mingw32.v5.3.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "831d24ba8d4ab79979e174ab1aa48ac7f15e9344" +git-tree-sha1 = "539ad8304485169066d00a022763c02306258c8b" lazy = true libc = "musl" os = "linux" - [["OCaml-x86_64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "d8499159c52913752dd797369e80aa231b3de16547903e8f27e43a2fcbae5d75" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-linux-musl.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" + [["OCaml-x86_64-w64-mingw32.v5.3.0.x86_64-linux-musl.squashfs".download]] + sha256 = "45c2bfaf674be1d8d9fc297c4c95a1035d834363df99e854825d15c31c93d502" + 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" -[["OCaml-x86_64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked"]] +[["OCaml-x86_64-w64-mingw32.v5.3.0.x86_64-linux-musl.unpacked"]] arch = "x86_64" -git-tree-sha1 = "283fee71290024e3f041139420b1c32fa9b2de26" +git-tree-sha1 = "5fe39d6ccd8f3431e52c689bb0336d8286269668" lazy = true libc = "musl" os = "linux" - [["OCaml-x86_64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked".download]] - sha256 = "8cd963297240fc9d47a246b718a022a8c4c4f5dab13b3244bf306c832e27a57a" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0/OCaml-x86_64-linux-musl.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" - -[["OCaml-x86_64-w64-mingw32.v5.4.0.x86_64-linux-musl.squashfs"]] -arch = "x86_64" -git-tree-sha1 = "d0376ec8d9051da75069b537e492f23d54e757c0" -lazy = true -libc = "musl" -os = "linux" - - [["OCaml-x86_64-w64-mingw32.v5.4.0.x86_64-linux-musl.squashfs".download]] - sha256 = "f885c585acd4cc1fef1d4460a4dd31b7c75a67d373d26632b66099457d3d7d19" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0+0/OCaml-x86_64-w64-mingw32.v5.4.0.x86_64-linux-musl.squashfs.tar.gz" - -[["OCaml-x86_64-w64-mingw32.v5.4.0.x86_64-linux-musl.unpacked"]] -arch = "x86_64" -git-tree-sha1 = "94fd8bd51bdf8680bc2ea5880c7955e88019d58c" -lazy = true -libc = "musl" -os = "linux" - - [["OCaml-x86_64-w64-mingw32.v5.4.0.x86_64-linux-musl.unpacked".download]] - sha256 = "ae373dcc3382fe9dbc80deef2c2f0cc561ee64345361cd6a91a79aa75c126134" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/OCaml-v5.4.0+0/OCaml-x86_64-w64-mingw32.v5.4.0.x86_64-linux-musl.unpacked.tar.gz" + [["OCaml-x86_64-w64-mingw32.v5.3.0.x86_64-linux-musl.unpacked".download]] + sha256 = "6d7d26a3302110a58a9c57aa472bbff9a26d7c271fede770f9ca89e0bf7f4ddf" + 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" [["PlatformSupport-aarch64-apple-darwin20.v2021.8.10.x86_64-linux-musl.squashfs"]] arch = "x86_64" From dea1d054b011b6237dc583302f572972072e5a69 Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Fri, 4 Jul 2025 13:31:21 +0200 Subject: [PATCH 13/18] Bump RootFS to include OCaml hello_world test. --- Artifacts.toml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Artifacts.toml b/Artifacts.toml index 3d13fd93..ea1e8e39 100644 --- a/Artifacts.toml +++ b/Artifacts.toml @@ -5388,27 +5388,27 @@ os = "linux" sha256 = "52cc47c4b37c7c71b1deb54de47ab4faad4131fa2a0df8e068f29c76457e4962" 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" -[["Rootfs.v2024.3.29.x86_64-linux-musl.squashfs"]] +[["Rootfs.v2025.7.4.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "cd7eb75d02dc550a4b95ead30b531348f27e0dbe" +git-tree-sha1 = "7e74660a66b2914c785c55092fc7bd6adf0ef8b9" lazy = true libc = "musl" os = "linux" - [["Rootfs.v2024.3.29.x86_64-linux-musl.squashfs".download]] - sha256 = "7aff4bdc3d4fc451e8bfc29db0efc06a68a426321e23aea96364f3829ffb7a9c" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/Rootfs-v2024.3.29/Rootfs.v2024.3.29.x86_64-linux-musl.squashfs.tar.gz" + [["Rootfs.v2025.7.4.x86_64-linux-musl.squashfs".download]] + sha256 = "468d5c0fb3a6167171f2464555cd67257f1cdc87bcc0bdab5914208076f5fa8c" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/Rootfs-v2025.7.4/Rootfs.v2025.7.4.x86_64-linux-musl.squashfs.tar.gz" -[["Rootfs.v2024.3.29.x86_64-linux-musl.unpacked"]] +[["Rootfs.v2025.7.4.x86_64-linux-musl.unpacked"]] arch = "x86_64" -git-tree-sha1 = "73b10e7f9f6b94c9754056030a3adbcf64bf5b90" +git-tree-sha1 = "fcf20261875c921fae433a73e0ca11d5750770e6" lazy = true libc = "musl" os = "linux" - [["Rootfs.v2024.3.29.x86_64-linux-musl.unpacked".download]] - sha256 = "f51e2d7defe0979abff04e024f75d75d1ef18da9cc9813dbfd5deb8701b8cf7f" - url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/Rootfs-v2024.3.29/Rootfs.v2024.3.29.x86_64-linux-musl.unpacked.tar.gz" + [["Rootfs.v2025.7.4.x86_64-linux-musl.unpacked".download]] + sha256 = "3b36e51a960db22767f1ea2a4bbada2d09173b58a61b68e2d6334585b373cec1" + url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/Rootfs-v2025.7.4/Rootfs.v2025.7.4.x86_64-linux-musl.unpacked.tar.gz" [["RustBase.v1.57.0.x86_64-linux-musl.squashfs"]] arch = "x86_64" From 6006091ecc6f1b2fbfedb00ea9a769387d41487f Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Fri, 4 Jul 2025 13:37:50 +0200 Subject: [PATCH 14/18] Don't overwrite symlinks. --- src/Runner.jl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Runner.jl b/src/Runner.jl index 27eca1df..812565ab 100644 --- a/src/Runner.jl +++ b/src/Runner.jl @@ -1064,7 +1064,9 @@ function generate_compiler_wrappers!(platform::AbstractPlatform; bin_path::Abstr # Create symlinks for default compiler invocations for tool in default_tools symlink("$(target)-$(tool)", joinpath(bin_path, triplet(platform), tool)) - symlink("$(host_target)-$(tool)", joinpath(bin_path, triplet(host_platform), tool)) + if target != host_target + symlink("$(host_target)-$(tool)", joinpath(bin_path, triplet(host_platform), tool)) + end end # Generate other fake system-specific tools. From 6abf099d0f6307db5c384ffecb8e8d130af6fb49 Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Fri, 4 Jul 2025 14:22:32 +0200 Subject: [PATCH 15/18] Define OCAMLC env var for test suite. --- src/Runner.jl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Runner.jl b/src/Runner.jl index 812565ab..b9a17726 100644 --- a/src/Runner.jl +++ b/src/Runner.jl @@ -1322,6 +1322,11 @@ function platform_envs(platform::AbstractPlatform, src_name::AbstractString; if :ocaml in compilers merge!(mapping, Dict( "OCAMLLIB" => "/opt/$(target)/lib/ocaml", + + # Default mappings for some tools + "OCAMLC" => "ocamlc", + "OCAMLOPT" => "ocamlopt", + "OCAMLFIND" => "ocamlfind", )) end From dd705399548bb909f4c6e5f815b6de917f746faa Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Fri, 4 Jul 2025 13:42:41 +0200 Subject: [PATCH 16/18] Fix OCaml version in tests. --- Artifacts.toml | 8 ++++---- test/rootfs.jl | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Artifacts.toml b/Artifacts.toml index ea1e8e39..77b7e142 100644 --- a/Artifacts.toml +++ b/Artifacts.toml @@ -5390,24 +5390,24 @@ os = "linux" [["Rootfs.v2025.7.4.x86_64-linux-musl.squashfs"]] arch = "x86_64" -git-tree-sha1 = "7e74660a66b2914c785c55092fc7bd6adf0ef8b9" +git-tree-sha1 = "68d66eaf3d8ed99afea82229e16ce9eda2b454da" lazy = true libc = "musl" os = "linux" [["Rootfs.v2025.7.4.x86_64-linux-musl.squashfs".download]] - sha256 = "468d5c0fb3a6167171f2464555cd67257f1cdc87bcc0bdab5914208076f5fa8c" + sha256 = "303aa5972b7b5b92838de6d20208fcbce26dfc1ed41328cba8c78cd5b9fb7b30" url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/Rootfs-v2025.7.4/Rootfs.v2025.7.4.x86_64-linux-musl.squashfs.tar.gz" [["Rootfs.v2025.7.4.x86_64-linux-musl.unpacked"]] arch = "x86_64" -git-tree-sha1 = "fcf20261875c921fae433a73e0ca11d5750770e6" +git-tree-sha1 = "e8c56f9c44dbe45e2f378f5b44bf8e81190c3e62" lazy = true libc = "musl" os = "linux" [["Rootfs.v2025.7.4.x86_64-linux-musl.unpacked".download]] - sha256 = "3b36e51a960db22767f1ea2a4bbada2d09173b58a61b68e2d6334585b373cec1" + sha256 = "b0e3353902e74394387311cb3122a1856704c35257acf9bb39268860f7a77df6" url = "https://github.com/JuliaPackaging/Yggdrasil/releases/download/Rootfs-v2025.7.4/Rootfs.v2025.7.4.x86_64-linux-musl.unpacked.tar.gz" [["RustBase.v1.57.0.x86_64-linux-musl.squashfs"]] diff --git a/test/rootfs.jl b/test/rootfs.jl index 9267185b..9081d1d0 100644 --- a/test/rootfs.jl +++ b/test/rootfs.jl @@ -142,8 +142,8 @@ end platform = Platform("x86_64", "linux") common_opts = (preferred_gcc_version=v"9", compilers=[:c, :ocaml]) - shards = choose_shards(platform; preferred_ocaml_version = v"5.4", (common_opts)... ) - @test filter(s-> s.name == "OCaml", shards)[end].version == v"5.4" + shards = choose_shards(platform; preferred_ocaml_version = v"5.3", (common_opts)... ) + @test filter(s-> s.name == "OCaml", shards)[end].version == v"5.3" @test_throws ErrorException choose_shards(platform; preferred_ocaml_version = v"4.1", (common_opts)...) end From e17ce1b1c7c28645a3f171f723dfa3ec0193e789 Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Mon, 7 Jul 2025 09:31:45 +0200 Subject: [PATCH 17/18] Test for output. --- test/runners.jl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/runners.jl b/test/runners.jl index a13202d3..4cfeeb40 100644 --- a/test/runners.jl +++ b/test/runners.jl @@ -600,6 +600,8 @@ end ${prefix}/bin/hello_world${exeext} """ @test run(ur, `/bin/bash -c "$(test_script)"`, iobuff) + seek(iobuff, 0) + @test readlines(iobuff)[end] == "hello world" end end end From 6358335c20c25d410dde4125735e78aad4f62653 Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Mon, 7 Jul 2025 09:31:58 +0200 Subject: [PATCH 18/18] Bump version. --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index acb0e9fe..e149f426 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "BinaryBuilderBase" uuid = "7f725544-6523-48cd-82d1-3fa08ff4056e" authors = ["Elliot Saba "] -version = "1.37.0" +version = "1.38.0" [deps] Bzip2_jll = "6e34b625-4abd-537c-b88f-471c36dfa7a0"