# Circular dependency warning

**URL:** <https://discourse.julialang.org/t/circular-dependency-warning/123388>\
**Category:** Package Management\
**Tags:** package, precompilation\
**Created:** [December 3, 2024, 5:49am UTC](https://discourse.julialang.org/t/circular-dependency-warning/123388 "2024-12-03T05:49:44Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![tomaklutfu](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tomaklutfu/32/2411_2.png) [@tomaklutfu](https://discourse.julialang.org/u/tomaklutfu)\
**Post date:** [December 3, 2024, 5:49am UTC](https://discourse.julialang.org/t/circular-dependency-warning/123388/1 "2024-12-03T05:49:44Z")

</div>

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

```julia
┌ 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?

---

<div class="post-metadata">

**Author:** ![giordano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/giordano/32/2166_2.png) [@giordano](https://discourse.julialang.org/u/giordano)\
**Post date:** [December 4, 2024, 1:23am UTC](https://discourse.julialang.org/t/circular-dependency-warning/123388/2 "2024-12-04T01:23:34Z")

</div>

> [@tomaklutfu](#):
>
> How to know which package to blame for this

In principle you can use [GitHub - KristofferC/EnvironmentGraph.jl](https://github.com/KristofferC/EnvironmentGraph.jl) for this kind of task, but I don’t know how well it works with extensions.

---

<div class="post-metadata">

**Author:** ![cuihantao](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cuihantao/32/8783_2.png) [@cuihantao](https://discourse.julialang.org/u/cuihantao)\
**Post date:** [December 5, 2024, 1:15am UTC](https://discourse.julialang.org/t/circular-dependency-warning/123388/3 "2024-12-05T01:15:11Z")

</div>

This issue started showing up after updating `CUDA.jl`.

---

<div class="post-metadata">

**Author:** ![pxshen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pxshen/32/38776_2.png) [@pxshen](https://discourse.julialang.org/u/pxshen)\
**Post date:** [December 7, 2024, 3:50pm UTC](https://discourse.julialang.org/t/circular-dependency-warning/123388/4 "2024-12-07T15:50:18Z")

</div>

Same here, problem is with new CUDA.jl

---

<div class="post-metadata">

**Author:** ![Benny](https://avatars.discourse-cdn.com/v4/letter/b/49beb7/32.png) [@Benny](https://discourse.julialang.org/u/Benny)\
**Post date:** [December 9, 2024, 3:07am UTC](https://discourse.julialang.org/t/circular-dependency-warning/123388/5 "2024-12-09T03:07:35Z")

</div>

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”

---

<div class="post-metadata">

**Author:** ![simenhu](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simenhu/32/20810_2.png) [@simenhu](https://discourse.julialang.org/u/simenhu)\
**Post date:** [December 9, 2024, 12:36pm UTC](https://discourse.julialang.org/t/circular-dependency-warning/123388/6 "2024-12-09T12:36:37Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![maleadt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/maleadt/32/10097_2.png) [@maleadt](https://discourse.julialang.org/u/maleadt)\
**Post date:** [December 9, 2024, 1:43pm UTC](https://discourse.julialang.org/t/circular-dependency-warning/123388/7 "2024-12-09T13:43:34Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Benny](https://avatars.discourse-cdn.com/v4/letter/b/49beb7/32.png) [@Benny](https://discourse.julialang.org/u/Benny)\
**Post date:** [December 9, 2024, 6:02pm UTC](https://discourse.julialang.org/t/circular-dependency-warning/123388/8 "2024-12-09T18:02:09Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![jakobjpeters](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jakobjpeters/32/207797_2.png) [@jakobjpeters](https://discourse.julialang.org/u/jakobjpeters)\
**Post date:** [December 9, 2024, 8:29pm UTC](https://discourse.julialang.org/t/circular-dependency-warning/123388/9 "2024-12-09T20:29:22Z")

</div>

It might be [this](https://github.com/JuliaLang/julia/issues/52511#issuecomment-2513374355)

---

<div class="post-metadata">

**Author:** ![Gabrio\_Rizzuti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gabrio_rizzuti/32/212164_2.png) [@Gabrio\_Rizzuti](https://discourse.julialang.org/u/Gabrio_Rizzuti)\
**Post date:** [December 20, 2024, 9:16am UTC](https://discourse.julialang.org/t/circular-dependency-warning/123388/10 "2024-12-20T09:16:33Z")

</div>

Thanks for this quick response!

May I ask what are the plans for the release of 1.10.8?  
Unfortunately at the moment (due to company requirements), I’m stuck to LTS Julia, and CUDA.jl is quite critical to my applications.

Alternatively, are there any workarounds to this?

---

<div class="post-metadata">

**Author:** ![maleadt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/maleadt/32/10097_2.png) [@maleadt](https://discourse.julialang.org/u/maleadt)\
**Post date:** [December 20, 2024, 12:58pm UTC](https://discourse.julialang.org/t/circular-dependency-warning/123388/11 "2024-12-20T12:58:22Z")

</div>

You can try reverting the upgrade to Atomix.jl 1.0, e.g., by adding a compat entry to your environment for Atomix 0.1.

---

<div class="post-metadata">

**Author:** ![Gabrio\_Rizzuti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gabrio_rizzuti/32/212164_2.png) [@Gabrio\_Rizzuti](https://discourse.julialang.org/u/Gabrio_Rizzuti)\
**Post date:** [December 21, 2024, 3:36pm UTC](https://discourse.julialang.org/t/circular-dependency-warning/123388/12 "2024-12-21T15:36:48Z")

</div>

Thank you so much, that worked. For the moment that’ll do for me!
