JuliaGraphics / Cairo.jl

Bindings to the Cairo graphics library.
Other
87 stars 55 forks source link

Cairo import fails on v1.6 #341

Closed montyvesselinov closed 3 weeks ago

montyvesselinov commented 3 years ago
julia> import Cairo
[ Info: Precompiling Cairo [159f3aea-2a34-519c-b102-8c37f9878175]
ERROR: LoadError: LoadError: InitError: could not load library "/Users/vvv/.julia/artifacts/14819d58d81af1286ea71ca9ab144f64bb41f625/lib/libicudata.67.1.dylib"
dlopen(/Users/vvv/.julia/artifacts/14819d58d81af1286ea71ca9ab144f64bb41f625/lib/libicudata.67.1.dylib, 1): image not found
Stacktrace:
  [1] dlopen(s::String, flags::UInt32; throw_error::Bool)
    @ Base.Libc.Libdl ./libdl.jl:114
  [2] dlopen(s::String, flags::UInt32)
    @ Base.Libc.Libdl ./libdl.jl:114
  [3] macro expansion
    @ ~/.julia/packages/JLLWrappers/WnWcZ/src/products/library_generators.jl:63 [inlined]
  [4] __init__()
    @ ICU_jll ~/.julia/packages/ICU_jll/6CbiU/src/wrappers/x86_64-apple-darwin.jl:13
  [5] _include_from_serialized(path::String, depmods::Vector{Any})
    @ Base ./loading.jl:674
  [6] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String)
    @ Base ./loading.jl:760
  [7] _require(pkg::Base.PkgId)
    @ Base ./loading.jl:998
  [8] require(uuidkey::Base.PkgId)
    @ Base ./loading.jl:914
  [9] require(into::Module, mod::Symbol)
    @ Base ./loading.jl:901
 [10] include(mod::Module, _path::String)
    @ Base ./Base.jl:386
 [11] top-level scope
    @ ~/.julia/packages/JLLWrappers/WnWcZ/src/toplevel_generators.jl:170
 [12] include
    @ ./Base.jl:386 [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::String)
    @ Base ./loading.jl:1213
 [14] top-level scope
    @ none:1
 [15] eval
    @ ./boot.jl:360 [inlined]
 [16] eval(x::Expr)
    @ Base.MainInclude ./client.jl:446
 [17] top-level scope
    @ none:1
during initialization of module ICU_jll
in expression starting at /Users/vvv/.julia/packages/HarfBuzz_jll/OFN8Y/src/wrappers/x86_64-apple-darwin.jl:11
in expression starting at /Users/vvv/.julia/packages/HarfBuzz_jll/OFN8Y/src/HarfBuzz_jll.jl:2
ERROR: LoadError: LoadError: Failed to precompile HarfBuzz_jll [2e76f6c2-a576-52d4-95c1-20adfe4de566] to /Users/vvv/.julia/compiled/v1.6/HarfBuzz_jll/jl_4n0reZ.
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:33
  [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::Base.TTY, internal_stdout::Base.TTY)
    @ Base ./loading.jl:1360
  [3] compilecache(pkg::Base.PkgId, path::String)
    @ Base ./loading.jl:1306
  [4] _require(pkg::Base.PkgId)
    @ Base ./loading.jl:1021
  [5] require(uuidkey::Base.PkgId)
    @ Base ./loading.jl:914
  [6] require(into::Module, mod::Symbol)
    @ Base ./loading.jl:901
  [7] include(mod::Module, _path::String)
    @ Base ./Base.jl:386
  [8] top-level scope
    @ ~/.julia/packages/JLLWrappers/WnWcZ/src/toplevel_generators.jl:170
  [9] include
    @ ./Base.jl:386 [inlined]
 [10] 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::String)
    @ Base ./loading.jl:1213
 [11] top-level scope
    @ none:1
 [12] eval
    @ ./boot.jl:360 [inlined]
 [13] eval(x::Expr)
    @ Base.MainInclude ./client.jl:446
 [14] top-level scope
    @ none:1
in expression starting at /Users/vvv/.julia/packages/Pango_jll/XQBSg/src/wrappers/x86_64-apple-darwin.jl:8
in expression starting at /Users/vvv/.julia/packages/Pango_jll/XQBSg/src/Pango_jll.jl:2
ERROR: LoadError: Failed to precompile Pango_jll [36c8627f-9965-5494-a995-c6b170f724f3] to /Users/vvv/.julia/compiled/v1.6/Pango_jll/jl_LomSoU.
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:33
  [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::Base.TTY, internal_stdout::Base.TTY)
    @ Base ./loading.jl:1360
  [3] compilecache(pkg::Base.PkgId, path::String)
    @ Base ./loading.jl:1306
  [4] _require(pkg::Base.PkgId)
    @ Base ./loading.jl:1021
  [5] require(uuidkey::Base.PkgId)
    @ Base ./loading.jl:914
  [6] require(into::Module, mod::Symbol)
    @ Base ./loading.jl:901
  [7] include
    @ ./Base.jl:386 [inlined]
  [8] 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
  [9] top-level scope
    @ none:1
 [10] eval
    @ ./boot.jl:360 [inlined]
 [11] eval(x::Expr)
    @ Base.MainInclude ./client.jl:446
 [12] top-level scope
    @ none:1
in expression starting at /Users/vvv/.julia/packages/Cairo/smWIA/src/Cairo.jl:1
ERROR: Failed to precompile Cairo [159f3aea-2a34-519c-b102-8c37f9878175] to /Users/vvv/.julia/compiled/v1.6/Cairo/jl_5R0UYK.
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:33
 [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::Base.TTY, internal_stdout::Base.TTY)
   @ Base ./loading.jl:1360
 [3] compilecache(pkg::Base.PkgId, path::String)
   @ Base ./loading.jl:1306
 [4] _require(pkg::Base.PkgId)
   @ Base ./loading.jl:1021
 [5] require(uuidkey::Base.PkgId)
   @ Base ./loading.jl:914
 [6] require(into::Module, mod::Symbol)
   @ Base ./loading.jl:901

(@v1.6) pkg> st Cairo
      Status `~/.julia/environments/v1.6/Project.toml`
  [159f3aea] Cairo v1.0.5

julia> VERSION
v"1.6.0"
giordano commented 3 years ago

Does it work with Julia v1.5? I don't think anything changed very recently in this regard, nor I can think of any known issue. What's the version of ICU_jll? You can see it in

]status -m
montyvesselinov commented 3 years ago

I was able to fix it by restarting it from scratch.

Is there a way to rebuild the artifacts?!

giordano commented 3 years ago

I was able to fix it by restarting it from scratch.

So this can be closed?

Is there a way to rebuild the artifacts?!

What do you mean exactly?

montyvesselinov commented 3 years ago

in my case building

/Users/vvv/.julia/artifacts/14819d58d81af1286ea71ca9ab144f64bb41f625/lib/libicudata.67.1.dylib

failed.

how I can rebuild all the artifacts needed for Cairo for example?!

rm Cairo
add Cairo
build Cairo

does not rebuild the depending artifacts?!

giordano commented 3 years ago

No

giordano commented 3 years ago

To be clear: artifacts is a mechanism to download tarballs from the Internet, introduced in this blog post. Cairo.jl, like many other packages in the Julia ecosystem, uses this to provide prebuilt libraries (using BinaryBuilder), so that users don't need to build or install anything themselves on their machines. ]build Cairo does literally nothing.

montyvesselinov commented 3 years ago

Ok. but the tarballs were corrupted because of something. How I can retry to pull the tarballs that failed?! in this case libicudata.67.1.dylib?!

giordano commented 3 years ago

I have no idea what was the issue, the error message wasn't very helpful (not your fault, it's the kernel that doesn't provide more details). It's unlikely the library was corrupted as there are two independent integrity checks when you install an artifact, unless something corrupts the library after the installation. There is really nothing we can do here