conda-forge / julia-feedstock

A conda-smithy repository for julia.
BSD 3-Clause "New" or "Revised" License
23 stars 32 forks source link

libz.so.1 dependency of libLLVM-15jl.so missing from expected directory #281

Open chrisjackson-pellicle opened 2 months ago

chrisjackson-pellicle commented 2 months ago

Solution to issue cannot be found in the documentation.

Issue

Hi,

Apologies if the below is based on my misunderstanding.

It appears that all julia conda-forge Linux packages >v1.8.5 are missing libz.so.1 in the directory expected by libLLVM-15jl.so (or libLLVM-14jl.so for julia 1.9.x), that is, path_to_conda_environment/lib/julia. Instead, these packages rely on the libz.so.1 being present in a standard system search path (e.g. /lib/x86_64-linux-gnu/ on my machine). When this library isn't present in a standard system search path, running julia produces the error e.g.:

Unable to load dependent library /usr/local/bin/../lib/julia/libjulia-codegen.so.1.10
Message: libz.so.1: cannot open shared object file: No such file or directory

I think the relevant shared library dependency hierarchy is:

libjulia-codegen.so.1.10 depends on libLLVM-15jl.so depends on libz.so.1.

libLLVM-15jl.so is located at path_to_conda_environment/lib/julia/libLLVM-15jl.so, and has Library runpath: [$ORIGIN] (as output by readelf -d). However, for the conda-forge julia installlibz.so.1 is located a directory higher at path_to_conda_environment/lib, and so it isn't found by libLLVM-15jl.so.

In the conda-forge julia v1.8.5 install, the libLLVM-13jl.so library has Library rpath: [$ORIGIN:$ORIGIN/..], and so it finds libz.so.1 at path path_to_conda_environment/lib.

For julia v1.10.4 downloaded directly from https://julialang.org/downloads/#current_stable_release (Generic Linux on x86, glibc binaries), libLLVM-15jl.so also only has Library runpath: [$ORIGIN], but libz.so.1 is present in lib/julia/, so it's not an issue.

This is all described in a bit more detail in the issue thread here, if it's useful.

If my understanding of the issues above is correct, would it be possible to fix this?

Thanks for any help!

Cheers,

Chris

Installed packages

# packages in environment at /home/cjackson/.conda/envs/julia:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       2_gnu    conda-forge
arpack                    3.9.1           nompi_h77f6705_101    conda-forge
bzip2                     1.0.8                hd590300_5    conda-forge
c-ares                    1.32.0               h4ab18f5_0    conda-forge
ca-certificates           2024.7.4             hbcca054_0    conda-forge
curl                      8.8.0                he654da7_1    conda-forge
git                       2.45.2          pl5321ha099dd3_1    conda-forge
gmp                       6.3.0                hac33072_2    conda-forge
icu                       73.2                 h59595ed_0    conda-forge
julia                     1.10.4               hf18f99d_1    conda-forge
keyutils                  1.6.1                h166bdaf_0    conda-forge
krb5                      1.21.3               h659f571_0    conda-forge
libblas                   3.9.0           22_linux64_openblas    conda-forge
libcblas                  3.9.0           22_linux64_openblas    conda-forge
libcurl                   8.8.0                hca28451_1    conda-forge
libedit                   3.1.20191231         he28a2e2_2    conda-forge
libev                     4.33                 hd590300_2    conda-forge
libexpat                  2.6.2                h59595ed_0    conda-forge
libgcc-ng                 14.1.0               h77fa898_0    conda-forge
libgfortran-ng            14.1.0               h69a702a_0    conda-forge
libgfortran5              14.1.0               hc5f4f2c_0    conda-forge
libgit2                   1.8.1                he8d1d4c_1    conda-forge
libgomp                   14.1.0               h77fa898_0    conda-forge
libhwloc                  2.11.0          default_h5622ce7_1000    conda-forge
libiconv                  1.17                 hd590300_2    conda-forge
liblapack                 3.9.0           22_linux64_openblas    conda-forge
libnghttp2                1.58.0               h47da74e_1    conda-forge
libopenblas               0.3.27          pthreads_hac2b453_1    conda-forge
libopenblas-ilp64         0.3.27          pthreads_h0afdb33_1    conda-forge
libopenlibm4              0.8.1                hd590300_1    conda-forge
libssh2                   1.11.0               h0841786_0    conda-forge
libstdcxx-ng              14.1.0               hc0a3c3a_0    conda-forge
libunwind                 1.6.2                h9c3ff4c_0    conda-forge
libutf8proc               2.8.0                h166bdaf_0    conda-forge
libxcrypt                 4.4.36               hd590300_1    conda-forge
libxml2                   2.12.7               hc051c1a_1    conda-forge
libzlib                   1.3.1                h4ab18f5_1    conda-forge
mbedtls                   3.5.1                h59595ed_0    conda-forge
metis                     5.1.0             h59595ed_1007    conda-forge
mpfr                      4.2.1                h9458935_1    conda-forge
ncurses                   6.5                  h59595ed_0    conda-forge
openblas-ilp64            0.3.27          pthreads_h3d04fff_1    conda-forge
openlibm                  0.8.1                hd590300_1    conda-forge
openssl                   3.3.1                h4ab18f5_1    conda-forge
p7zip                     16.02             h9c3ff4c_1001    conda-forge
pcre2                     10.44                h0f59acf_0    conda-forge
perl                      5.32.1          7_hd590300_perl5    conda-forge
suitesparse               7.7.0                hf4753ba_1    conda-forge
tbb                       2021.12.0            h434a139_2    conda-forge
xz                        5.2.6                h166bdaf_0    conda-forge
zlib                      1.3.1                h4ab18f5_1    conda-forge
zstd                      1.5.6                ha6fb4c9_0    conda-forge

Environment info

active environment : julia
    active env location : /home/cjackson/.conda/envs/julia
            shell level : 2
       user config file : /home/cjackson/.condarc
 populated config files : /home/cjackson/.condarc
          conda version : 24.5.0
    conda-build version : 24.5.0
         python version : 3.12.2.final.0
                 solver : libmamba (default)
       virtual packages : __archspec=1=zen
                          __conda=24.5.0=0
                          __glibc=2.28=0
                          __linux=4.18.0=0
                          __unix=0=0
       base environment : /opt/miniconda3  (read only)
      conda av data dir : /opt/miniconda3/etc/conda
  conda av metadata url : None
           channel URLs : https://conda.anaconda.org/conda-forge/linux-64
                          https://conda.anaconda.org/conda-forge/noarch
                          https://conda.anaconda.org/bioconda/linux-64
                          https://conda.anaconda.org/bioconda/noarch
                          https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /home/cjackson/.conda/pkgs
       envs directories : /home/cjackson/.conda/envs
                          /opt/miniconda3/envs
               platform : linux-64
             user-agent : conda/24.5.0 requests/2.31.0 CPython/3.12.2 Linux/4.18.0-25-generic ubuntu/18.10 glibc/2.28 solver/libmamba conda-libmamba-solver/24.1.0 libmambapy/1.5.8 aau/0.4.4 c/. s/. e/.
                UID:GID : 1001:1002
             netrc file : None
           offline mode : False