Pkg add - action at a distance

I did:

(@v1.6) pkg> add BPFnative
[..]
  [856f044c] ↓ MKL_jll v2021.1.1+1 ⇒ v2020.2.254+0
  [da04e1cc] ↑ MPI v0.16.1 ⇒ v0.17.1

and even with it, I think, installed before to the same version, I got lots of upgrades for other packages, and one downgrade. At least the latter seems bad, and it’s even a totally unrelated package.

Usually doing something like:

(@v1.6) pkg> add MKL_jll@v2021.1.1+1
ERROR: ArgumentError: invalid version range: "v2021.1.1+1"
Stacktrace:
  [1] Pkg.Types.VersionRange(s::String)
[..]

would have fixed the downgrade, but it doesn’t like the “+1”, even though it’s a valid Julia version number. Is that a bug in Julia?

How would you fix this?

(@v1.6) pkg> add MKL_jll@v2021.1.1
  Resolving package versions...
ERROR: Unsatisfiable requirements detected for package LazyArtifacts [4af54fe1]:
 LazyArtifacts [4af54fe1] log:
 ├─possible versions are: 1.3.0 or uninstalled
 ├─restricted by compatibility requirements with MKL_jll [856f044c] to versions: 1.3.0
 │ └─MKL_jll [856f044c] log:
 │   ├─possible versions are: 2019.0.117-2021.1.1 or uninstalled
 │   └─restricted to versions 2021.1.1 by an explicit requirement, leaving only versions 2021.1.1
 └─restricted by julia compatibility requirements to versions: uninstalled — no versions left

https://github.com/JuliaBinaryWrappers/MKL_jll.jl/blame/19da215d915da456e2ac4995c5d3f077f040ebdb/Project.toml#L3

(@v1.6) pkg> add BPFnative
   Updating registry at `~/.julia/registries/General`
######################################################################## 100,0%
  Resolving package versions...
  Installed Nettle_jll ─────────────────── v3.5.1+0
  Installed GLFW_jll ───────────────────── v3.3.3+0
  Installed Nettle ─────────────────────── v0.5.1
  Installed LibCURL ────────────────────── v0.6.3
  Installed DocStringExtensions ────────── v0.8.4
  Installed StructTypes ────────────────── v1.5.0
  Installed ArrayInterface ─────────────── v3.1.6
  Installed MPI ────────────────────────── v0.17.1
  Installed IntervalSets ───────────────── v0.5.3
  Installed Downloads ──────────────────── v1.4.0
  Installed FuzzyCompletions ───────────── v0.4.1
  Installed CompilerSupportLibraries_jll ─ v0.4.0+1
  Installed Tables ─────────────────────── v1.4.1
  Installed ArgParse ───────────────────── v1.1.2
  Installed FileIO ─────────────────────── v1.6.5
  Installed Latexify ───────────────────── v0.14.11
  Installed Static ─────────────────────── v0.2.4
  Installed Qt_jll ─────────────────────── v5.15.2+2
  Installed FilePaths ──────────────────── v0.8.2
  Installed StatsBase ──────────────────── v0.33.4
  Installed ColorTypes ─────────────────── v0.10.12
Downloading artifact: GLFW
Downloading artifact: Nettle
Downloading artifact: CompilerSupportLibraries
Downloading artifact: Qt
Updating `~/.julia/environments/v1.6/Project.toml`
  [b6338580] ~ BPFnative v0.1.0 `https://github.com/jpsamaroo/BPFnative.jl.git#master` ⇒ v0.1.0
  [3f19e933] + p7zip_jll v16.2.1+1
Updating `~/.julia/environments/v1.6/Manifest.toml`
  [c7e460c6] ↑ ArgParse v1.1.1 ⇒ v1.1.2
  [0dad84c5] + ArgTools v1.1.1
  [4fba245c] ↑ ArrayInterface v3.1.5 ⇒ v3.1.6
  [b6338580] ~ BPFnative v0.1.0 `https://github.com/jpsamaroo/BPFnative.jl.git#master` ⇒ v0.1.0
  [3da002f7] ↑ ColorTypes v0.10.10 ⇒ v0.10.12
  [e66e0078] + CompilerSupportLibraries_jll v0.4.0+1
  [ffbed154] ↑ DocStringExtensions v0.8.3 ⇒ v0.8.4
  [f43a241f] + Downloads v1.4.0
  [5789e2e9] ↑ FileIO v1.6.2 ⇒ v1.6.5
  [8fc22ac5] ↑ FilePaths v0.8.1 ⇒ v0.8.2
  [fb4132e2] ↑ FuzzyCompletions v0.4.0 ⇒ v0.4.1
  [0656b61e] ↑ GLFW_jll v3.3.2+1 ⇒ v3.3.3+0
  [781609d7] + GMP_jll v6.2.0+7
  [8197267c] ↑ IntervalSets v0.5.2 ⇒ v0.5.3
  [23fbe1c1] ↑ Latexify v0.14.10 ⇒ v0.14.11
  [4af54fe1] - LazyArtifacts
  [b27032c2] + LibCURL v0.6.3
  [deac9b47] + LibCURL_jll v7.73.0+4
  [29816b5a] + LibSSH2_jll v1.9.1+2
  [856f044c] ↓ MKL_jll v2021.1.1+1 ⇒ v2020.2.254+0
  [da04e1cc] ↑ MPI v0.16.1 ⇒ v0.17.1
  [c8ffd9c3] + MbedTLS_jll v2.24.0+2
  [14a3606d] + MozillaCACerts_jll v2020.10.14+0
  [49dea1ee] ↑ Nettle v0.5.0 ⇒ v0.5.1
  [4c82536e] ↑ Nettle_jll v3.4.1+2 ⇒ v3.5.1+0
  [ca575930] + NetworkOptions v1.2.0
  [4536629a] + OpenBLAS_jll v0.3.12+1
  [ede63266] ↑ Qt_jll v5.15.2+1 ⇒ v5.15.2+2
  [aedffcd0] ↑ Static v0.2.3 ⇒ v0.2.4
  [2913bbd2] ↑ StatsBase v0.33.3 ⇒ v0.33.4
  [856f2bd8] ↑ StructTypes v1.4.0 ⇒ v1.5.0
  [bd369af6] ↑ Tables v1.4.0 ⇒ v1.4.1
  [a4e569a6] + Tar v1.9.0
  [83775a58] + Zlib_jll v1.2.12+1
  [8e850ede] + nghttp2_jll v1.41.0+1
  [3f19e933] + p7zip_jll v16.2.1+1
   Building MPI → `~/.julia/packages/MPI/3q18R/deps/build.log`

The stacktrace from the resolver tells you that MKL_jll@v2021.1.1 depends on LazyArtifacts but LazyArtifacts has not declared compatibility with Julia version 1.6.0. I would just stick with 1.5 in the meantime.

By the way, you can use pkg> add --preserve=all Foo if you want to avoid changes to your existing dependency graph (12. API Reference · Pkg.jl). Or you can use the compat section (6. Compatibility · Pkg.jl) or pin to prevent changes to specific packages.

3 Likes