Pkg behaving differently for Package from Registry vs the direct URL

I have an issue with the behavior of pkg:
add FMIZoo results in FMIZoo.jl beeing installed and along with it Interpolations.jl 0.14.0 (which is in FMIZoo.jls dependencys)
add "" results in FMIZoo.jl beeing installed and along with it Interpolations.jl 0.14.7 this would be the expected behavior according to semver. This started in jula 1.10, before that the behavior was as expected (always installing the current patch-level Interpolations 0.14.7)
To reproduce, make shure to delete .julia folder befor each test. If Interpolations 0.14.7 is already downloaded, it will always be used instead of 0.14.0

Any ideas, why add package and add url behave differently here?


The root of the problem is that there are compatibility conflicts among the indirect dependencies and it’s not obvious to Pkg which of them should be resolved to the latest version and which need to hold back.

You can see this if you do

(@v1.10) pkg> activate --temp
  Activating new project at `/tmp/jl_DMGh6P`

(jl_DMGh6P) pkg> add FMIZoo
[...lots of output...]

jl_DMGh6P) pkg> add FMIZoo Interpolations@0.14.7
   Resolving package versions...
    Updating `/tmp/jl_DMGh6P/Project.toml`
βŒ… [a98d9a8b] + Interpolations v0.14.7
    Updating `/tmp/jl_DMGh6P/Manifest.toml`
βŒ… [79e6a3ab] ↓ Adapt v4.0.4 β‡’ v3.7.2
βŒƒ [4fba245c] ↓ ArrayInterface v7.10.0 β‡’ v7.7.1
βŒ… [a98d9a8b] ↑ Interpolations v0.14.0 β‡’ v0.14.7
  [0234f1f7] ↑ HDF5_jll v1.14.2+1 β‡’ v1.14.3+3
  [1d63c593] - LLVMOpenMP_jll v15.0.7+0
βŒ… [fe0851c0] ↓ OpenMPI_jll v5.0.3+0 β‡’ v4.1.6+0

So it can resolve FMIZoo together with Interpolations 0.14.7, but only if it instead downgrades some other packages. I don’t know exactly why Pkg chooses different resolutions when installing from registry and from URL, but it could be something as trivial as differences in the exact ordering of dependency data getting into the resolution algorithm.

That is never good advice. If you really need to simulate having a pristine installation, point the JULIA_DEPOT_PATH environment variable to an empty directory. In this case it’s enough to have a clean environment though, which I created above with pkg> activate --temp.

1 Like