Arpack does not build in 1.0 / Manjaro Linux

Hi,

Working on Manjaro Linux, GCC 8, Julia 1.0 installed with the official Manjaro repos.

I try to do some work with 1.0… Of course, none of my codes work (has been wrote in 0.5) :frowning:

I can fix it, but the problem is I can’t even have a proper working Julia installation anymore :frowning:

When trying to install LsqFit, I got an error message that Arpack can’t build:

Building Arpack → `~/.julia/packages/Arpack/WP3ru/deps/build.log`
┌ Error: Error building `Arpack`: 
│ ┌ Warning: Could not extract the platform key of https://github.com/JuliaLinearAlgebra/ArpackBuilder/releases/download/v3.5.0-0.2.20/ArpackBuilder.x86_64-linux-gnu.tar.gz; continuing...
│ └ @ BinaryProvider ~/.julia/packages/BinaryProvider/UTYxu/src/Prefix.jl:224
│ [ Info: Downloading https://github.com/JuliaLinearAlgebra/ArpackBuilder/releases/download/v3.5.0-0.2.20/ArpackBuilder.x86_64-linux-gnu.tar.gz to /home/charles/.julia/packages/Arpack/WP3ru/deps/usr/downloads/ArpackBuilder.x86_64-linux-gnu.tar.gz...
│ ERROR: LoadError: LibraryProduct(nothing, ["libarpack"], :libarpack, "Prefix(/home/charles/.julia/packages/Arpack/WP3ru/deps/usr)") is not satisfied, cannot generate deps.jl!
│ Stacktrace:
│  [1] #write_deps_file#134(::Bool, ::Function, ::String, ::Array{LibraryProduct,1}) at /home/charles/.julia/packages/BinaryProvider/UTYxu/src/Products.jl:409
│  [2] write_deps_file(::String, ::Array{LibraryProduct,1}) at /home/charles/.julia/packages/BinaryProvider/UTYxu/src/Products.jl:396
│  [3] top-level scope at none:0
│  [4] include(::String) at ./client.jl:388
│  [5] top-level scope at none:0
│ in expression starting at /home/charles/.julia/packages/Arpack/WP3ru/deps/build.jl:40
[15:24:23] ######################################################################## 100.0% 
└ @ Pkg.Operations /build/julia/src/julia/usr/share/julia/stdlib/v1.0/Pkg/src/Operations.jl:1068

I know it is probably related to this post, but I do not really understand the solution? Should I install Julia from the binary? Do anyone has any suggestion?

Yes, if you download the binary from Download Julia it should work.

Building on Arch Linux worked for me following the advice in this comment: https://github.com/JuliaLinearAlgebra/Arpack.jl/issues/5#issuecomment-400522447,

Not directly related, but since you mentioned you have to port code from 0.5:

1 Like

Those Manjaro repos are likely just the Arch Linux repos. I’m not sure why they are recompiled, Arch policy should dictate not changing upstream packages unless you have to.

Just downloading the default Julia binaries and running them from /opt works for me.

Thanks for the replies!!

I’m gonna remove official Julia, and install Julia 0.7 from binaries in this case!

This will leave me time to adapt my code to 1.0 also as suggested by @Sukera

1 Like

Both 0.7 and 1.0 are official and released builds - the difference between the two is that 0.7 has deprecation warnings for removed functions and 1.0 does not. In that respect, 0.7 is intended to be used for your precise usecase - porting old code to the newest version. Once it works on 0.7, it should also work an 1.0.

The only official distributions of julia are though julialang.org - if a third party package manager decides to recompile and distribute on their own, that’s on them and for them to debug.

Makes sense, I will transmit the problem on Manjaro’s forum. @Raf Manjaro does not use Arch repos directly, but their own repo.

Hum, but I still can’t have my code running or my packages installing… They require PyCall that does not build in 0.7 :disappointed_relieved:

I can’t spend hours dealing with such issues, I need productivity at this stage… => it was faster for me to re-code everything in Python… :frowning:

What? PyCall builds just fine in 0.7.

Apparently no. I got this error, and I can’t figure what is creating it…

Building PyCall → `~/.julia/packages/PyCall/rUul9/deps/build.log`
┌ Error: Error building `PyCall`: 
│ ┌ Warning: Deprecated syntax `(init === nothing) ? if (dims === nothing)
│ │     Base.reduce
│ │     op
│ │     a
│ │ else
│ │     Base.reducedim
│ │     op
│ │     a
│ │     dims
│ │ end :#<eof>` at /home/charles/.julia/packages/Compat/JgmI1/src/Compat.jl:1818.
│ │ Use `(init === nothing) ? if (dims === nothing)
│ │     Base.reduce
│ │     op
│ │     a
│ │ else
│ │     Base.reducedim
│ │     op
│ │     a
│ │     dims
│ │ end : #<eof>` instead.
│ └ @ ~/.julia/packages/Compat/JgmI1/src/Compat.jl:1818
│ ERROR: LoadError: syntax: incomplete: premature end of input
│ Stacktrace:
│  [1] include at ./boot.jl:317 [inlined]
│  [2] include_relative(::Module, ::String) at ./loading.jl:1038
│  [3] include(::Module, ::String) at ./sysimg.jl:29
│  [4] top-level scope at none:2
│  [5] eval at ./boot.jl:319 [inlined]
│  [6] eval(::Expr) at ./client.jl:399
│  [7] top-level scope at ./none:3
│ in expression starting at /home/charles/.julia/packages/Compat/JgmI1/src/Compat.jl:3
│ ERROR: LoadError: Failed to precompile Compat [34da2185-b29b-5c13-b0c7-acf172513d20] to /home/charles/.julia/compiled/v0.7/Compat/GSFWK.ji.
│ Stacktrace:
│  [1] error(::String) at ./error.jl:33
│  [2] macro expansion at ./logging.jl:313 [inlined]
│  [3] compilecache(::Base.PkgId, ::String) at ./loading.jl:1185
│  [4] _require(::Base.PkgId) at ./logging.jl:311
│  [5] require(::Base.PkgId) at ./loading.jl:852
│  [6] macro expansion at ./logging.jl:311 [inlined]
│  [7] require(::Module, ::Symbol) at ./loading.jl:834
│  [8] include at ./boot.jl:317 [inlined]
│  [9] include_relative(::Module, ::String) at ./loading.jl:1038
│  [10] include(::Module, ::String) at ./sysimg.jl:29
│  [11] include(::String) at ./client.jl:398
│  [12] top-level scope at none:0
│ in expression starting at /home/charles/.julia/packages/PyCall/rUul9/deps/build.jl:8
└ @ Pkg.Operations /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v0.7/Pkg/src/Operations.jl:1068


Works fine for me on Arch and 0.7 with “PyCall” => v"1.18.2"

Maybe check your package version? that looks like an older version with the depreciation warnings?

Actually I think the error comes from Compat… For whatever reason, I can’t even update PyPlot without having this issue that seems related to Compat.

I get this error trying to call or build anything actually (IJulia in this case):

Failed to precompile Compat [34da2185-b29b-5c13-b0c7-acf172513d20] to /home/charles/.julia/compiled/v0.7/Compat/GSFWK.ji.

Solved the problem. I had to remove manually Compat (deleting .julia/packages/Compat) and re-install it.

Intriguing that it broke on a brand new install of Julia…

Has this issue been solved? I still have the issue in Fedora 29, but I prefer to install Julia from repository. If it is in the repository, then it is supposed to work…
Building from source makes it tricky for updating.

This issue has been around for a while.

It works here with the RPM from my Copr. Are you using the official package or the Copr one?

Making it easy to update is why I have been building from source. git pull && make -j[number of cores].
Of course, letting the package manager take care of things is even easier, assuming you’re keeping your system up to date anyway.

I just installed Julia using sudo dnf install Julia.

https://copr.fedorainfracloud.org/coprs/nalimilan/julia/