JuliaLinearAlgebra / Octavian.jl

Multi-threaded BLAS-like library that provides pure Julia matrix multiplication
https://julialinearalgebra.github.io/Octavian.jl/stable/
Other
231 stars 18 forks source link

Installing Octavian fails due to undefined `maybestaticlength` #100

Closed sloede closed 3 years ago

sloede commented 3 years ago

When trying to install Octavian on a fresh Julia 1.6.1 installation (with an empty ~/.julia folder), it currently fails with the following error (after doing ] add Octavian:

[...]
Precompiling project...
  ✗ Octavian
  21 dependencies successfully precompiled in 28 seconds
  1 dependency errored. To see a full report either run `import Pkg; Pkg.precompile()` or load the package

Running the suggested commands, I get

julia> import Pkg; Pkg.precompile()
Precompiling project...
  ✗ Octavian
  0 dependencies successfully precompiled in 3 seconds (21 already precompiled)

ERROR: The following 1 direct dependency failed to precompile:

Octavian [6fd5a793-0b7e-452c-907f-f8bfe9c57db4]

ERROR: LoadError: UndefVarError: maybestaticsize not defined
Stacktrace:
 [1] include
   @ ./Base.jl:386 [inlined]
 [2] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::Nothing)
   @ Base ./loading.jl:1213
 [3] top-level scope
   @ none:1
 [4] eval
   @ ./boot.jl:360 [inlined]
 [5] eval(x::Expr)
   @ Base.MainInclude ./client.jl:446
 [6] top-level scope
   @ none:1
in expression starting at /home/mschlott/.julia/packages/Octavian/KFBPM/src/Octavian.jl:1
Stacktrace:
 [1] pkgerror(msg::String)
   @ Pkg.Types /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/Types.jl:55
 [2] precompile(ctx::Pkg.Types.Context; internal_call::Bool, strict::Bool, kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
   @ Pkg.API /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/API.jl:1244
 [3] precompile
   @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/API.jl:920 [inlined]
 [4] #precompile#196
   @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/API.jl:918 [inlined]
 [5] precompile()
   @ Pkg.API /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/API.jl:918
 [6] top-level scope
   @ REPL[3]:1

julia>

I assume it's related to the patch release of LoopVectorization (v0.12.39) from ~two hours ago, which from the diff at least seems to be messing with the complained about maybestaticlength. Unfortunately, here I've reached the limits of my understanding of the internals of LoopVec and VecBase and hope that someone else already knows what's happening :-)

chriselrod commented 3 years ago

Thanks for the issue. Octavian wasn't even using it anyway. Removing the using LoopVectorization: maybestaticlength fixed the problem. I'll merge and issue a new release once tests pass.