eschnett / ADIOS2.jl

A Julia interface to ADIOS2
MIT License
13 stars 6 forks source link

Precompilation fails because of missing `libblosc2` artifact #16

Closed lucass-carneiro closed 1 month ago

lucass-carneiro commented 1 month ago

When precompiling the package on Linux x64, the precompilation fails with the error

LoadError: InitError: could not load library "/home/lucas/.julia/artifacts/9b41627565e1daff1ceb54713f5b56ac6b8abe74/lib/libadios2_c.so"
libblosc2.so.2: No such file

I managed to resolve the issue is resolved by installing blosc2 system wide and manually linking the library as libblosc2.so.2 to

/home/lucas/.julia/artifacts/9b41627565e1daff1ceb54713f5b56ac6b8abe74/lib/

This suggests, perhaps, that the blosc2 dependency is missing from the installation prerequisites.

eschnett commented 1 month ago

Which version of Blosc2_jll is present? status --manifest should show.

eschnett commented 1 month ago

I can reproduce the problem:

eschnett commented 1 month ago

Which Julia version are you using?

eschnett commented 1 month ago

No, I cannot reproduce this. After an update everything is fine.

lucass-carneiro commented 1 month ago

The status --manifest command returns

[d43303dc] Blosc2_jll v201.1500.0+0

My Julia version is 1.10.1 My system installs blosc2 2.15.0, so it makes sense that it works when I link that directly.

How can I make sure that Julia downloads the correct version? update-ing does not solve the issue for me

eschnett commented 1 month ago

What versions of ADIOS2 and ADIOS2_jll are you using?

Do you want to try upgrading to Julia 1.10.4?

lucass-carneiro commented 1 month ago

I just did a clean install of Julia 1.11. No luck. status --manifest reports

  1. ADIOS2 v1.2.1
  2. ADIOS2_jll v2.9.4+0

No matter what, Blosc2_jll v201.1500.0+0 seems to be pulled every time

eschnett commented 1 month ago

This is weird. The most recent version of ADIOS2_jll is 2.10. Did you pin your version? What happens if you install ADIOS2 into a new project? Are there other dependencies that would prevent ADIOS2_jll from updating?

lucass-carneiro commented 1 month ago

I have not pinned anything (at least not intentionally)

This error still manifests if I try to install ADIOS2 in the general Julia registry (outside of a project).

If I create a new clean empty project and try to add ADIOS2 I still get the same precompilation error.

Cheking here, It seams that the latest release of Blosc2_jll is v201.1500.0+0, the problematic one. Maybe this has something to do with the issue? It would at least explain why an update does not help me, i.e, the problematic version is already the latest

eschnett commented 1 month ago

Different versions of ADIOS2_jll require different versions of Blosc2_jll. ADIOS2_jll 2.9 requires Blosc2_jll 2, whereas ADIOS2_jll 2.10 requires Blosc2_jll 201.

Can you go to your otherwise empty project and show all packages? That's status --manifest.

lucass-carneiro commented 1 month ago

Sure! Here it is

temp) pkg> status --manifest
Project temp v0.1.0
Status `~/temp/Manifest.toml`
  [e0ce9d3b] ADIOS2 v1.2.1
  [ffbed154] DocStringExtensions v0.9.3
  [692b3bcd] JLLWrappers v1.5.0
⌃ [da04e1cc] MPI v0.20.16
  [3da0fdf6] MPIPreferences v0.1.11
  [eebad327] PkgVersion v0.3.3
  [aea7be01] PrecompileTools v1.2.1
  [21216c6a] Preferences v1.4.3
  [ae029012] Requires v1.3.0
⌃ [44b1415a] ADIOS2_jll v2.9.4+0
  [d43303dc] Blosc2_jll v201.1500.0+0
  [6e34b625] Bzip2_jll v1.0.8+1
⌃ [0234f1f7] HDF5_jll v1.14.2+1
  [e33a78d0] Hwloc_jll v2.11.1+0
  [1d63c593] LLVMOpenMP_jll v15.0.7+0
  [5ced341a] Lz4_jll v1.10.0+0
  [7cb0a576] MPICH_jll v4.2.2+0
  [f1f71cc9] MPItrampoline_jll v5.4.0+0
  [9237b28f] MicrosoftMPI_jll v10.1.4+2
  [fe0851c0] OpenMPI_jll v5.0.4+0
  [458c3c95] OpenSSL_jll v3.0.14+0
  [8f1865be] ZeroMQ_jll v4.3.5+0
  [3161d3a3] Zstd_jll v1.5.6+0
  [477f73a3] libaec_jll v1.1.2+0
  [b53b4c65] libpng_jll v1.6.43+1
  [a9144af2] libsodium_jll v1.0.20+0
  [007be453] zfp_jll v1.0.1+0
  [0dad84c5] ArgTools v1.1.2
  [56f22d72] Artifacts v1.11.0
  [2a0f44e3] Base64 v1.11.0
  [ade2ca70] Dates v1.11.0
  [8ba89e20] Distributed v1.11.0
  [f43a241f] Downloads v1.6.0
  [7b1f6079] FileWatching v1.11.0
  [4af54fe1] LazyArtifacts v1.11.0
  [b27032c2] LibCURL v0.6.4
  [76f85450] LibGit2 v1.11.0
  [8f399da3] Libdl v1.11.0
  [56ddb016] Logging v1.11.0
  [d6f4376e] Markdown v1.11.0
  [ca575930] NetworkOptions v1.2.0
  [44cfe95a] Pkg v1.11.0
  [de0858da] Printf v1.11.0
  [9a3f8284] Random v1.11.0
  [ea8e919c] SHA v0.7.0
  [9e88b42a] Serialization v1.11.0
  [6462fe0b] Sockets v1.11.0
  [fa267f1f] TOML v1.0.3
  [a4e569a6] Tar v1.10.0
  [cf7118a7] UUIDs v1.11.0
  [4ec0a83e] Unicode v1.11.0
  [e66e0078] CompilerSupportLibraries_jll v1.1.1+0
  [deac9b47] LibCURL_jll v8.6.0+0
  [e37daf67] LibGit2_jll v1.7.2+0
  [29816b5a] LibSSH2_jll v1.11.0+1
  [c8ffd9c3] MbedTLS_jll v2.28.6+0
  [14a3606d] MozillaCACerts_jll v2023.12.12
  [83775a58] Zlib_jll v1.2.13+1
  [8e850ede] nghttp2_jll v1.59.0+0
  [3f19e933] p7zip_jll v17.4.0+2
Info Packages marked with ⌃ have new versions available and may be upgradable
lucass-carneiro commented 1 month ago

Even tough some packages are marked as upgradable, update fails in this case

lucass-carneiro commented 1 month ago

I have solved the issue: A fresh nightly Julia install via juliaup, with a fresh ~/.julia and new Manifest.toml, all correct versions are pulled and precompilation works.

I believe something was wrong with my Julia install and Manifes.toml info, and thus this is not really a package problem, so I believe we may close this issue as solved.

Thanks for the help Erik!