Makie.jl: Feature request: support using WGL backend without requring GLMakie to successfully build

Created on 27 Sep 2020  ยท  5Comments  ยท  Source: JuliaPlots/Makie.jl

If I understand correctly, Makie does not support using AMD graphics cards on Linux, as the AMD drivers need to load a different LLVM from the one Julia is linked with, causing conflicts. Once upon a time I could work around this by statically linking Julia's LLVM, but I can no longer successfully build Julia with a statically linked LLVM.

Unfortunately, this means I cannot use any of Makie's other backends either:

julia> using WGLMakie

julia> WGLMakie.activate!()
false

(@v1.5) pkg> build GLMakie # cannot build GLMakie
   Building ModernGL โ†’ `~/.julia/packages/ModernGL/rVuW2/deps/build.log`
   Building FFTW โ”€โ”€โ”€โ”€โ†’ `~/.julia/packages/FFTW/DMUbN/deps/build.log`
   Building GLMakie โ”€โ†’ `~/.julia/packages/GLMakie/4EXKe/deps/build.log`
โ”Œ Error: Error building `GLMakie`:
โ”‚
โ”‚ signal (11): Segmentation fault
โ”‚ in expression starting at /home/chriselrod/.julia/packages/GLMakie/4EXKe/deps/build.jl:31
โ”” @ Pkg.Operations ~/Documents/languages/julia/usr/share/julia/stdlib/v1.5/Pkg/src/Operations.jl:949

julia> using Makie # which means I cannot using Makie
[ Info: Precompiling Makie [ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a]
ERROR: LoadError: The file /home/chriselrod/.julia/packages/GLMakie/4EXKe/src/../deps/deps.jl does not exist.
This file is generated during the build process; it is possible that GLMakie
wasn't built correctly.  To rerun the build process, run `Pkg.build("GLMakie"),
or enter the Pkg REPL mode (`]`) and then type `build GLMakie`.

Stacktrace:
 [1] error(::String) at ./error.jl:33
 [2] top-level scope at /home/chriselrod/.julia/packages/GLMakie/4EXKe/src/GLMakie.jl:48

Of course, I'd also be happy if GLMakie were supported.

Most helpful comment

I may be wrong about this but can't you use AbstractPlotting instead of Makie to skip GLMakie?

All 5 comments

I may be wrong about this but can't you use AbstractPlotting instead of Makie to skip GLMakie?

@ffreyer Makie has:

Makie is the metapackage for a rich ecosystem, which consists of GLMakie.jl, CairoMakie.jl and WGLMakie.jl (the backends); AbstractPlotting.jl (the bulk of the package); and StatsMakie.jl (statistical plotting support, as in StatsPlots.jl).

I feel like using AbstractPlotting makes some part of the eco system missing?

module Makie

using AbstractPlotting, GLMakie
import FileIO
using GLMakie
using GLMakie: assetpath, loadasset

for name in names(AbstractPlotting)
    @eval import AbstractPlotting: $(name)
    @eval export $(name)
end

function logo()
    FileIO.load(joinpath(@__DIR__, "..", "assets", "logo.png"))
end

end

This is all that Makie is atm. You get everything by loading AbstractPlotting + a backend. You will lose out on some things depending on which backend you load, but that's it.

I'll file an issue with Polyhedra.jl then for requiring Makie instead of AbstractPlotting.

Sounds like a plan!

Was this page helpful?
0 / 5 - 0 ratings