I’m trying to use the julia-downgrade-compat (v2) Github Action in a project, and I’ve run into problems with unresolvable environments for julia v1.9.
I’ve tracked down the (apparent) problem to any package chain that leads to requiring libblastrampoline_jll. With some minor edits to a local clone of Resolver.jl to print more information, the following sequence fails:
$ mkdir mwe
$ cd mwe
$ touch Project.toml
$ julia --project --startup-file=no -e 'using Pkg; pkg"add libblastrampoline_jll"; pkg"compat libblastrampoline_jll"'
...
$ julia ~/ext/Resolver.jl/bin/resolve.jl --julia=1.9 .
ERROR: LoadError: Unsatisfiable:
1222c4b2-2114-5bfd-aeef-88e4692bbb3e julia => 1.9.4
8e850b90-86db-534c-a0d3-1478176c7d93 libblastrampoline_jll => nothing
Stacktrace:
...
I’ve spent some time trying to understand why there is no valid version identified, and this is what I’ve noticed:
- Reading the libblastrampoline_jll Compat.toml file, I think we expect as installable versions:
- julia v1.6 — lbt_jll v1.*, v2.*, v3.*
- julia v1.7 — lbt_jll v1.*, v2.*, v3.*
- julia v1.8 — lbt_jll v4.*, v5.0–v5.2
- julia v1.9 — lbt_jll v4.*, v5.0–v5.4
- julia v1.10 — lbt_jll v5.5–v5.12
- julia v1.11 — lbt_jll v5.5–v5.12
- julia v1.12 — lbt_jll v5.13+ && <v6
- When I use Pkg to resolve a manifest on julia v1.9, it installs libblastrampoline_jll v5.8, newer than what I’d expect is possible
$ julia +1.9 -q --startup-file=no --project -e 'using Pkg; Pkg.resolve()' Updating `/tmp/mwe/Project.toml` [8e850b90] ~ libblastrampoline_jll ⇒ v5.8.0+0 Updating `/tmp/mwe/Manifest.toml` [56f22d72] + Artifacts [8f399da3] + Libdl [8e850b90] + libblastrampoline_jll v5.8.0+0 - If I try to force adding libblastrampoline_jll v5.4, the restriction is seemingly ignored:
$ julia +1.9 -q --startup-file=no --project -e 'using Pkg; pkg"compat libblastrampoline_jll =5.4.0"' Compat entry set: libblastrampoline_jll = "=5.4.0" Resolve checking for compliance with the new compat rules... Updating `/tmp/mwe/Project.toml` [8e850b90] ~ libblastrampoline_jll ⇒ v5.8.0+0 Updating `/tmp/mwe/Manifest.toml` [56f22d72] + Artifacts [8f399da3] + Libdl [8e850b90] + libblastrampoline_jll v5.8.0+0
Is there something I’m misunderstanding about the compatibility format so I’m interpreting everything incorrectly? Or is this a problem with Resolver.jl and there being “unknown” special-case rules for some of the stdlib-related dependencies on older versions of Julia?