Ok, I tried that out, and you're right that I get an error (it didn't 
fallback to an older version, unless maybe that would happen with 
Pkg.update()?)


julia> Pkg.resolve()
ERROR: unsatisfiable package requirements detected: no feasible version 
could be found for package: Gadfly
 in error at ./error.jl:21
 in resolve at ./pkg/resolve.jl:37
 in resolve at ./pkg/entry.jl:422
 in resolve at pkg/entry.jl:404
 in anonymous at pkg/dir.jl:31
 in cd at file.jl:22
 in cd at pkg/dir.jl:31
 in resolve at pkg.jl:46

julia> 
[tom@tomoffice Plots]$ cat REQUIRE 
julia 0.3

Colors
Reexport
Compat
Gadfly 0.3.18

How should I go about rectifying this error?  In this case I know that the 
requirement clash is with Immerse (which has "Gadfly 0.3.16 0.3.17" in its 
require file), but if a user sees this error they would likely be lost.  I 
fear that there's not a good solution once a single package has special 
requirements.


On Friday, October 30, 2015 at 11:15:52 AM UTC-4, Yichao Yu wrote:
>
> On Fri, Oct 30, 2015 at 11:14 AM, Yichao Yu <[email protected] 
> <javascript:>> wrote: 
> > On Fri, Oct 30, 2015 at 11:05 AM, Tom Breloff <[email protected] 
> <javascript:>> wrote: 
> >> Thanks... after reading through that again, let me adjust my scenario: 
> >> 
> >> Package A's require: 
> >> 
> >> julia 0.4 
> >> C 0.1 0.2- 
> >> 
> >> Package B's require: 
> >> 
> >> julia 0.4 
> >> C 0.3 
> >> 
> >> What version of C is installed?  Package A want any version 0.1.x, 
> Package B 
> >> wants any version 0.3.x or greater.  Who "wins"? 
>
> Or fallback to an older version of one of them that don't conflict. 
>
> > 
> > I'd be surprised if you don't get an error. 
> > 
> >> 
> >> On Fri, Oct 30, 2015 at 10:28 AM, Yichao Yu <[email protected] 
> <javascript:>> wrote: 
> >>> 
> >>> On Fri, Oct 30, 2015 at 10:18 AM, Tom Breloff <[email protected] 
> <javascript:>> wrote: 
> >>> > I'm very confused about how Pkg resolution works in 0.4, and I 
> couldn't 
> >>> > find 
> >>> > a definitive source of details.  If package A has the REQUIRE file: 
> >>> > 
> >>> > julia 0.4 
> >>> > C 0.1 
> >>> > 
> >>> 
> >>> This means version 0.1 or higher for C 
> >>> 
> >>> > 
> >>> > and package B has the REQUIRE file: 
> >>> > 
> >>> > julia 0.4 
> >>> > C 0.2 
> >>> > 
> >>> 
> >>> This means version 0.2 or higher for C 
> >>> 
> >>> > 
> >>> > which version of C is installed?  Does it change if you do a 
> >>> > Pkg.add("C")? 
> >>> > What determines which package "wins"? 
> >>> 
> >>> The latest available that is compatible with everything else. 
> >>> 
> >>> Note to specify the upper bound, use `C lower_version upper_version` 
> >>> 
> >>> > 
> >>> > Bonus question: can someone point me to documentation on exactly 
> what 
> >>> > the 
> >>> > plus/minus mean?  What's the difference between `0.1`, `0.1-`, and 
> >>> > `0.1+`? 
> >>> 
> >>> - and + are for prerelease and build 
> >>> 
> >>> ``` 
> >>> julia> v"0.1-2+3".prerelease 
> >>> (2,) 
> >>> 
> >>> julia> v"0.1-2+3".build 
> >>> (3,) 
> >>> ``` 
> >>> 
> >>> > 
> >>> > Bonus question: how does the logic change with the new package 
> manager? 
> >>> > (if 
> >>> > at all) 
> >>> 
> >>> nothing 
> >>> 
> >>> > 
> >>> > Bonus question: is there an open issue/PR that discusses potential 
> >>> > future 
> >>> > changes to METADATA and package management? 
> >>> > 
> >>> > Thanks! 
> >>> 
> >>> Ref 
> >>> 
> http://julia.readthedocs.org/en/latest/manual/packages/#require-speaks-for-itself
>  
> >> 
> >> 
>

Reply via email to