JuliaReach / Reachability.jl

Reachability and Safety of Nondeterministic Dynamical Systems
MIT License
50 stars 4 forks source link

Fix dev build #738

Open schillic opened 4 years ago

schillic commented 4 years ago
ERROR: Unsatisfiable requirements detected for package TaylorIntegration [92b13dbe]:
 TaylorIntegration [92b13dbe] log:
 ├─possible versions are: [0.4.0-0.4.1, 0.5.0-0.5.1, 0.6.0-0.6.1, 0.7.0-0.7.1] or uninstalled
 ├─restricted to versions 0.7.0-0.7 by TaylorModels [314ce334], leaving only versions 0.7.0-0.7.1
 │ └─TaylorModels [314ce334] log:
 │   ├─possible versions are: 0.3.0 or uninstalled
 │   └─TaylorModels [314ce334] is fixed to version 0.3.0
 └─restricted to versions 0.6.1 by an explicit requirement — no versions left

The problem is that we restrict TaylorIntegration to v0.6

https://github.com/JuliaReach/Reachability.jl/blob/cc1772dabf5fca1602e907bdbf528c43e30ea63c/Project.toml#L41

but in the master version of TaylorModels they require at least v0.7.

However, we cannot just update TaylorIntegration because that triggers:

Reachability.solve_continuous: Error During Test at Reachability.jl/test/Reachability/alltests.jl:2
  Got exception outside of a @test
  LoadError: MethodError: no method matching taylorstep!(::typeof(vanderPol!), ::Taylor1{Float64}, ::Array{Taylor1{TaylorN{Float64}},1}, ::Array{Taylor1{TaylorN{Float64}},1}, ::Array{Taylor1{TaylorN{Float64}},1}, ::Float64, ::Float64, ::Int64, ::Float64, ::Nothing, ::Bool)

Furthermore, the dev build still crashes when resolving package versions:

ERROR: Unsatisfiable requirements detected for package StaticArrays [90137ffa]:
 StaticArrays [90137ffa] log:
 ├─possible versions are: [0.8.0-0.8.3, 0.9.0-0.9.2, 0.10.0, 0.10.2-0.10.3, 0.11.0-0.11.1, 0.12.0-0.12.1] or uninstalled
 ├─restricted to versions 0.12.1 by an explicit requirement, leaving only versions 0.12.1
 └─restricted by compatibility requirements with IntervalRootFinding [d2bf35a9] to versions: 0.11.0-0.11.1 — no versions left
   └─IntervalRootFinding [d2bf35a9] log:
     ├─possible versions are: [0.4.0, 0.5.0-0.5.1] or uninstalled
     └─restricted to versions 0.5.1-0.5 by TaylorModels [314ce334], leaving only versions 0.5.1
       └─TaylorModels [314ce334] log:
         ├─possible versions are: 0.3.0 or uninstalled
         └─TaylorModels [314ce334] is fixed to version 0.3.0

Apparently one of the packages restricts StaticArrays to v0.12.1, but IntervalRootFinding restricts to v0.11.0. Manually restricting the version of StaticArrays fixes that. And here I thought that Julia would do that for you automatically :scream_cat:

In the dev build we then get this error in the tests:

  LoadError: MethodError: no method matching validated_step!(::typeof(vanderPol!), ::Taylor1{Float64}, ::Array{Taylor1{TaylorN{Float64}},1}, ::Array{Taylor1{TaylorN{Float64}},1}, ::Array{Taylor1{TaylorN{Float64}},1}, ::Taylor1{Float64}, ::Array{Taylor1{IntervalArithmetic.Interval{Float64}},1}, ::Array{Taylor1{IntervalArithmetic.Interval{Float64}},1}, ::Array{Taylor1{IntervalArithmetic.Interval{Float64}},1}, ::Float64, ::Float64, ::Array{TaylorModels.TaylorModelN{2,Float64,Float64},1}, ::Array{IntervalBox{2,Float64},1}, ::Array{IntervalArithmetic.Interval{Float64},1}, ::IntervalBox{2,Float64}, ::IntervalBox{2,Float64}, ::IntervalBox{2,Float64}, ::Int64, ::Int64, ::Float64, ::Nothing, ::Bool, ::getfield(Reachability.ReachSets, Symbol("##72#73")))