I’m having trouble parsing the following error message from https://github.com/JuliaRegistries/General/runs/5088377586?check_suite_focus=true
ERROR: Unsatisfiable requirements detected for package GRAPE [6b52fcaf]:
GRAPE [6b52fcaf] log:
├─possible versions are: 0.0.1-0.0.2 or uninstalled
├─restricted by compatibility requirements with QuantumControl [8a270532] to versions: 0.0.2
│ └─QuantumControl [8a270532] log:
│ ├─possible versions are: 0.0.1-0.0.4 or uninstalled
│ └─restricted to versions 0.0.4 by an explicit requirement, leaving only versions 0.0.4
└─restricted by compatibility requirements with QuantumPropagators [7bf12567] to versions: uninstalled — no versions left
└─QuantumPropagators [7bf12567] log:
├─possible versions are: 0.0.1-0.1.0 or uninstalled
└─restricted by compatibility requirements with QuantumControl [8a270532] to versions: 0.1.0
└─QuantumControl [8a270532] log: see above
This is from a failed attempt to release a new 0.0.4 verrsion of QuantumControl, see https://github.com/JuliaRegistries/General/pull/54068
A guide: How to handle "ERROR: Unsatisfiable requirements detected ..." has been quite helpful to parse the error message, but I’m still struggling.
First, the “possible versions”: are those solely determined by what’s in the General registry?
Second, I’m reading the above as follows:
- We’re trying to install the GRAPE package
- QuantumControl 0.0.4 restricts GRAPE to 0.0.2 (true!)
- QuantumPropgators 0.1.0 restricts GRAPE to “uninstalled” (huh?)
For my general understanding: the “restricted by compatibility…” lines are independent in this output, right? This is not some kind of “accumulative” restriction?
Also, the indented trees, QuantumControl [8a270532] log
, QuantumPropagators [7bf12567] log
only tell me why QuantumControl and QuantumPropagators are being installed in a specific version, right? So mentally, I could shorten that to e.g. restricted by compatibility requirements with QuantumControl **0.0.4** to versions: 0.0.2
and forget about the subtree?
Now, the real question is why QuantumPropagators
would restrict GRAPE
. QuantumPropagators
is being installed in version 0.1.0
, so the relevant Project.toml
is this one: https://github.com/JuliaQuantumControl/QuantumPropagators.jl/blob/v0.1.0/Project.toml
It does not contain a reference to GRAPE
, neither directly nor indirectly (no package in the dependencies depends on anything that depends on GRAPE
). So WTF?
The testing dependencies in https://github.com/JuliaQuantumControl/QuantumPropagators.jl/blob/v0.1.0/test/Project.toml should not influence this at all, right? (I thought there might be an indirect dependency there on GRAPE, but there is not, in fact. So even that wouldn’t explain the problem).
All of these packages are part of JuliaQuantumControl, and the packages in that org have the following dependencies on each other:
┌─────────────────────┐
│ QuantumPropagators ◀────────────────────────┐
└──────────▲──────────┘ │
│ │
│ │
┌──────────┴───────────┐ ┌──────────┴─────────┐
│ QuantumControlBase ◀────────────┤ QuantumControl │
└────▲─────────────▲───┘ └──────┬───┬─────────┘
│ │ │ │
│ │ │ │
┌────┴─────┐ ┌───┴───┐ │ │
│ Krotov │ │ GRAPE ◀───────────────────┘ │
└────▲─────┘ └───────┘ │
│ │
│ │
└─────────────────────────────────────────┘
where "────▶" means "depends on"
In addition, the testing of Krotov
and GRAPE
also depend on QuantumControl
(which is why I thought the Project.toml
might be the root of the problem)