stemann / PylonCameras.jl

A Julia interface for Basler Pylon cameras
MIT License
2 stars 0 forks source link

Support for Pylon 6 #1

Open roflmaostc opened 3 years ago

roflmaostc commented 3 years ago

Hi, thanks for the package, exactly what I need!

But, my machine has Pylon 6 installed

ls /opt/ | grep pyl        
pylon6

which somehow fails:

export LD_LIBRARY_PATH=/opt/pylon6/lib64                                                                                            [18-10-21 | 2:10:44]
╭─fxw@earth ~/Documents/Uni/my_projects/Duke_Sensor_Array/basler_pylon/PylonCameras.jl  ‹master› 
╰─➤  julia --eval 'using Pkg; pkg"activate ."; pkg"instantiate"; pkg"build"'                                                             [18-10-21 | 2:10:46]
At startup Revise.jl and OhMyREPL.jl loaded┌ Warning: The Pkg REPL interface is intended for interactive use, use with caution from scripts.
└ @ Pkg.REPLMode /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/REPLMode/REPLMode.jl:378
  Activating environment at `~/Documents/Uni/my_projects/Duke_Sensor_Array/basler_pylon/PylonCameras.jl/Project.toml`
Precompiling project...
  ? PylonCameras
  3 dependencies successfully precompiled in 26 seconds (23 already precompiled)
  1 dependency failed but may be precompilable after restarting julia
    Building SpecialFunctions → `~/.julia/scratchspaces/44cfe95a-1eb2-52ea-b672-e2afdf69b78f/3bdd374b6fd78faf0119b8c5d538788dbf910c6e/build.log`
    Building CxxWrap ─────────→ `~/.julia/scratchspaces/44cfe95a-1eb2-52ea-b672-e2afdf69b78f/8da57ef9a68690903b0fc625e935b49f53ba58f9/build.log`
    Building PylonCameras ────→ `~/Documents/Uni/my_projects/Duke_Sensor_Array/basler_pylon/PylonCameras.jl/deps/build.log`
ERROR: Error building `PylonCameras`: 
[ Info: Downloading https://github.com/IHPSystems/pylon_julia_wrapper/releases/download/v0.3.2/pylon_julia_wrapper.v0.3.2.x86_64-linux-gnu-gcc7-cxx11.tar.gz to /home/fxw/Documents/Uni/my_projects/Duke_Sensor_Array/basler_pylon/PylonCameras.jl/deps/usr/downloads/pylon_julia_wrapper.v0.3.2.x86_64-linux-gnu-gcc7-cxx11.tar.gz...
ERROR: LoadError: LibraryProduct(nothing, ["libpylon_julia_wrapper"], :pylon_julia_wrapper, "Prefix(/home/fxw/Documents/Uni/my_projects/Duke_Sensor_Array/basler_pylon/PylonCameras.jl/deps/usr)") is not satisfied, cannot generate deps.jl!
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:33
 [2] write_deps_file(depsjl_path::String, products::Vector{LibraryProduct}; verbose::Bool)
   @ BinaryProvider ~/.julia/packages/BinaryProvider/kcGxO/src/Products.jl:414
 [3] top-level scope
   @ ~/Documents/Uni/my_projects/Duke_Sensor_Array/basler_pylon/PylonCameras.jl/deps/build.jl:39
 [4] include(fname::String)
   @ Base.MainInclude ./client.jl:444
 [5] top-level scope
   @ none:5
in expression starting at /home/fxw/Documents/Uni/my_projects/Duke_Sensor_Array/basler_pylon/PylonCameras.jl/deps/build.jl:39
[14:11:34] ######################################################################## 100.0%
Stacktrace:
  [1] pkgerror(msg::String)
    @ Pkg.Types /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/Types.jl:55
  [2] (::Pkg.Operations.var"#82#87"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec})()
    @ Pkg.Operations /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/Operations.jl:1048
  [3] withenv(::Pkg.Operations.var"#82#87"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec}, ::Pair{String, String}, ::Vararg{Pair{String, B} where B, N} where N)
    @ Base ./env.jl:161
  [4] (::Pkg.Operations.var"#109#113"{String, Pkg.Operations.var"#82#87"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec}, Pkg.Types.PackageSpec})()
    @ Pkg.Operations /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/Operations.jl:1546
  [5] with_temp_env(fn::Pkg.Operations.var"#109#113"{String, Pkg.Operations.var"#82#87"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec}, Pkg.Types.PackageSpec}, temp_env::String)
    @ Pkg.Operations /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/Operations.jl:1448
  [6] (::Pkg.Operations.var"#108#112"{Pkg.Operations.var"#82#87"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec}, Pkg.Types.Context, Pkg.Types.PackageSpec, String, Pkg.Types.Project, String})(tmp::String)
    @ Pkg.Operations /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/Operations.jl:1521
  [7] mktempdir(fn::Pkg.Operations.var"#108#112"{Pkg.Operations.var"#82#87"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec}, Pkg.Types.Context, Pkg.Types.PackageSpec, String, Pkg.Types.Project, String}, parent::String; prefix::String)
    @ Base.Filesystem ./file.jl:729
  [8] mktempdir(fn::Function, parent::String) (repeats 2 times)
    @ Base.Filesystem ./file.jl:727
  [9] sandbox(fn::Function, ctx::Pkg.Types.Context, target::Pkg.Types.PackageSpec, target_path::String, sandbox_path::String, sandbox_project_override::Pkg.Types.Project)
    @ Pkg.Operations /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/Operations.jl:1487
 [10] build_versions(ctx::Pkg.Types.Context, uuids::Vector{Base.UUID}; verbose::Bool)
    @ Pkg.Operations /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/Operations.jl:1029
 [11] build(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}, verbose::Bool)
    @ Pkg.Operations /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/Operations.jl:910
 [12] build(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}; verbose::Bool, kwargs::Base.Iterators.Pairs{Symbol, Base.TTY, Tuple{Symbol}, NamedTuple{(:io,), Tuple{Base.TTY}}})
    @ Pkg.API /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/API.jl:900
 [13] build(pkgs::Vector{Pkg.Types.PackageSpec}; io::Base.TTY, kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ Pkg.API /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/API.jl:80
 [14] build(pkgs::Vector{Pkg.Types.PackageSpec})
    @ Pkg.API /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/API.jl:78
 [15] do_cmd!(command::Pkg.REPLMode.Command, repl::Pkg.REPLMode.MiniREPL)
    @ Pkg.REPLMode /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/REPLMode/REPLMode.jl:408
 [16] do_cmd(repl::Pkg.REPLMode.MiniREPL, input::String; do_rethrow::Bool)
    @ Pkg.REPLMode /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/REPLMode/REPLMode.jl:386
 [17] top-level scope
    @ none:1

Anything I'm doing wrong here?

Thanks, Felix

stemann commented 3 years ago

Hi Felix

Good to know the package is getting used.

Basler pylon unfortunately is not the greatest at binary compatibility. As a consequence, you currently need to have pylon 5.1(.0?) (first) in you LD_LIBRARY_PATH as this was the version pylon_julia_wrapper 0.3 (and 0.4) was compiled with - cf. the Dockerfile or build_tarballs.jl for the specific version number.

There will be a new version ready soon - end of October - with Julia 1.3+ (Julia 1.6/1.7 at least) compatibility.

Best regards, Jesper

roflmaostc commented 3 years ago

Yeah with /opt/pylon5/ it's also not working. Is it because I use Julia 1.6.3?

stemann commented 3 years ago

Quite likely. It’s only verified to work with Julia 1.0 (have been running like that in a container for a few years).

roflmaostc commented 3 years ago

Okay, that's unfortunate, I cannot make a clue from that stack trace.

I try PyCall since I anyway have to use that for a Thorlabs stage :cry:

roflmaostc commented 3 years ago

But I'm looking forward to the new version!

stemann commented 3 years ago

Will try to find time to finish the job earlier.

stemann commented 2 years ago

Struggling a bit to get a Julia 1.3/1.6-ready JLL built and tested, but at least the Julia 1.3/1.6 version of the underlying dependency has been ready for a while: https://github.com/IHPSystems/pylon_julia_wrapper/commit/993ae34a5838a2b2d680a2f7f32f555095da3afb