More Pkg trouble: "unsatisfiable package requirements detected"

This is with julia v0.5 on OS X:

julia> Pkg.update()
INFO: Updating METADATA...
INFO: Updating LoewnerJohnEllipsoids master...
INFO: Updating RequestsCache master...
INFO: Updating NASABreakup master...
INFO: Updating KalmanFilter master...
INFO: Updating UKF master...
INFO: Updating Astrodynamics master...
INFO: Computing changes...
ERROR: unsatisfiable package requirements detected: no feasible version could be found for package: ForwardDiff
  (you may try increasing the value of the
   JULIA_PKGRESOLVE_ACCURACY environment variable)
 in resolve(::Dict{String,Base.Pkg.Types.VersionSet}, ::Dict{String,Dict{VersionNumber,Base.Pkg.Types.Available}}) at /Applications/Julia-0.5.app/Contents/Resources/julia/lib/julia/sys.dylib:? (repeats 2 times)
 in update(::String, ::Set{String}) at /Applications/Julia-0.5.app/Contents/Resources/julia/lib/julia/sys.dylib:?
 in (::Base.Pkg.Dir.##2#3{Array{Any,1},Base.Pkg.Entry.#update,Tuple{String,Set{String}}})() at /Applications/Julia-0.5.app/Contents/Resources/julia/lib/julia/sys.dylib:?
 in cd(::Base.Pkg.Dir.##2#3{Array{Any,1},Base.Pkg.Entry.#update,Tuple{String,Set{String}}}, ::String) at /Applications/Julia-0.5.app/Contents/Resources/julia/lib/julia/sys.dylib:?
 in cd(::Base.Pkg.Dir.##2#3{Array{Any,1},Base.Pkg.Entry.#update,Tuple{String,Set{String}}}, ::String) at /Applications/Julia-0.5.app/Contents/Resources/julia/lib/julia/sys.dylib:?
 in #cd#1(::Array{Any,1}, ::Function, ::Function, ::String, ::Vararg{Any,N}) at /Applications/Julia-0.5.app/Contents/Resources/julia/lib/julia/sys.dylib:?
 in update() at /Applications/Julia-0.5.app/Contents/Resources/julia/lib/julia/sys.dylib:?

It seems to me that the latest version (v0.3.4) would satisfy all of these requirements:

cbinz$ grep "ForwardDiff" */REQUIRE
DiffEqParamEstim/REQUIRE:ForwardDiff
FiniteElementDiffEq/REQUIRE:ForwardDiff 0.2.4
JuMP/REQUIRE:ForwardDiff 0.3 0.4
NLsolve/REQUIRE:ForwardDiff 0.3.0
Optim/REQUIRE:ForwardDiff 0.3.0 0.4.0
OrdinaryDiffEq/REQUIRE:ForwardDiff 0.2.4
ReverseDiffSparse/REQUIRE:ForwardDiff 0.3 0.4
Roots/REQUIRE:ForwardDiff 0.2.0

This is from a different computer than my earlier question, so here’s the output of Pkg.status():
https://gist.github.com/crbinz/8ce9222625074a2a8fd5694aa786ab01

I got the same issue I believe. Since a few days Pkg.update() cannot resolve. I tried with a fresh package dir and adding a REQUIRE file, but the same error.

Strangly, If I change the JULIA_PKGRESOLVE_ACCURACY as suggested in the error, it points to different packages as failing to find feasible version. See gist for packages and output:
https://gist.github.com/Ken-B/6a27ce5427801a14a32680374a9ef7be

@crbinz could you Pkg.free("ImageMagick") and see if that helps? That fixed someone’s issue recently:

https://github.com/JuliaDiffEq/DifferentialEquations.jl/issues/141

I don’t exactly know what’s going on in that library, but there must be some dependency changes on master.

What’s odd is DifferentialEquations should be v1.8.0. Though it looks like it’s exiting before it ever gets there.

Note that you cannot trust the package it tells you. It’s an odd quirk of the system that I think will be fixed soon. You might instead want to check one of the packages listed there before the error.

Can you share your Pkg.status()? Are you on the master branch of any packages?

This happens with a fully fresh install: remove the v0.5 folder, do a Pkg.init(), copy the REQUIRE file and run Pkg.update() (see git). So no master branches (also not before when Pkg.update() started failing). Pkg.status() just shows not found for all the packages that are in the REQUIRE file.

I only did a quick check, but these look to be the packages with a maximum version requirement:

https://github.com/JuliaOpt/Clp.jl/blob/master/REQUIRE
https://github.com/JuliaNLSolvers/Optim.jl/blob/master/REQUIRE

You should check whether those conflict with anything. I don’t know of an easier way to do than this manually.

The problem here may be JLD-related, in which case I just put in place a workaround by bounding some old versions, which should help the resolver do less strange things. Try updating METADATA and see if it’s any better now.

Trying to free ImageMagick gives ERROR: unsatisfiable package requirements detected: no feasible version could be found for package: ColorVectorSpace.

@tkelman Pkg.update() at least worked… lots of things got downgraded for some reason, and Symengine failed to build (which happens… regularly). Results here:

https://gist.github.com/crbinz/ef25862f881989ee9fda9c89ec366a51

I can at least add/update packages now, so this is an improvement.

I think what’s holding you back now is VideoIO which doesn’t work with the
latest Images.jl yet. See https://github.com/kmsquire/VideoIO.jl/pull/92.

Could you please report the SymEngine build failure? It’ll help them fix their build issues.

@ChrisRackauckas Done

@tkelman thanks. I removed VideoIO, then Pkg.resolve() added it back (PGFPlots, which I need, is a dependent of a dependent). However, everything seems to work okay now. Any idea why I’m seeing so many packages get downgraded?

1 Like

Most of the downgrades are due to https://github.com/JuliaImages/Images.jl/pull/577 and the subsequent bounds that were added to METADATA. Basically most packages surrounding Images.jl are now split into before-rewrite versions and after-rewrite versions, and you can only have versions from within one of those sets installed in the same package directory at a time. Some of the downgrades don’t look Images-related, I’m not entirely sure what was up with those.

I still get this roughly every other time I try to Pkg.update() (on both of my machines), and while I am able to get around it by variously removing/untagging random packages until it works, it’s starting to get extremely annoying. I’ve also been seeing this issue come up more on both Gitter and Discourse.

I’m wondering if there is some end in sight for these problems – will it stop with Pkg3? Will it stop if/when v0.6 is released? Would nuking my entire ~/.julia/v0.5/ directory help anything? Is there some issue I can follow the progress on?

Post Pkg.status() when this happens.

Does it happen if you copy the same REQUIRE file from ~/.julia/v0.5 to ~/.julia/v0.6 and try with a nightly?

Thank you for your offer to help, but I am able to find a workaround on my own. However, in case it provides you with information to address the larger issue, I’ve posted it here. Earlier, I also went through and manually searched for upper bounds on requirements, and there were few enough that I was able to verify by hand there were no conflicts.

I’m trying to use the nightly julia build with the same REQUIRE file, and it’s currently building everything, but it seems to have resolved everything successfully, which is good.

Update:

INFO: Building Tk
ERROR: Build process failed.
Stacktrace:
 [1] build!(::Array{String,1}, ::Dict{Any,Any}, ::Set{Any}) at .\pkg\entry.jl:636
 [2] build(::Array{String,1}) at .\pkg\entry.jl:655
 [3] resolve(::Dict{String,Base.Pkg.Types.VersionSet}, ::Dict{String,Dict{VersionNumber,Base.Pkg.Types.Available}}, ::Dict{String,Tuple{VersionNumber,Bool}}, ::Dict{String,Base.Pkg.Types.Fixed}, ::Dict{String,VersionNumber}, ::Set{String}) at .\pkg\entry.jl:570
 [4] resolve(::Dict{String,Base.Pkg.Types.VersionSet}, ::Dict{String,Dict{VersionNumber,Base.Pkg.Types.Available}}, ::Dict{String,Tuple{VersionNumber,Bool}}, ::Dict{String,Base.Pkg.Types.Fixed}) at .\pkg\entry.jl:479
 [5] (::Base.Pkg.Dir.##4#7{Array{Any,1},Base.Pkg.Entry.#resolve,Tuple{}})() at .\pkg\dir.jl:36

 [6] cd(::Base.Pkg.Dir.##4#7{Array{Any,1},Base.Pkg.Entry.#resolve,Tuple{}}, ::String) at .\file.jl:59
 [7] #cd#1(::Array{Any,1}, ::Function, ::Function) at .\pkg\dir.jl:36
 [8] resolve() at .\pkg\pkg.jl:227

Ah right, sorry I forgot that was posted above. If resolution works okay on nightly then I think I know which PR this was. There were 2 resolution-related PR’s by carlobaldassi a couple months back which improved things here, but I only backported the smaller one to 0.5.1.

Somebody reported the Tk issue, that’s separate from Pkg version resolution at least.

Ok, so it sounds like I can look forward to this not happening on v0.6, great.

For anyone reading this that needs resolution on v0.5, I spent an hour or so last night clearing my ~/.julia/v0.5/ directory and starting over with only modules that I know I need, and that seems to have fixed things for now :confused:

I’m seeing this error now on julia 0.5 travis builds for my package IterableTables.jl.

Is there a recommended workaround for this? Having travis builds work is kind of important… Is there something that could be done to METADATA to prevent this? I don’t know, losen/tighten some bounds or something?

CC @tkelman

The Pkg resolver had some bugs, most of which Carlo Baldassi has fixed on master. I need to backport those fixes and put out 0.5.2. People keep breaking stuff on 0.6 which has been distracting me a bit, but should have a backport pr up shortly.

4 Likes

So the plan would be that 0.5.2 will be released very soon, i.e. in a couple of days? I think that would be great, given that this bug seems to effectively break the package manager in very common situations.

1 Like