I’m trying to figure out how to instantiate a project that depends on unreleased but registered packages with properly set-up version numbers and compatibility requirements in Project.toml (for use on CI; preparing for JuliaRegistrator). For example:
$ git clone https://github.com/JuliaGPU/CUDAnative.jl
$ cd CUDAnative.jl
# directly instantiating doesn't work,
# because CUDAnative depends on an unreleased CUDAdrv.
$ julia --project -e 'using Pkg; Pkg.add([PackageSpec(name=pkg; rev="master")
for pkg in ("CuArrays", "CUDAdrv")])'
Cloning default registries into `~/.julia`
Cloning registry from "https://github.com/JuliaRegistries/General.git"
Added registry `General` to `~/.julia/registries/General`
Cloning git-repo `https://github.com/JuliaGPU/CuArrays.jl.git`
Updating git-repo `https://github.com/JuliaGPU/CuArrays.jl.git`
Cloning git-repo `https://github.com/JuliaGPU/CUDAdrv.jl.git`
Updating git-repo `https://github.com/JuliaGPU/CUDAdrv.jl.git`
Resolving package versions...
ERROR: Unsatisfiable requirements detected for package CUDAdrv [c5f51814]:
CUDAdrv [c5f51814] log:
├─possible versions are: 2.1.0 or uninstalled
├─restricted to versions 2.0.0-2 by CuArrays [3a865a2d], leaving only versions 2.1.0
│ └─CuArrays [3a865a2d] log:
│ ├─possible versions are: 1.0.2 or uninstalled
│ └─CuArrays [3a865a2d] is fixed to version 1.0.2
├─CUDAdrv [c5f51814] is fixed to version 2.1.0
└─found to have no compatible versions left with CUDAnative [be33ccc6]
└─CUDAnative [be33ccc6] log:
├─possible versions are: [0.1.0-0.1.3, 0.2.0, 0.3.0-0.3.1, 0.4.0-0.4.2, 0.5.0-0.5.5, 0.6.0-0.6.3, 0.7.0, 0.8.0-0.8.10, 0.9.0-0.9.1, 0.10.0-0.10.1, 1.0.0-1.0.1, 2.0.0-2.0.1] or uninstalled
└─restricted to versions 2.0.0-2 by CuArrays [3a865a2d], leaving only versions 2.0.0-2.0.1
└─CuArrays [3a865a2d] log: see above
For some reason, the resolver isn’t happy and I don’t understand why. Version requirements seem to be OK, this is (the relevant pieces of) what’s in the package’s Project.toml files on the master branches:
$ cat CUDAdrv/Project.toml
version = "2.1.0"
$ cat CUDAnative/Project.toml
version = "2.1.0"
[compat]
CUDAdrv = "2.1"
$ cat CuArrays/Project.toml
version = "1.0.2"
[compat]
CUDAnative = "2.0"
CUDAdrv = "2.0"
Neither CUDAnative or CUDAdrv 2.1 have been released, but the master branches provide those versions which should be compatible with CuArrays. It works when only adding CUDAdrv#master, so it must have something to do with CuArrays’ compatibility requirements.