Skip to content

OpenCV.jl fails to compile with Julia 1.12.1 #61

@victor-gaganov

Description

@victor-gaganov

OpenCV.jl fails to compile when I try to install it on top of empty Julia environment on my machine. I tried to do the same in official Julia docker image and this issue reproduces there as well. Steps to reproduce:

  1. Get official Julia docker image running docker run -it --rm julia (7b32e015f644 to be precise)
  2. Enter pkg and install OpenCV ] add OpenCV
  3. Observe the following stacktrace
ERROR: The following 1 direct dependency failed to precompile:

OpenCV 

Failed to precompile OpenCV [f878e3a2-a245-4720-8660-60795d644f2a] to "/root/.julia/compiled/v1.12/OpenCV/jl_WsgAyv".
C++ exception while wrapping module StdLib: invalid subtyping in definition of StdString with supertype CppBasicString
ERROR: LoadError: invalid subtyping in definition of StdString with supertype CppBasicString
Stacktrace:
  [1] register_julia_module
    @ ~/.julia/packages/CxxWrap/I0P2E/src/CxxWrap.jl:432 [inlined]
  [2] readmodule(so_path_cb::typeof(CxxWrap.StdLib.get_libcxxwrap_julia_stl_path), funcname::Symbol, m::Module, flags::UInt32)
    @ CxxWrap.CxxWrapCore ~/.julia/packages/CxxWrap/I0P2E/src/CxxWrap.jl:825
  [3] wrapmodule(so_path_cb::Function, funcname::Symbol, m::Module, flags::UInt32)
    @ CxxWrap.CxxWrapCore ~/.julia/packages/CxxWrap/I0P2E/src/CxxWrap.jl:835
  [4] include(mapexpr::Function, mod::Module, _path::String)
    @ Base ./Base.jl:307
  [5] include(mod::Module, _path::String)
    @ Base ./Base.jl:306
  [6] 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, UInt128}}, source::String)
    @ Base ./loading.jl:2996
  [7] eval(m::Module, e::Any)
    @ Core ./boot.jl:489
  [8] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String)
    @ Base ./loading.jl:2842
  [9] include_string
    @ ./loading.jl:2852 [inlined]
 [10] exec_options(opts::Base.JLOptions)
    @ Base ./client.jl:315
 [11] _start()
    @ Base ./client.jl:550
in expression starting at /root/.julia/packages/CxxWrap/I0P2E/src/StdLib.jl:1
in expression starting at /root/.julia/packages/CxxWrap/I0P2E/src/CxxWrap.jl:1
in expression starting at stdin:5
ERROR: LoadError: Failed to precompile CxxWrap [1f15a43c-97ca-5a2a-ae31-89f07a497df4] to "/root/.julia/compiled/v1.12/CxxWrap/jl_kjaCmB".
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:44
  [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool; flags::Cmd, cacheflags::Base.CacheFlags, reasons::Dict{String, Int64}, loadable_exts::Nothing)
    @ Base ./loading.jl:3283
  [3] (::Base.var"#__require_prelocked##0#__require_prelocked##1"{Base.PkgId, String, Dict{String, Int64}})()
    @ Base ./loading.jl:2651
  [4] mkpidlock(f::Base.var"#__require_prelocked##0#__require_prelocked##1"{Base.PkgId, String, Dict{String, Int64}}, at::String, pid::Int32; kwopts::@Kwargs{stale_age::Int64, wait::Bool})
    @ FileWatching.Pidfile /usr/local/julia/share/julia/stdlib/v1.12/FileWatching/src/pidfile.jl:93
  [5] #mkpidlock#7
    @ /usr/local/julia/share/julia/stdlib/v1.12/FileWatching/src/pidfile.jl:88 [inlined]
  [6] trymkpidlock(::Function, ::Vararg{Any}; kwargs::@Kwargs{stale_age::Int64})
    @ FileWatching.Pidfile /usr/local/julia/share/julia/stdlib/v1.12/FileWatching/src/pidfile.jl:114
  [7] #invokelatest_gr#232
    @ ./reflection.jl:1282 [inlined]
  [8] invokelatest_gr
    @ ./reflection.jl:1274 [inlined]
  [9] maybe_cachefile_lock(f::Base.var"#__require_prelocked##0#__require_prelocked##1"{Base.PkgId, String, Dict{String, Int64}}, pkg::Base.PkgId, srcpath::String; stale_age::Int64)
    @ Base ./loading.jl:3854
 [10] maybe_cachefile_lock
    @ ./loading.jl:3851 [inlined]
 [11] __require_prelocked(pkg::Base.PkgId, env::String)
    @ Base ./loading.jl:2637
 [12] _require_prelocked(uuidkey::Base.PkgId, env::String)
    @ Base ./loading.jl:2465
 [13] macro expansion
    @ ./loading.jl:2393 [inlined]
 [14] macro expansion
    @ ./lock.jl:376 [inlined]
 [15] __require(into::Module, mod::Symbol)
    @ Base ./loading.jl:2358
 [16] require(into::Module, mod::Symbol)
    @ Base ./loading.jl:2334
 [17] include(mapexpr::Function, mod::Module, _path::String)
    @ Base ./Base.jl:307
 [18] top-level scope
    @ ~/.julia/artifacts/caa92f14db4e20d28fb05b231e08788b31c91111/OpenCV/src/OpenCV.jl:4
 [19] include(mapexpr::Function, mod::Module, _path::String)
    @ Base ./Base.jl:307
 [20] top-level scope
    @ ~/.julia/packages/OpenCV/5LneO/src/OpenCV.jl:7
 [21] include(mod::Module, _path::String)
    @ Base ./Base.jl:306
 [22] 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, UInt128}}, source::Nothing)
    @ Base ./loading.jl:2996
 [23] top-level scope
    @ stdin:5
 [24] eval(m::Module, e::Any)
    @ Core ./boot.jl:489
 [25] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String)
    @ Base ./loading.jl:2842
 [26] include_string
    @ ./loading.jl:2852 [inlined]
 [27] exec_options(opts::Base.JLOptions)
    @ Base ./client.jl:315
 [28] _start()
    @ Base ./client.jl:550
in expression starting at /root/.julia/artifacts/caa92f14db4e20d28fb05b231e08788b31c91111/OpenCV/src/cv_cxx.jl:10
in expression starting at /root/.julia/artifacts/caa92f14db4e20d28fb05b231e08788b31c91111/OpenCV/src/OpenCV.jl:4
in expression starting at /root/.julia/packages/OpenCV/5LneO/src/OpenCV.jl:1

Am I missing some configuration steps?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions