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.