Solving "restricted by julia compatibility requirements to versions: uninstalled — no versions left"

I have an application that I’m able to install in a singularity container based on julia 1.2, but now, I would like to install it in a container based on julia 1.0.

I then had “Unsatisfiable requirements” issues for a package:

 Resolving package versions...
ERROR: Unsatisfiable requirements detected for package BioSymbols [3c28c6f8]:
 BioSymbols [3c28c6f8] log:
 ├─possible versions are: [1.0.0, 1.1.0-1.1.1, 1.2.0, 2.0.0-2.0.1, 3.0.0-3.0.1, 3.1.0, 4.0.0-4.0.1] or uninstalled
 ├─restricted to versions 4.0.1 by an explicit requirement, leaving only versions 4.0.1
 └─restricted by julia compatibility requirements to versions: [3.0.0-3.0.1, 3.1.0] or uninstalled — no versions left

From this “by an explicit requirement” piece of information, I guessed that this could have to do with the REQUIRE or Manifest.toml files.

(By the way, I fail to understand why this information got there, because I never explicitly asked for a specific version of any package whatsoever.)

To try to solve this issue, I decided to remove those files from the checked-out code, prior to install the package. Now I still have an “Unsatisfiable requirements” issue, but for another package:

+ rm -f Manifest.toml REQUIRE
+ /usr/local/julia/bin/julia --project=. --eval import Pkg; \
        Pkg.activate("."); Pkg.instantiate(); Pkg.build();
  Updating registry at `~/.julia/registries/BioJuliaRegistry`
  Updating git-repo `https://github.com/BioJulia/BioJuliaRegistry.git`
  Updating registry at `~/.julia/registries/General`
  Updating git-repo `https://github.com/JuliaRegistries/General.git`
 Resolving package versions...
ERROR: Unsatisfiable requirements detected for package FASTX [c2308a5c]:
 FASTX [c2308a5c] log:
 ├─possible versions are: [1.0.0, 1.1.0] or uninstalled
 ├─restricted to versions * by an explicit requirement, leaving only versions [1.0.0, 1.1.0]
 └─restricted by julia compatibility requirements to versions: uninstalled — no versions left

Do I understand correctly the * as meaning that there is indeed no explicit requirements for that package?

Then, what is the meaning of the next line (restricted by julia compatibility requirements to versions: uninstalled — no versions left)?

I thought that maybe a REQUIRE file is needed, so I tried to see what happens when re-creating one, just specifying the julia version that is present in the container. This does not seem to change the error:

+ rm -f Manifest.toml REQUIRE
+ echo julia 1.0
+ /usr/local/julia/bin/julia --project=. --eval import Pkg; \
        Pkg.activate("."); Pkg.instantiate(); Pkg.build();
  Updating registry at `~/.julia/registries/BioJuliaRegistry`
  Updating git-repo `https://github.com/BioJulia/BioJuliaRegistry.git`
  Updating registry at `~/.julia/registries/General`
  Updating git-repo `https://github.com/JuliaRegistries/General.git`
 Resolving package versions...
ERROR: Unsatisfiable requirements detected for package FASTX [c2308a5c]:
 FASTX [c2308a5c] log:
 ├─possible versions are: [1.0.0, 1.1.0] or uninstalled
 ├─restricted to versions * by an explicit requirement, leaving only versions [1.0.0, 1.1.0]
 └─restricted by julia compatibility requirements to versions: uninstalled — no versions left

Does it simply mean that the FASTX package is not compatible with julia 1.0?

OK, I got an answer at BioJulia.

FASTX indeed needs julia 1.1 or above (but the Project.toml file specifies julia = "1.1" in the [deps] section, I would have expected julia = ">= 1.1").

See Julia Pkg docs about version specifiers

2 Likes

Ah, OK, thanks.

I had seen this page previously, but not read carefully enough.

So if I get it correctly, per https://semver.org/, "1.1" means from 1.1 (inclusive), until next major version (exclusive), because all minor version upgrades should be backwards compatible.