[Downgrade CI] Resolver crashes on inactive Python_jll LibMPDec_jll compat
还没有人认领这个 Issue。
评估
调研方向
从 julia-downgrade-compat/downgrade.jl 和 Registries.jl:224 附近的 Resolver 兼容性 shim 开始;使用文档中记录的 Julia 1.10 命令复现失败。然后运行 bin/test/runtests.jl 和 Resolver 的 Pkg.test;当 downgrade 命令和下游工作流等效测试在没有跳过覆盖率的情况下通过时,即视为完成。
由索引模型根据 Issue 内容生成。
描述
Summary
The Downgrade workflow is red on clean master with:
KeyError: key "LibMPDec_jll" not found
...
Registries.jl:224
This is not caused by #498 or by a recent ArrayInterface source change. The same current action and registry fail on the last ArrayInterface commit whose historical workflow was green.
- Current clean-master failure:
d767284, run 30054476628, job 89363223986 - First clean-master failure: run 27407002673, job 80998509723, June 12
- Last green run: run 27149028395, job 80134716100, June 8, at
db587545
Reproduction
With Julia 1.10 and current v2 of julia-downgrade-compat:
git clone https://github.com/JuliaArrays/ArrayInterface.jl
git clone --branch v2 https://github.com/julia-actions/julia-downgrade-compat
cd ArrayInterface.jl
julia --startup-file=no ../julia-downgrade-compat/downgrade.jl \
"Pkg,TOML" "." "alldeps" "1" ""
The command fails deterministically with the LibMPDec_jll KeyError. It also fails after checking ArrayInterface out at db587545, so bisecting ArrayInterface source would be misleading.
External-action bisect
I bisected julia-actions/julia-downgrade-compat with the command above:
ac05e57de99d5cb35a381755d2054b57e8385c3b is the first bad commit
Handle old-style test dependencies (extras and targets.test) (#49)
That action change is desirable: it adds ArrayInterface's [extras]/[targets].test dependencies to the minimum-version solve. It exposes an existing Resolver/registry edge case; reverting it would reduce downgrade coverage rather than fix the cause.
Root cause
General's Python_jll metadata currently has:
# Compat.toml
["3-3.10"]
LibMPDec_jll = "2"
# Deps.toml
["3.10-3"]
LibMPDec_jll = "7106de7a-f406-5ef1-84f7-3345f7341bd2"
Thus Python 3.8 versions have a LibMPDec_jll compat entry but no active dependency with that name. Julia's Pkg tolerates this: on Julia 1.10, a project constrained to Python_jll = "~3.8" resolves to Python_jll v3.8.8+3 without LibMPDec_jll.
Resolver's compatibility shim for Julia <= 1.13 instead assumes every compat name occurs in the active per-version dependency map:
compat_uuid_pairs(c, name2uuid) =
(name2uuid[n] => spec for (n, spec) in c)
The unchecked name2uuid["LibMPDec_jll"] lookup is the crash.
Proper fix tested locally
I implemented a focused Resolver patch that:
- filters name-keyed compat entries with
haskey(name2uuid, name); - filters Julia 1.14's UUID-keyed representation against the active dependency UUIDs too;
- applies the same rule to strong and weak dependencies; and
- adds a regression test using
Python_jll3.8/3.10 plus a synthetic UUID-keyed check.
Observed verification:
- Before the patch, the new Resolver integration test reproduced the exact
KeyError. - After the patch,
bin/test/runtests.jlpassed 11/11 on Julia 1.10. - Resolver's full
Pkg.test()passed on Julia 1.10 and Julia 1.12. - ArrayInterface's exact downgrade command completed with the patched Resolver.
- The subsequent workflow-equivalent
Pkg.build(verbose=true)completed. - The exact
GROUP=Core,allow_reresolve=falsePkg.testinvocation passed all downstream testsets (336 assertions).
No ArrayInterface test or downgrade dependency was skipped, weakened, or suppressed.
The proper follow-up is an upstream Resolver patch. This issue records the clean-master failure and fully tested fix while that upstream contribution is coordinated.
- 主要语言
- Julia
- 星标
- 140
- 派生
- 45
- 平均合并
- 1 分钟
- 30 天内合并 PR
- 1
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
JuliaArrays/ArrayInterface.jl 的其他 Issue
-
lu_instance/qr_instance run a full factorization for FixedSizeArrays可能已有人在做 @devmotion 于 4 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 72/100
JuliaArrays/ArrayInterface.jl#510 ·
-
难度 5/5 一周以上 新手友好度 25/100
JuliaArrays/ArrayInterface.jl#463 · 5 条评论 · 4 个 reaction ·
-
难度 4/5 3-5 天 新手友好度 35/100
JuliaArrays/ArrayInterface.jl#460 · 8 条评论 · 2 个 reaction ·
-
难度 4/5 3-5 天 新手友好度 35/100
JuliaArrays/ArrayInterface.jl#397 · 1 条评论 ·
-
难度 4/5 3-5 天 新手友好度 15/100
JuliaArrays/ArrayInterface.jl#396 ·
查看 JuliaArrays/ArrayInterface.jl 的全部 Issue
相似的 Issue
-
难度 1/5 1-3 小时 新手友好度 84/100
SciML/Catalyst.jl#1571 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 62/100
-
难度 2/5 1-3 小时 新手友好度 70/100
SciML/Optimization.jl#1414 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
SciML/OrdinaryDiffEq.jl#4831 ·
维护者通常 1 天内回复