Error building FFTW and SpecialFunctions on ElementaryOS

Does anyone have any insight into this error? This is on a clean Julia build (freshly installed 1.2.0).

(v1.2) pkg> add DSP
   ... # removed for brevity
  Building FFTW ────────────→ `~/.julia/packages/FFTW/MJ7kl/deps/build.log`
┌ Error: Error building `FFTW`: 
│ [ Info: Downloading https://github.com/JuliaBinaryWrappers/FFTW_jll.jl/releases/download/FFTW-v3.3.9+2/FFTW.v3.3.9.x86_64-linux-gnu.tar.gz to /home/anthony/.julia/packages/FFTW/MJ7kl/deps/usr/downloads/FFTW.v3.3.9.x86_64-linux-gnu.tar.gz...
│ ERROR: LoadError: LoadError: Could not download https://github.com/JuliaBinaryWrappers/FFTW_jll.jl/releases/download/FFTW-v3.3.9+2/FFTW.v3.3.9.x86_64-linux-gnu.tar.gz to /home/anthony/.julia/packages/FFTW/MJ7kl/deps/usr/downloads/FFTW.v3.3.9.x86_64-linux-gnu.tar.gz:
│ ErrorException("")
│ Stacktrace:
│  [1] error(::String) at ./error.jl:33
│  [2] #download#89(::Bool, ::typeof(BinaryProvider.download), ::String, ::String) at /home/anthony/.julia/packages/BinaryProvider/TcAwt/src/PlatformEngines.jl:498
│  [3] #download at ./none:0 [inlined]
│  [4] #download_verify#90(::Bool, ::Bool, ::Bool, ::typeof(download_verify), ::String, ::String, ::String) at /home/anthony/.julia/packages/BinaryProvider/TcAwt/src/PlatformEngines.jl:567
│  [5] #download_verify at ./tuple.jl:0 [inlined]
│  [6] #install#129(::Prefix, ::String, ::Bool, ::Bool, ::Bool, ::typeof(install), ::String, ::String) at /home/anthony/.julia/packages/BinaryProvider/TcAwt/src/Prefix.jl:314
│  [7] (::getfield(BinaryProvider, Symbol("#kw##install")))(::NamedTuple{(:prefix, :force, :verbose),Tuple{Prefix,Bool,Bool}}, ::typeof(install), ::String, ::String) at ./tuple.jl:0
│  [8] top-level scope at /home/anthony/.julia/packages/FFTW/MJ7kl/deps/build_fftw.jl:45
│  [9] include at ./boot.jl:328 [inlined]
│  [10] include_relative(::Module, ::String) at ./loading.jl:1094
│  [11] include(::Module, ::String) at ./Base.jl:31
│  [12] include(::String) at ./client.jl:431
│  [13] top-level scope at /home/anthony/.julia/packages/FFTW/MJ7kl/deps/build.jl:49
│  [14] include at ./boot.jl:328 [inlined]
│  [15] include_relative(::Module, ::String) at ./loading.jl:1094
│  [16] include(::Module, ::String) at ./Base.jl:31
│  [17] include(::String) at ./client.jl:431
│  [18] top-level scope at none:5
│ in expression starting at /home/anthony/.julia/packages/FFTW/MJ7kl/deps/build_fftw.jl:43
│ in expression starting at /home/anthony/.julia/packages/FFTW/MJ7kl/deps/build.jl:20
│ caused by [exception 1]
│ 
│ Stacktrace:
│  [1] error() at ./error.jl:42
│  [2] #download#89(::Bool, ::typeof(BinaryProvider.download), ::String, ::String) at /home/anthony/.julia/packages/BinaryProvider/TcAwt/src/PlatformEngines.jl:492
│  [3] #download at ./none:0 [inlined]
│  [4] #download_verify#90(::Bool, ::Bool, ::Bool, ::typeof(download_verify), ::String, ::String, ::String) at /home/anthony/.julia/packages/BinaryProvider/TcAwt/src/PlatformEngines.jl:567
│  [5] #download_verify at ./tuple.jl:0 [inlined]
│  [6] #install#129(::Prefix, ::String, ::Bool, ::Bool, ::Bool, ::typeof(install), ::String, ::String) at /home/anthony/.julia/packages/BinaryProvider/TcAwt/src/Prefix.jl:314
│  [7] (::getfield(BinaryProvider, Symbol("#kw##install")))(::NamedTuple{(:prefix, :force, :verbose),Tuple{Prefix,Bool,Bool}}, ::typeof(install), ::String, ::String) at ./tuple.jl:0
│  [8] top-level scope at /home/anthony/.julia/packages/FFTW/MJ7kl/deps/build_fftw.jl:45
│  [9] include at ./boot.jl:328 [inlined]
│  [10] include_relative(::Module, ::String) at ./loading.jl:1094
│  [11] include(::Module, ::String) at ./Base.jl:31
│  [12] include(::String) at ./client.jl:431
│  [13] top-level scope at /home/anthony/.julia/packages/FFTW/MJ7kl/deps/build.jl:49
│  [14] include at ./boot.jl:328 [inlined]
│  [15] include_relative(::Module, ::String) at ./loading.jl:1094
│  [16] include(::Module, ::String) at ./Base.jl:31
│  [17] include(::String) at ./client.jl:431
│  [18] top-level scope at none:5
│ [15:52:31] curl: symbol lookup error: /home/anthony/miniconda3/bin/../lib/libcurl.so.4: undefined symbol: SSLv2_client_method
└ @ Pkg.Operations /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.2/Pkg/src/backwards_compatible_isolation.jl:647
  Building SpecialFunctions → `~/.julia/packages/SpecialFunctions/ne2iw/deps/build.log`
┌ Error: Error building `SpecialFunctions`: 
│ [ Info: Downloading https://github.com/JuliaPackaging/Yggdrasil/releases/download/OpenSpecFun-v0.5.3+0/OpenSpecFun.v0.5.3.x86_64-linux-gnu-gcc7.tar.gz to /home/anthony/.julia/packages/SpecialFunctions/ne2iw/deps/usr/downloads/OpenSpecFun.v0.5.3.x86_64-linux-gnu-gcc7.tar.gz...
│ ERROR: LoadError: Could not download https://github.com/JuliaPackaging/Yggdrasil/releases/download/OpenSpecFun-v0.5.3+0/OpenSpecFun.v0.5.3.x86_64-linux-gnu-gcc7.tar.gz to /home/anthony/.julia/packages/SpecialFunctions/ne2iw/deps/usr/downloads/OpenSpecFun.v0.5.3.x86_64-linux-gnu-gcc7.tar.gz:
│ ErrorException("")
│ Stacktrace:
│  [1] error(::String) at ./error.jl:33
│  [2] #download#89(::Bool, ::typeof(BinaryProvider.download), ::String, ::String) at /home/anthony/.julia/packages/BinaryProvider/TcAwt/src/PlatformEngines.jl:498
│  [3] #download at ./none:0 [inlined]
│  [4] #download_verify#90(::Bool, ::Bool, ::Bool, ::typeof(download_verify), ::String, ::String, ::String) at /home/anthony/.julia/packages/BinaryProvider/TcAwt/src/PlatformEngines.jl:567
│  [5] #download_verify at ./tuple.jl:0 [inlined]
│  [6] #install#129(::Prefix, ::String, ::Bool, ::Bool, ::Bool, ::typeof(install), ::String, ::String) at /home/anthony/.julia/packages/BinaryProvider/TcAwt/src/Prefix.jl:314
│  [7] (::getfield(BinaryProvider, Symbol("#kw##install")))(::NamedTuple{(:prefix, :force, :verbose),Tuple{Prefix,Bool,Bool}}, ::typeof(install), ::String, ::String) at ./tuple.jl:0
│  [8] top-level scope at /home/anthony/.julia/packages/SpecialFunctions/ne2iw/deps/build.jl:142
│  [9] include at ./boot.jl:328 [inlined]
│  [10] include_relative(::Module, ::String) at ./loading.jl:1094
│  [11] include(::Module, ::String) at ./Base.jl:31
│  [12] include(::String) at ./client.jl:431
│  [13] top-level scope at none:5
│ in expression starting at /home/anthony/.julia/packages/SpecialFunctions/ne2iw/deps/build.jl:139
│ caused by [exception 1]
│ 
│ Stacktrace:
│  [1] error() at ./error.jl:42
│  [2] #download#89(::Bool, ::typeof(BinaryProvider.download), ::String, ::String) at /home/anthony/.julia/packages/BinaryProvider/TcAwt/src/PlatformEngines.jl:492
│  [3] #download at ./none:0 [inlined]
│  [4] #download_verify#90(::Bool, ::Bool, ::Bool, ::typeof(download_verify), ::String, ::String, ::String) at /home/anthony/.julia/packages/BinaryProvider/TcAwt/src/PlatformEngines.jl:567
│  [5] #download_verify at ./tuple.jl:0 [inlined]
│  [6] #install#129(::Prefix, ::String, ::Bool, ::Bool, ::Bool, ::typeof(install), ::String, ::String) at /home/anthony/.julia/packages/BinaryProvider/TcAwt/src/Prefix.jl:314
│  [7] (::getfield(BinaryProvider, Symbol("#kw##install")))(::NamedTuple{(:prefix, :force, :verbose),Tuple{Prefix,Bool,Bool}}, ::typeof(install), ::String, ::String) at ./tuple.jl:0
│  [8] top-level scope at /home/anthony/.julia/packages/SpecialFunctions/ne2iw/deps/build.jl:142
│  [9] include at ./boot.jl:328 [inlined]
│  [10] include_relative(::Module, ::String) at ./loading.jl:1094
│  [11] include(::Module, ::String) at ./Base.jl:31
│  [12] include(::String) at ./client.jl:431
│  [13] top-level scope at none:5
│ [15:52:36] curl: symbol lookup error: /home/anthony/miniconda3/bin/../lib/libcurl.so.4: undefined symbol: SSLv2_client_method
└ @ Pkg.Operations /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.2/Pkg/src/backwards_compatible_isolation.jl:647

Hi @degleris1. Welcome to Julia! Under the hood, the DSP package relies on the FFTW C library. When you add the package julia will automatically download the FFTW library for you. It looks like in your case it simply failed to download the library. I just checked that adding DSP works for me on julia 1.2 on Linux. Might just have been a temporary connectivity issue. You can do

pkg> build FFTW

to try downloading that dependency again.

@Pbellive I’m not sure that’s it. I’ve tried a few times over two different networks now and receive the same error message. Building other packages (e.g. CSV) seems to work fine.

For reference, I had DSP installed on Julia 1.1 and it was working fine earlier this year. When I tried to build it this morning, building FFTW failed with a similar error. I thought this was a problem with my specific Julia distribution (I tweaked some things in the past), so I clean built today. However, the error still persists.

Edit: If I set ENV["JULIA_FFTW_PROVIDER"] = "MKL", as mentioned here, then a new error message appears:

  Building Conda → `~/.julia/packages/Conda/kLXeC/deps/build.log`
  Building FFTW ─→ `~/.julia/packages/FFTW/MJ7kl/deps/build.log`
┌ Error: Error building `FFTW`: 
│ [ Info: Downloading miniconda installer ...
│ ┌ Error: Download failed: curl: symbol lookup error: /home/anthony/miniconda3/bin/../lib/libcurl.so.4: undefined symbol: SSLv2_client_method
│ └ @ Base download.jl:43
│ ERROR: LoadError: failed process: Process(`curl -s -S -g -L -f -o /home/anthony/.julia/conda/3/installer.sh https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh`, ProcessExited(127)) [127]
│ 
│ Stacktrace:
│  [1] pipeline_error at ./process.jl:813 [inlined]
│  [2] download_curl(::String, ::String, ::String) at ./download.jl:44
│  [3] download(::String, ::String) at ./download.jl:52
│  [4] _install_conda(::String, ::Bool) at /home/anthony/.julia/packages/Conda/kLXeC/src/Conda.jl:160
│  [5] _install_conda(::String) at /home/anthony/.julia/packages/Conda/kLXeC/src/Conda.jl:152
│  [6] runconda(::Cmd, ::String) at /home/anthony/.julia/packages/Conda/kLXeC/src/Conda.jl:111
│  [7] #add#1(::String, ::typeof(Conda.add), ::String, ::String) at /home/anthony/.julia/packages/Conda/kLXeC/src/Conda.jl:184
│  [8] add at /home/anthony/.julia/packages/Conda/kLXeC/src/Conda.jl:183 [inlined] (repeats 2 times)
│  [9] top-level scope at /home/anthony/.julia/packages/FFTW/MJ7kl/deps/build.jl:25
│  [10] include at ./boot.jl:328 [inlined]
│  [11] include_relative(::Module, ::String) at ./loading.jl:1094
│  [12] include(::Module, ::String) at ./Base.jl:31
│  [13] include(::String) at ./client.jl:431
│  [14] top-level scope at none:5
│ in expression starting at /home/anthony/.julia/packages/FFTW/MJ7kl/deps/build.jl:20
└ @ Pkg.Operations /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.2/Pkg/src/backwards_compatible_isolation.jl:647

Sounds like you have a broken curl program in your PATH, probably from an out-of-date Anaconda installation. Since Julia uses curl to download things, this will break lots of package installations.

1 Like

Removing Anaconda worked. Thanks!

1 Like