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 > > >> > >> >
