Summary of below: How do I resolve this [compat] and Manifest.toml conflict, and how do I keep it from happening again?
I have a package that depends on Distributions.jl. Currently its [compat] entry contains this:
[compat]
julia = "1"
Distributions="0.21"
The compat for Distributions.jl 0.21 is
[compat]
julia = "1"
SpecialFunctions = "0.8,0.9"
The compat for SpecialFunctions.jl is 0.9 is
[compat]
julia = "1"
As a result, my code ran on Julia 1 with Distributions.jl 0.21 and SpecialFunctions.jl 0.9.
Then I went to bump Distributions.jl up to 0.22 in my package’s compat entry. It’s compat entry adds SpecialFunctions.jl 0.10 but retains 0.8 and 0.9.
Now my package won’t run on Julia 1.0, says that there is an unsatisfiable requirement:
ERROR: Unsatisfiable requirements detected for package SpecialFunctions [276daf66]:
SpecialFunctions [276daf66] log:
├─possible versions are: [0.7.0-0.7.2, 0.8.0, 0.9.0, 0.10.0-0.10.3] or uninstalled
├─restricted to versions 0.10.3 by an explicit requirement, leaving only versions 0.10.3
└─restricted by julia compatibility requirements to versions: [0.7.0-0.7.2, 0.8.0] or uninstalled — no versions left
When I made this change locally, the only packages that upgraded were Distributions.jl (to 0.22.6) and SpecialFunctions.jl (to 0.10.3). While Distributions.jl 0.22 is fine with julia 1.0, SpecialFunctions.jl 0.10.3 requires julia 1.3.
In theory though it should be able to fall back to SpecialFunctions.jl 0.8.
I was trying to figure out where this requirement from coming from, and I see that Manifest.toml lists the specific version number for SpecialFunctions.jl as 0.10.3.
My questions then are:
- How do I resolve this issue so that it can run on Julia 1.0?
- Why did it occur, so that I can keep it from becoming an issue again?