Hi there,
I recently upgraded to 1.8.0. At some point I lost the ability to precompile plots due to a GR_jll error. I see other people have had similar issues and have tried the following with no luck:
Removing .julia
Building GR again
Setting ENV[“GRDIR”] = “”
The only solution I have found to work is downgrading the GR.jl package. Otherwise I get the following error:
ERROR: LoadError: InitError: UndefVarError: GR_jll not defined
Can anyone explain why this is the case? I’d rather not have to downgrade any of my packages.
FYI I’m on a linux machine.
1 Like
what versions of packages do you have?
(@v1.8 ) pkg> status
Status ~/.julia/environments/v1.8/Project.toml
[336ed68f] CSV v0.10.4
[82f2e89e] ClickHouse v0.2.2
[1313f7d8] DataFramesMeta v0.12.0
[28b8d3ca] GR v0.69.3
[91a5bcdd] Plots v1.35.2
1 Like
t-bltg
October 4, 2022, 2:42pm
#4
Can you output the whole stacktrace ? We’ve had some issues with window
or macOS
recently, but none on linux
.
Is your julia
an official release (Download Julia ) of a build of your distro ?
ERROR: LoadError: InitError: UndefVarError: GR_jll not defined
Stacktrace:
[1] init ()
@ GR.GRPreferences ~/.julia/packages/GR/Wz6ek/src/preferences.jl:40
[2] _include_from_serialized(pkg::Base.PkgId, path::String, depmods::Vector{Any})
@ Base ./loading.jl:831
[3] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt64)
@ Base ./loading.jl:1039
[4] _require(pkg::Base.PkgId)
@ Base ./loading.jl:1315
[5] _require_prelocked(uuidkey::Base.PkgId)
@ Base ./loading.jl:1200
[6] macro expansion
@ ./loading.jl:1180 [inlined]
[7] macro expansion
@ ./lock.jl:223 [inlined]
[8] require(into::Module, mod::Symbol)
@ Base ./loading.jl:1144
[9] include(mod::Module, _path::String)
@ Base ./Base.jl:419
[10] include(x::String)
@ Plots ~/.julia/packages/Plots/CUQan/src/Plots.jl:1
[11] top-level scope
@ ~/.julia/packages/Plots/CUQan/src/Plots.jl:201
[12] include
@ ./Base.jl:419 [inlined]
[13] 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:1554
[14] top-level scope
@ stdin:1
during initialization of module GRPreferences
in expression starting at /home/jcooper/.julia/packages/Plots/CUQan/src/backends/gr.jl:3
in expression starting at /home/jcooper/.julia/packages/Plots/CUQan/src/Plots.jl:1
in expression starting at stdin:1
ERROR: Failed to precompile Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80] to /home/jcooper/.julia/compiled/v1.8/Plots/jl_hLRsn0.
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:35
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool)
@ Base ./loading.jl:1705
[3] compilecache
@ ./loading.jl:1649 [inlined]
[4] _require(pkg::Base.PkgId)
@ Base ./loading.jl:1337
[5] _require_prelocked(uuidkey::Base.PkgId)
@ Base ./loading.jl:1200
[6] macro expansion
@ ./loading.jl:1180 [inlined]
[7] macro expansion
@ ./lock.jl:223 [inlined]
[8] require(into::Module, mod::Symbol)
@ Base ./loading.jl:1144
1 Like
Yes. It is a tar.gz download from official julia website.
1 Like
t-bltg
October 4, 2022, 2:47pm
#7
Thanks, now can set the environment variable JULIA_DEBUG
to GR
before starting julia ?
$ JULIA_DEBUG=GR julia
julia> using Plots
┌ Debug: import GR_jll failed
│ err = [...]
└ @ GR.GRPreferences [...]/GR.jl/src/preferences.jl:7
and post the output ?
Alternatively you can do this from within julia:
julia> ENV["JULIA_DEBUG"] = "GR";
julia> using Plots
[...]
It should trigger GR.jl/preferences.jl at ce153a2626413668d0387d6ff62008e2dc3fbf55 · jheinen/GR.jl · GitHub .
With the latest releases of Plots (1.35) and GR (0.69), you should not need to explicitly call out GR in the Project.toml. You should be able to ] rm GR
, then ] up
in Pkg mode without the need to build GR
or anything like that. This is due to the transition to artifacts in GR to allow more extensive precompilation.
1 Like
With debug enabled:
julia>
(base) [jcooper@hkquant01 v1.8]$ JULIA_DEBUG=GR julia
_
_ _ ( )_ | Documentation: https://docs.julialang.org
() | ( ) () |
_ _ | | __ _ | Type “?” for help, “]?” for Pkg help.
| | | | | | |/ ` | |
| | | | | | | ( | | | Version 1.8.0 (2022-08-17)
/ |_ ‘| ||_ ’_| | Official https://julialang.org/ release
|__/ |
julia> using Plots
[ Info: Precompiling Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80]
ERROR: LoadError: InitError: UndefVarError: GR_jll not defined
Stacktrace:
[1] init ()
@ GR.GRPreferences ~/.julia/packages/GR/Wz6ek/src/preferences.jl:40
[2] _include_from_serialized(pkg::Base.PkgId, path::String, depmods::Vector{Any})
@ Base ./loading.jl:831
[3] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt64)
@ Base ./loading.jl:1039
[4] _require(pkg::Base.PkgId)
@ Base ./loading.jl:1315
[5] _require_prelocked(uuidkey::Base.PkgId)
@ Base ./loading.jl:1200
[6] macro expansion
@ ./loading.jl:1180 [inlined]
[7] macro expansion
@ ./lock.jl:223 [inlined]
[8] require(into::Module, mod::Symbol)
@ Base ./loading.jl:1144
[9] include(mod::Module, _path::String)
@ Base ./Base.jl:419
[10] include(x::String)
@ Plots ~/.julia/packages/Plots/CUQan/src/Plots.jl:1
[11] top-level scope
@ ~/.julia/packages/Plots/CUQan/src/Plots.jl:201
[12] include
@ ./Base.jl:419 [inlined]
[13] 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:1554
[14] top-level scope
@ stdin:1
during initialization of module GRPreferences
in expression starting at /home/jcooper/.julia/packages/Plots/CUQan/src/backends/gr.jl:3
in expression starting at /home/jcooper/.julia/packages/Plots/CUQan/src/Plots.jl:1
in expression starting at stdin:1
ERROR: Failed to precompile Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80] to /home/jcooper/.julia/compiled/v1.8/Plots/jl_1BdlLv.
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:35
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool)
@ Base ./loading.jl:1705
[3] compilecache
@ ./loading.jl:1649 [inlined]
[4] _require(pkg::Base.PkgId)
@ Base ./loading.jl:1337
[5] _require_prelocked(uuidkey::Base.PkgId)
@ Base ./loading.jl:1200
[6] macro expansion
@ ./loading.jl:1180 [inlined]
[7] macro expansion
@ ./lock.jl:223 [inlined]
[8] require(into::Module, mod::Symbol)
@ Base ./loading.jl:1144
Not sure the debug has been triggered properly?
I get the same error regardless of whether I explicitly call GR or not. I just had it explicitly called because I was trying different versions.
I’ve also found I get a different error if I try to precompile GR_jll directly:
julia> using GR_jll
[ Info: Precompiling GR_jll [d2c73de3-f751-5644-a686-071e5b155ba9]
ERROR: LoadError: InitError: could not load library “/home/jcooper/.julia/artifacts/a84cc58d5161b950f268bb562e105bbbf4d6004a/lib/libEGL.so”
dlopen: cannot load any more object with static TLS
Stacktrace:
[1] dlopen(s::String, flags::UInt32; throw_error::Bool)
@ Base.Libc.Libdl ./libdl.jl:117
[2] dlopen(s::String, flags::UInt32)
@ Base.Libc.Libdl ./libdl.jl:116
[3] macro expansion
@ ~/.julia/packages/JLLWrappers/QpMQW/src/products/library_generators.jl:54 [inlined]
[4] init ()
@ Libglvnd_jll ~/.julia/packages/Libglvnd_jll/pJrjy/src/wrappers/x86_64-linux-gnu.jl:16
[5] _include_from_serialized(pkg::Base.PkgId, path::String, depmods::Vector{Any})
@ Base ./loading.jl:831
[6] _tryrequire_from_serialized(modkey::Base.PkgId, path::String, sourcepath::String, depmods::Vector{Any})
@ Base ./loading.jl:938
[7] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt64)
@ Base ./loading.jl:1028
[8] _require(pkg::Base.PkgId)
@ Base ./loading.jl:1315
[9] _require_prelocked(uuidkey::Base.PkgId)
@ Base ./loading.jl:1200
[10] macro expansion
@ ./loading.jl:1180 [inlined]
[11] macro expansion
@ ./lock.jl:223 [inlined]
[12] require(into::Module, mod::Symbol)
@ Base ./loading.jl:1144
[13] include(mod::Module, _path::String)
@ Base ./Base.jl:419
[14] top-level scope
@ ~/.julia/packages/JLLWrappers/QpMQW/src/toplevel_generators.jl:188
[15] include
@ ./Base.jl:419 [inlined]
[16] 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:1554
[17] top-level scope
@ stdin:1
during initialization of module Libglvnd_jll
in expression starting at /home/jcooper/.julia/packages/GR_jll/48Bah/src/wrappers/x86_64-linux-gnu-cxx11.jl:8
in expression starting at /home/jcooper/.julia/packages/GR_jll/48Bah/src/GR_jll.jl:2
in expression starting at stdin:1
ERROR: Failed to precompile GR_jll [d2c73de3-f751-5644-a686-071e5b155ba9] to /home/jcooper/.julia/compiled/v1.8/GR_jll/jl_DHHMuf.
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:35
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool)
@ Base ./loading.jl:1705
[3] compilecache
@ ./loading.jl:1649 [inlined]
[4] _require(pkg::Base.PkgId)
@ Base ./loading.jl:1337
[5] _require_prelocked(uuidkey::Base.PkgId)
@ Base ./loading.jl:1200
[6] macro expansion
@ ./loading.jl:1180 [inlined]
[7] macro expansion
@ ./lock.jl:223 [inlined]
[8] require(into::Module, mod::Symbol)
@ Base ./loading.jl:1144
Lilith
December 7, 2022, 9:07am
#12
I got this same error message and ]add GR
fixed it for me.
1 Like