Conflicting requirements on 0.6


#1

I’m trying to create a reproducible environment. On 0.6. So I load my (private) package, then generate a REQUIRE file for all currently loaded packages, that looks like:

cat ~/.julia/v0.6/REQUIRE
HTTP 0.6.9 0.6.9+
Feather 0.3.1 0.3.1+
Arrow 0.1.1 0.1.1+
AxisAlgorithms 0.3.0 0.3.0+
...

Then I copy it to ~/.julia/v0.6/REQUIRE on the target machine, then Pkg.update() on a fresh install. It works great. Most of the time. But occasionally I get unsatisfiable requirements, which sounds impossible, given that I have precisely that set of package versions installed on my machine. In particular,

ERROR: Unsatisfiable requirements detected for package AxisAlgorithms:
├─version range [0.3.0,0.3.0+) set by an explicit requirement
└─version range [0.0.0-,0.3.0) required by package Interpolations, whose allowed version range is [0.7.3,0.7.3+):
  ├─version range [0.7.3,0.7.3+) set by an explicit requirement
...

I don’t understand where version range [0.0.0-,0.3.0) required by package Interpolations comes from. On that machine,

julia> Pkg.status("Interpolations")
 - Interpolations                0.7.3
blah@jupy:~/.julia/v0.6/Interpolations$ cat REQUIRE 
julia 0.6

ShowItLikeYouBuildIt
WoodburyMatrices 0.1.5
Ratios
AxisAlgorithms
Compat 0.19.0
DualNumbers

The desired Interpolations.jl version is installed, and it works with any version of AxisAlgorithms. So why is there a conflict? Here is the full conflict report:

ERROR: Unsatisfiable requirements detected for package AxisAlgorithms:
├─version range [0.3.0,0.3.0+) set by an explicit requirement
└─version range [0.0.0-,0.3.0) required by package Interpolations, whose allowed version range is [0.7.3,0.7.3+):
  ├─version range [0.7.3,0.7.3+) set by an explicit requirement
  └─version range [0.0.0-,∞) required by package KernelDensity, whose allowed version range is [0.4.1,0.4.1+):
    ├─version range [0.4.1,0.4.1+) set by an explicit requirement
    └─version range [0.0.0-,∞) required by package StatPlots, whose allowed version range is [0.7.2,0.7.2+):
      └─version range [0.7.2,0.7.2+) set by an explicit requirement
The intersection of the requirements is empty.

#2

Found the issue. https://github.com/JuliaLang/METADATA.jl/pull/16188