Circular dependency warning

Julia v1.10.7 and v1.11.1 shows circular dependency warning while adding CUDA.jl

┌ Warning: Circular dependency detected. Precompilation will be skipped for:
│   Base.PkgId(Base.UUID("85068d23-b5fb-53f1-8204-05c2aba6942f"), "SparseArraysExt")
│   Base.PkgId(Base.UUID("13011619-4c7c-5ef0-948f-5fc81565cd05"), "AtomixCUDAExt")
│   Base.PkgId(Base.UUID("66d79d19-2cc4-5b0b-ac7a-b340256d1ecd"), "LinearAlgebraExt")
│   Base.PkgId(Base.UUID("63c18a36-062a-441e-b654-da1e3ab1ce7c"), "KernelAbstractions")
│   Base.PkgId(Base.UUID("052768ef-5323-5732-b1bb-66c8b64840ba"), "CUDA")

How to know which package to blame for this and how to prevent that?

6 Likes

In principle you can use GitHub - KristofferC/EnvironmentGraph.jl for this kind of task, but I don’t know how well it works with extensions.

This issue started showing up after updating CUDA.jl.

1 Like

Same here, problem is with new CUDA.jl

1 Like

I’ve been squinting at the project files of the implied packages and can’t really figure out a circular dependency. It looks like these should load in this order ( < > being used to mean start and finish): CUDA< LinearAlgebra< >, SparseArrays< >, KernelAbstractions< Atomix > >, LinearAlgebraExt, SparseArraysExt, AtomixCUDAExt. Is it possible that Pkg misidentifies one in the extensions? Some notes, might be useful:

  • CUDA 5.5.2
    • LinearAlgebra = “1”
    • SparseArrays = “1”
    • KernelAbstractions = “0.9.2”
  • KernelAbstractions 0.9.30
    • Atomix = “0.1, 1”
    • LinearAlgebraExt = “LinearAlgebra”
      • LinearAlgebra = “1.6”
    • SparseArraysExt = “SparseArrays”
      • SparseArrays = “<0.0.1, 1.6”
  • Atomix 1.0.0
    • AtomixCUDAExt = “CUDA”
      • CUDA = “5”
1 Like

I can reply that it has this behaviour for julia-1.10.6 atm. also

This is fixed in Julia 1.11.2 and 1.10.8 (not released yet).

5 Likes

What was the problem, exactly? Just curious. If it’s easier to link the pull request, then that’s cool too.

1 Like

It might be this

2 Likes