Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

[Downgrade CI] Resolver crashes on inactive Python_jll LibMPDec_jll compat

Đang mở
#499 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
25/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
julia
Lĩnh vực
ci-cd, devtools

Hướng nghiên cứu

Bắt đầu với julia-downgrade-compat/downgrade.jl và compatibility shim của Resolver quanh Registries.jl:224; tái hiện lỗi bằng lệnh Julia 1.10 đã được ghi lại. Sau đó chạy bin/test/runtests.jl và Pkg.test của Resolver; được xem là hoàn tất khi lệnh downgrade và các bài kiểm thử tương đương với workflow downstream đều đạt mà không bỏ qua coverage.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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.

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_jll 3.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.jl passed 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=false Pkg.test invocation 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.

Ngôn ngữ chính
Julia
Star
140
Fork
45
Merge trung bình
1 phút
Pull request đã merge (30 ngày)
1

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của JuliaArrays/ArrayInterface.jl

Tất cả issue của JuliaArrays/ArrayInterface.jl

Issue tương tự

Thêm issue về Julia

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.