Nixpkgs: julia_13: The lapackProvider couldn't link liblapack.so

Created on 29 May 2020  路  7Comments  路  Source: NixOS/nixpkgs

Describe the bug
the error caused by https://github.com/NixOS/nixpkgs/commit/43873351ffed36b52170571839e26b57c9f15920#diff-036410e9211b4336186fc613f7200b12R24424

error output

ln -sf /nix/store/w14gvb104fsxqn20aqx7bigvwygfkd39-pcre2-10.34/lib/libpcre2-8.so.0 /build/source/usr/lib/julia/libpcre2-8.so             
ln -sf /nix/store/p7jsg6hs9hqqsxxzp5862gxivadsk8z1-openlibm-0.7.0/lib/libopenlibm.so.3 /build/source/usr/lib/julia/libopenlibm.so        
make[1]: *** [Makefile:187: /build/source/usr/lib/julia/liblapack.so] Error 1                                                            
make[1]: *** Waiting for unfinished jobs....                                                                                             
ln -sf /nix/store/nf0qb57dirbrjz1p68m6906n8kbw1l51-blas-3/lib/libblas.so.3 /build/source/usr/lib/julia/libblas.so                        
    PERL base/build_h.jl.phony                                                                                                           
ln -sf /nix/store/3hkj53lkmaz332zv7kcap0rlr5g6vich-gmp-6.2.0/lib/libgmp.so.10 /build/source/usr/lib/julia/libgmp.so                      
make: *** [Makefile:66: julia-base] Error 2                                                                                              
make: *** Waiting for unfinished jobs....           

Maintainer information:

# a list of nixpkgs attributes affected by the problem
attribute: pkgs.julia_13
# a list of nixos modules affected by the problem
module:
bug

All 7 comments

thanks for checking @cstich @matthewbauer

Currently the julia expression is a bit of a mess, but as we are currently downloading all the dependencies anyway from the Julia website, we can probably just use the libraries provided by julia. The relevant lines in the julia expression are these:

  "USE_SYSTEM_BLAS=1"
  "USE_BLAS64=${if openblas.blas64 then "1" else "0"}"
  "LIBBLAS=-lopenblas"
  "LIBBLASNAME=libopenblas"

  "USE_SYSTEM_LAPACK=1"
  "LIBLAPACK=-lopenblas"
  "LIBLAPACKNAME=libopenblas"

the default setting of Blas/ALTS. it has been changed to

 "LIBBLAS=-lblas"
 "LIBLAPACK=-llapack"

So, Does the args assert blas.implementation == "openblas" && lapack.implementation == "openblas"; need to replace assert (!blas.isILP64) && (!lapack.isILP64); ? also, adding the openblas in buildInputs and changing default blas.implementation to openblas.

fixed liblapack link by https://github.com/GTrunSec/nixpkgs/commit/84c9fd7c468982bef3238d5363d7b1b5977f1f1f

new error output on compiling Julia's pkgs process

Warning: git information unavailable; versioning information limited
    JULIA usr/lib/julia/sys-o.a
Generating precompile statements...ERROR: LoadError: IOError: stream is closed or unusable
Stacktrace:
 [1] check_open at ./stream.jl:328 [inlined]
 [2] uv_write_async(::Base.TTY, ::Ptr{UInt8}, ::UInt64) at ./stream.jl:961
 [3] uv_write(::Base.TTY, ::Ptr{UInt8}, ::UInt64) at ./stream.jl:924
 [4] unsafe_write(::Base.TTY, ::Ptr{UInt8}, ::UInt64) at ./stream.jl:1007
 [5] macro expansion at ./gcutils.jl:91 [inlined]
 [6] write at ./strings/io.jl:186 [inlined]
 [7] write(::Base.TTY, ::SubString{String}, ::String) at ./io.jl:584
 [8] (::Main.anonymous.var"#2#6"{Float64,Base.DevNull})(::String, ::IOStream) at /build/source/contrib/generate_precompile.jl:120
 [9] mktemp(::Main.anonymous.var"#2#6"{Float64,Base.DevNull}, ::String) at ./file.jl:611
 [10] mktemp at ./file.jl:609 [inlined]
 [11] generate_precompile_statements() at /build/source/contrib/generate_precompile.jl:67
 [12] top-level scope at /build/source/contrib/generate_precompile.jl:177
in expression starting at /build/source/contrib/generate_precompile.jl:3
*** This error is usually fixed by running `make clean`. If the error persists, try `make cleanall`. ***
make[1]: *** [sysimage.mk:85: /build/source/usr/lib/julia/sys-o.a] Error 1

I got it compiling just by adding lapack to LD_LIBRARY_PATH:

  LD_LIBRARY_PATH = makeLibraryPath [
    arpack fftw fftwSinglePrec gmp libgit2 mpfr lapack blas openlibm
    openspecfun pcre2
  ];

But I had to disable the tests because some random ones fail (unfortunately I didn't record which ones).

Edit: after disabling the tests, things appear to be running okay so far.

I passed the compiling too. thanks for helping.
maybe we can disable the checkTarget by default. No binary cache at here. nobody wants to build it to spend 30mins.

You are very welcome. Thank you for fixing!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

domenkozar picture domenkozar  路  3Comments

langston-barrett picture langston-barrett  路  3Comments

copumpkin picture copumpkin  路  3Comments

ghost picture ghost  路  3Comments

rzetterberg picture rzetterberg  路  3Comments