Skip to content

Use Julia v1.12#12226

Merged
giordano merged 6 commits into
masterfrom
mg/julia-v1.12
Nov 28, 2025
Merged

Use Julia v1.12#12226
giordano merged 6 commits into
masterfrom
mg/julia-v1.12

Conversation

@giordano
Copy link
Copy Markdown
Member

@giordano giordano commented Oct 5, 2025

Replaces #11725, there are too many conflicts to handle it nicely with a merge/rebase.

Closes #11834

CC @IanButterworth.

Comment thread .ci/Project.toml Outdated
Comment thread L/libjulia/common.jl Outdated
@IanButterworth
Copy link
Copy Markdown
Member

As far as I know, building on 1.7 is not possible properly. #11683 (comment)

I believe @benlorenz concluded that building for <1.9 can be dropped here #11683 (comment)

@giordano
Copy link
Copy Markdown
Member Author

giordano commented Oct 5, 2025

The wrong libunwind version is being used for building v1.13, resulting in build failure for riscv64 (libunwind isn't available). It should be 1.8.2+1:

push!(dependencies, Dependency(get_addable_spec("LibUnwind_jll", v"1.8.2+1"); platforms=filter(!Sys.isapple, platforms)))
but 1.8.1+2 is used: https://buildkite.com/julialang/yggdrasil/builds/23899#0199b5ca-56c2-4b04-8319-af6d273d4d7a/1093-1146

@giordano
Copy link
Copy Markdown
Member Author

giordano commented Oct 5, 2025

Uhm, is that because we're stuck with an old HistoricalStdlibVersions? https://github.com/JuliaPackaging/HistoricalStdlibVersions.jl/blob/9565c2f6c96c94555f516fdcee76fb6e458c89b9/src/version_map.jl#L11984-L11990?

Comment thread L/libjulia/common.jl Outdated
push!(dependencies, Dependency(get_addable_spec("LLVMLibUnwind_jll", v"19.1.4+0"); platforms=filter(Sys.isapple, platforms)))
push!(dependencies, BuildDependency("SuiteSparse_jll"))
push!(dependencies, Dependency("LibUV_jll"))
push!(dependencies, Dependency("LibUnwind_jll"; platforms=filter(!Sys.isapple, platforms)))
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@IanButterworth I removed all the get_addable_specs because it was like that in #11725, but the function should still work, right? At least that's still used for LLVM_full_jll everywhere. I presume that'd solve #12226 (comment)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess it should still work. It seems counter to the simplicity of just using Pkg stuff where possible, so seems better to not use it, but I might be missing something.

@giordano
Copy link
Copy Markdown
Member Author

giordano commented Oct 6, 2025

Upgrading HSV breaks building for v1.13 entirely https://buildkite.com/julialang/yggdrasil/builds/23909#0199b73c-2e6a-4115-906b-add316099eb5/1091-1244:

ERROR: LoadError: julia version requirement from Project.toml's compat section not satisfied for package at `/cache/julia-buildkite-plugin/depots/e2fd9734-29d8-45cd-b0eb-59f7104f3131/packages/libblastrampoline_jll/E1FPu`
Stacktrace:
  [1] pkgerror(msg::String)
    @ Pkg.Types /cache/julia-buildkite-plugin/julia_installs/bin/linux/x86_64/1.12/julia-latest-linux-x86_64/share/julia/stdlib/v1.12/Pkg/src/Types.jl:68
  [2] collect_project(pkg::PackageSpec, path::String)
    @ Pkg.Operations /cache/julia-buildkite-plugin/julia_installs/bin/linux/x86_64/1.12/julia-latest-linux-x86_64/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:329
  [3] collect_fixed!(env::Pkg.Types.EnvCache, pkgs::Vector{PackageSpec}, names::Dict{Base.UUID, String})
    @ Pkg.Operations /cache/julia-buildkite-plugin/julia_installs/bin/linux/x86_64/1.12/julia-latest-linux-x86_64/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:421
  [4] resolve_versions!(env::Pkg.Types.EnvCache, registries::Vector{Pkg.Registry.RegistryInstance}, pkgs::Vector{PackageSpec}, julia_version::Nothing, installed_only::Bool)
    @ Pkg.Operations /cache/julia-buildkite-plugin/julia_installs/bin/linux/x86_64/1.12/julia-latest-linux-x86_64/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:496
  [5] targeted_resolve
    @ /cache/julia-buildkite-plugin/julia_installs/bin/linux/x86_64/1.12/julia-latest-linux-x86_64/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:1669 [inlined]
  [6] tiered_resolve(env::Pkg.Types.EnvCache, registries::Vector{Pkg.Registry.RegistryInstance}, pkgs::Vector{PackageSpec}, julia_version::Nothing, try_all_installed::Bool)
    @ Pkg.Operations /cache/julia-buildkite-plugin/julia_installs/bin/linux/x86_64/1.12/julia-latest-linux-x86_64/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:1641
  [7] _resolve(io::Base.TTY, env::Pkg.Types.EnvCache, registries::Vector{Pkg.Registry.RegistryInstance}, pkgs::Vector{PackageSpec}, preserve::PreserveLevel, julia_version::Nothing)
    @ Pkg.Operations /cache/julia-buildkite-plugin/julia_installs/bin/linux/x86_64/1.12/julia-latest-linux-x86_64/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:1679
  [8] add(ctx::Pkg.Types.Context, pkgs::Vector{PackageSpec}, new_git::Set{Base.UUID}; allow_autoprecomp::Bool, preserve::PreserveLevel, platform::Platform, target::Symbol)
    @ Pkg.Operations /cache/julia-buildkite-plugin/julia_installs/bin/linux/x86_64/1.12/julia-latest-linux-x86_64/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:1712
  [9] add
    @ /cache/julia-buildkite-plugin/julia_installs/bin/linux/x86_64/1.12/julia-latest-linux-x86_64/share/julia/stdlib/v1.12/Pkg/src/Operations.jl:1685 [inlined]
 [10] add(ctx::Pkg.Types.Context, pkgs::Vector{PackageSpec}; preserve::PreserveLevel, platform::Platform, target::Symbol, allow_autoprecomp::Bool, kwargs::@Kwargs{julia_version::Nothing, io::Base.TTY})
    @ Pkg.API /cache/julia-buildkite-plugin/julia_installs/bin/linux/x86_64/1.12/julia-latest-linux-x86_64/share/julia/stdlib/v1.12/Pkg/src/API.jl:312
 [11] add(pkgs::Vector{PackageSpec}; io::Base.TTY, kwargs::@Kwargs{julia_version::Nothing})
    @ Pkg.API /cache/julia-buildkite-plugin/julia_installs/bin/linux/x86_64/1.12/julia-latest-linux-x86_64/share/julia/stdlib/v1.12/Pkg/src/API.jl:164
 [12] add
    @ /cache/julia-buildkite-plugin/julia_installs/bin/linux/x86_64/1.12/julia-latest-linux-x86_64/share/julia/stdlib/v1.12/Pkg/src/API.jl:153 [inlined]
 [13] (::BinaryBuilderBase.var"#92#93"{@Kwargs{io::Base.TTY, julia_version::Nothing}, Tuple{Vector{PackageSpec}}})()
    @ BinaryBuilderBase /cache/julia-buildkite-plugin/depots/e2fd9734-29d8-45cd-b0eb-59f7104f3131/packages/BinaryBuilderBase/e5wPi/src/Prefix.jl:696
 [14] withenv(f::BinaryBuilderBase.var"#92#93"{@Kwargs{io::Base.TTY, julia_version::Nothing}, Tuple{Vector{PackageSpec}}}, keyvals::Pair{String, String})
    @ Base ./env.jl:265
 [15] #Pkg_add#90
    @ /cache/julia-buildkite-plugin/depots/e2fd9734-29d8-45cd-b0eb-59f7104f3131/packages/BinaryBuilderBase/e5wPi/src/Prefix.jl:690 [inlined]
 [16] (::BinaryBuilderBase.var"#103#104"{Bool, Prefix, Vector{PackageSpec}, Platform, Vector{String}, Vector{String}})()
    @ BinaryBuilderBase /cache/julia-buildkite-plugin/depots/e2fd9734-29d8-45cd-b0eb-59f7104f3131/packages/BinaryBuilderBase/e5wPi/src/Prefix.jl:818
 [17] activate(f::BinaryBuilderBase.var"#103#104"{Bool, Prefix, Vector{PackageSpec}, Platform, Vector{String}, Vector{String}}, new_project::String)
    @ Pkg.API /cache/julia-buildkite-plugin/julia_installs/bin/linux/x86_64/1.12/julia-latest-linux-x86_64/share/julia/stdlib/v1.12/Pkg/src/API.jl:1388
 [18] setup_dependencies(prefix::Prefix, dependencies::Vector{PackageSpec}, platform::Platform; verbose::Bool)
    @ BinaryBuilderBase /cache/julia-buildkite-plugin/depots/e2fd9734-29d8-45cd-b0eb-59f7104f3131/packages/BinaryBuilderBase/e5wPi/src/Prefix.jl:762
 [19] setup_dependencies
    @ /cache/julia-buildkite-plugin/depots/e2fd9734-29d8-45cd-b0eb-59f7104f3131/packages/BinaryBuilderBase/e5wPi/src/Prefix.jl:726 [inlined]
 [20] (::BinaryBuilder.var"#setup_deps#21")(f::typeof(BinaryBuilderBase.is_target_dependency), prefix::Prefix, dependencies::Vector{BinaryBuilderBase.AbstractDependency}, platform::Platform, verbose::Bool)
    @ BinaryBuilder /cache/julia-buildkite-plugin/depots/e2fd9734-29d8-45cd-b0eb-59f7104f3131/packages/BinaryBuilder/yHbT3/src/AutoBuild.jl:866
 [21] autobuild(dir::AbstractString, src_name::AbstractString, src_version::VersionNumber, sources::Vector{<:BinaryBuilderBase.AbstractSource}, script::AbstractString, platforms::Vector, products::Vector{<:Product}, dependencies::Vector{<:BinaryBuilderBase.AbstractDependency}; verbose::Bool, debug::Bool, skip_audit::Bool, ignore_audit_errors::Bool, autofix::Bool, code_dir::Union{Nothing, String}, require_license::Bool, dont_dlopen::Bool, compression_format::String, kwargs...)
    @ BinaryBuilder /cache/julia-buildkite-plugin/depots/e2fd9734-29d8-45cd-b0eb-59f7104f3131/packages/BinaryBuilder/yHbT3/src/AutoBuild.jl:869
 [22] build_tarballs(ARGS::Any, src_name::Any, src_version::Any, sources::Any, script::Any, platforms::Any, products::Any, dependencies::Any; julia_compat::String, validate_name::Bool, compression_format::String, kwargs...)
    @ BinaryBuilder /cache/julia-buildkite-plugin/depots/e2fd9734-29d8-45cd-b0eb-59f7104f3131/packages/BinaryBuilder/yHbT3/src/AutoBuild.jl:380
 [23] build_tarballs
    @ /cache/julia-buildkite-plugin/depots/e2fd9734-29d8-45cd-b0eb-59f7104f3131/packages/BinaryBuilder/yHbT3/src/AutoBuild.jl:189 [inlined]
 [24] build_julia(ARGS::Vector{String}, version::VersionNumber; jllversion::VersionNumber)
    @ Main /cache/build/yggy-amdci7-1/julialang/yggdrasil/L/libjulia/common.jl:497
 [25] top-level scope
    @ /cache/build/yggy-amdci7-1/julialang/yggdrasil/L/libjulia/build_tarballs.jl:37
 [26] include(mod::Module, _path::String)
    @ Base ./Base.jl:306
 [27] exec_options(opts::Base.JLOptions)
    @ Base ./client.jl:317
 [28] _start()
    @ Base ./client.jl:550

According to #11834 breakage happened in v2.0.3, this is the diff v2.0.2...v2.0.3:
JuliaPackaging/HistoricalStdlibVersions.jl@9565c2f...44c10de. I can't quickly spot anything that would wreak havoc.

Comment thread .buildkite/pipeline.yml Outdated
@giordano
Copy link
Copy Markdown
Member Author

Ok, this seems to be working using Julia v1.12.1 (but we have to exclude libjulia v1.7-1.8 because of #11683 (comment)), but we're hitting JuliaLang/Pkg.jl#4442 way too frequently, we have to fix that.

@fingolfin
Copy link
Copy Markdown
Member

Nice! Let's wait for PR #12378 then

Comment thread L/libjulia/common.jl Outdated
Comment thread L/libjulia/common.jl
Comment thread L/libjulia/common.jl Outdated
@lgoettgens
Copy link
Copy Markdown
Member

I think this PR also resolves #11834, as it relaxes the HSV compat again.

But has anybody tested this PR with a dependent of libjulia_jll? The motivation for #11833 (which led to #11834 as a reminder) was just to fix the 1.13 build for dependents of libjulia_jll, the build of libjulia_jll itself was working fine.

Comment thread .buildkite/utils.jl Outdated
@IanButterworth
Copy link
Copy Markdown
Member

Needs treehashes re-signed (once the cloudflare outage is fixed)

@giordano
Copy link
Copy Markdown
Member Author

Note: we'll need v1.12.2 to hopefully resolve the curl issue

Copy link
Copy Markdown
Member

@lgoettgens lgoettgens left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. I noticed that there are a bunch of issues similar to #11683 (comment), i.e. for any PackageSpec that provides a version as a VersionNumber this has to be changed to a string. I would not put that into this PR to keep in readable, but there should be an automated change for this right after this PR here gets merged.
  2. I tried to build GAP_pkg_juliainterface with this PR with julia 1.12.1. The issues from #11833 don't happen anymore, so #11834 is resolved.
  3. However, in the logs of the above, I see that Artifacts gets downgraded from v1.11.0 to v1.3.0 (for a julia 1.13 build), which seems a bit weird

Comment thread L/libjulia/build_tarballs.jl Outdated
@@ -1,10 +1,10 @@
include("common.jl")

if v"1.7" <= VERSION < v"1.8"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the whole build setup is updated to julia 1.12, I think this if-branch can just go

@giordano
Copy link
Copy Markdown
Member Author

Anything left (besides #12226 (comment))?

@lgoettgens
Copy link
Copy Markdown
Member

What about 1 and 3 of #12226 (review)?

@giordano
Copy link
Copy Markdown
Member Author

What about 1

You said that's for after this PR, no?

and 3

You didn't provide a direct link so I don't know what should I look at and don't have the bandwidth to scavenge the log myself, but also I don't particularly care, I'm more worried about the jlls version.

@lgoettgens
Copy link
Copy Markdown
Member

What about 1

You said that's for after this PR, no?

Yeah, but IMO it should already be prepared so that it can be merged ASAP after, as otherwise many (most) recipes won't work.
I am not quite sure what the subtle differences of the two ways to specify versions are. But if the current Binary Builder setup with julia 1.7 already works fine with version strings, then we could even first convert all the VersionNumbers to strings and then merge this PR here. That way, we would never have a situation of broken recipes.

and 3

You didn't provide a direct link so I don't know what should I look at and don't have the bandwidth to scavenge the log myself, but also I don't particularly care, I'm more worried about the jlls version.

The logs I was referring to were of me locally building a dependent of libjulia.
But this also happens in the libjulia build of this PRs CI in https://buildkite.com/julialang/yggdrasil/builds/25195/steps?sid=019ab346-c292-4356-9a81-43565745ca90#019ab346-c304-4be9-972d-c4f685b07ccb/1107-2881

@fingolfin
Copy link
Copy Markdown
Member

First off, thank you to everyone who worked hard to make this PR possible!!

@giordano from my POV this is fine, and the "draft" label could be removed.

There is some cleanup one could perform here, e.g. remove the now-dead code in L/libjulia/build_tarballs.jl that @lgoettgens pointed out and a few other minor things. I could push those changes into this PR; or we can do it in a follow-up. Let me know what you prefer.

Regarding point 1 by @lgoettgens: I am not quite sure what needs to be done or prepared. But since you, Lars, seem to know quite well, would you be able and willing to prepare that? (I say this completely naively, without an inkling about how much work we are talking about, so don't hesitate to say "no" if this is an unreasonable ask; but realistically, I am then not sure if it will happen anytime soon, and we may just end up having to put up with some broken recipes in the meantime)

Regarding point 3 / Artifacts, the log Lars linked to says:

[ Info: Copying content of bundled in srcdir...
    Updating registry at `/cache/julia-buildkite-plugin/depots/e2fd9734-29d8-45cd-b0eb-59f7104f3131/registries/General.toml`
   Resolving package versions...
    Updating `/cache/build/yggy-amdci7-13/julialang/yggdrasil/L/libjulia/build/x86_64-linux-gnu-julia_version+1.10.0/iudObwyS/x86_64-linux-musl-cxx11/.project/Project.toml`
→⌃ [3f4e10e2] + CMake_jll v3.24.3+0
        Info Packages marked with → are not downloaded, use `instantiate` to download
    Updating `/cache/build/yggy-amdci7-13/julialang/yggdrasil/L/libjulia/build/x86_64-linux-gnu-julia_version+1.10.0/iudObwyS/x86_64-linux-musl-cxx11/.project/Manifest.toml`
   [692b3bcd] + JLLWrappers v1.7.1
   [21216c6a] + Preferences v1.5.0
→⌃ [3f4e10e2] + CMake_jll v3.24.3+0
   [56f22d72] + Artifacts v1.3.0 [loaded: v1.11.0]

I note that Artifacts had no version as a stdlib in Julia 1.10. However, the latest Artifacts release in the repository at https://github.com/JuliaPackaging/Artifacts.jl is 1.3.0.

@lgoettgens
Copy link
Copy Markdown
Member

Regarding point 1 by @lgoettgens: I am not quite sure what needs to be done or prepared. But since you, Lars, seem to know quite well, would you be able and willing to prepare that? (I say this completely naively, without an inkling about how much work we are talking about, so don't hesitate to say "no" if this is an unreasonable ask; but realistically, I am then not sure if it will happen anytime soon, and we may just end up having to put up with some broken recipes in the meantime)

I can try to ask AI to write me the necessary regexes tomorrow

Co-authored-by: Lars Göttgens <lars.goettgens@gmail.com>
@IanButterworth
Copy link
Copy Markdown
Member

Re. Artifacts.. I assume Pkg is getting confused by the confusing state of Artifacts across julia versions. tbh so am I

@IanButterworth
Copy link
Copy Markdown
Member

Re. Artifacts.. First guess at a fix (with a test) JuliaLang/Pkg.jl#4534

@giordano
Copy link
Copy Markdown
Member Author

But that's not critical right? It's not like packages in those environments are used for anything.

@IanButterworth
Copy link
Copy Markdown
Member

Yeah I don't think it's a blocker. Julia will use the stdlib version it comes with and ignore if the manifest has a different version. It's just a manifest correctness thing IIUC

@fingolfin
Copy link
Copy Markdown
Member

Agreed, not a blocker - still good that Lars noticed it and Ian is looking into it, but this PR need not wait for it.

@fingolfin
Copy link
Copy Markdown
Member

It failed to build on riscv64-linux-gnu-julia_version+1.13.0 .. should it even be trying to build that?!

@giordano
Copy link
Copy Markdown
Member Author

That was a timeout, riscv64 should be buildable on v1.13 (maybe also v1.12), yes.

@fingolfin
Copy link
Copy Markdown
Member

So ... all is green... merge? (I am not going to do that, though, as this is marked as draft, so perhaps there is a reason not to merge it after all?)

@IanButterworth IanButterworth marked this pull request as ready for review November 24, 2025 23:15
@IanButterworth
Copy link
Copy Markdown
Member

Looks good to me but I think @giordano should do the honors

@IanButterworth IanButterworth changed the title Test using Julia v1.12 Use Julia v1.12 Nov 25, 2025
@lgoettgens
Copy link
Copy Markdown
Member

Regarding point 1 by @lgoettgens: I am not quite sure what needs to be done or prepared. But since you, Lars, seem to know quite well, would you be able and willing to prepare that? (I say this completely naively, without an inkling about how much work we are talking about, so don't hesitate to say "no" if this is an unreasonable ask; but realistically, I am then not sure if it will happen anytime soon, and we may just end up having to put up with some broken recipes in the meantime)

See #12627. I think it would be good to merge that either right before or right after this PR here.

So, no further objects from my side

Copy link
Copy Markdown
Member

@fingolfin fingolfin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me!

@giordano giordano enabled auto-merge (squash) November 28, 2025 18:46
@giordano
Copy link
Copy Markdown
Member Author

YOLO.

@giordano giordano merged commit 023fc72 into master Nov 28, 2025
4 checks passed
@giordano giordano deleted the mg/julia-v1.12 branch November 28, 2025 18:53
giordano referenced this pull request in JuliaPackaging/BinaryBuilder.jl Jan 19, 2026
)

Co-authored-by: CompatHelper Julia <compathelper_noreply@julialang.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[CI] Remove compat bound for HistoricalStdlibVersions

6 participants