When using USE_SYSTEM_CSL=1, even if libquadmath is symlinked to the private lib/julia directory, the library is resolved to a system path:

julia> using Libdl
julia> foreach(println, Libdl.dllist())
linux-vdso.so.1
/lib/x86_64-linux-gnu/libc.so.6
$PREFIX/bin/../lib/libjulia.so.1
/lib64/ld-linux-x86-64.so.2
$PREFIX/bin/../lib/julia/libjulia-internal.so.1
$PREFIX/bin/../lib/julia/libunwind.so.8
$PREFIX/bin/../lib/julia/libatomic.so.1
$PREFIX/bin/../lib/julia/libstdc++.so.6
$PREFIX/bin/../lib/julia/libm.so.6
$PREFIX/bin/../lib/julia/libgcc_s.so.1
$PREFIX/bin/../lib/julia/libjulia-codegen.so.1
$PREFIX/bin/../lib/julia/libLLVM-14jl.so
$PREFIX/lib/julia/sys.so
$PREFIX/bin/../lib/julia/libpcre2-8.so
$PREFIX/bin/../lib/julia/libgmp.so
$PREFIX/bin/../lib/julia/libmpfr.so
$PREFIX/bin/../lib/julia/libgfortran.so.5
/lib/x86_64-linux-gnu/libquadmath.so.0  # <===== system path here
$PREFIX/bin/../lib/julia/libgomp.so.1
$PREFIX/bin/../lib/julia/libopenblas64_.so
$PREFIX/bin/../lib/julia/libblastrampoline.so
$PREFIX/bin/../lib/julia/libcholmod.so
$PREFIX/bin/../lib/julia/libamd.so.2
$PREFIX/bin/../lib/julia/libcolamd.so.2
$PREFIX/bin/../lib/julia/libsuitesparseconfig.so.5
$PREFIX/bin/../lib/julia/libccolamd.so.2
$PREFIX/bin/../lib/julia/libcamd.so.2
$PREFIX/bin/../lib/julia/libnghttp2.so.14
$PREFIX/bin/../lib/julia/libcurl.so
$PREFIX/bin/../lib/julia/libssh2.so.1
$PREFIX/bin/../lib/julia/libmbedtls.so.14
$PREFIX/bin/../lib/julia/libmbedx509.so.1
$PREFIX/bin/../lib/julia/libmbedcrypto.so.7
$PREFIX/bin/../lib/julia/libz.so.1

libquadmath is a dependency of libgfortran.

I don't know if this is relevant (I'm not very familiar with julia loading mechanism, does it use DT_RPATH or DT_RUNPATH ?), but on my system (linux):

$ patchelf --print-rpath [USE_SYSTEM_CSL=1_build]/bin/../lib/julia/libgfortran.so.5

$ patchelf --print-rpath [official_julia_release]/bin/../lib/julia/libgfortran.so.5
$ORIGIN

Should libquadmath be explicitly loaded before libgfortran in CompilerSupportLibraries_jll ?

0

cc @giordano @staticfloat in case we need to do anything here.

0

Yes, I believe @t-bltg's diagnosis is correct; libquadmath should be loaded before libgfortran. The annoying part is, not all platforms have a libquadmath, so we have to either ignore failures or only open it on platforms that contain it.

0
© 2022 pullanswer.com - All rights reserved.