QML.jl release pending

,

Hi everyone,

It has been in the works for a long time, but QML.jl is finally ready for release, with the registration PR pending. In the mean time, you can test it using:

add https://github.com/barche/QML.jl.git

See the README and the documentation (contributed by @bramtayl) for more info.

There is also a JuliaCon lightning talk about QML.jl Thursday. ( See trailer below :wink: )

qml

25 Likes

Works fine with GR, too (qml_ex.jl).

hexbin+qml

Thanks a lot, Bart!

10 Likes

Great job!

1 Like

@barche Thanks for this repo. Does this work on arm64 as is or I will have to fiddle a bit. It worked on x86 directly but on arm64 currently I have this “UndefVarError: libjlqml not defined” errror. I tried jlqml building; it fails too.

Qt version could be reason. I was using 5.12. Default qt on my system failed first. I tried fetching newer version 5.12. Any suggestions here ? Thanks for your time. OS: Ubuntu 18.04 and aarch64 platform.

What version of Qt_jll do you have?

]status -m Qt_jll

Thanks for looking into this 5.15.1+0
[ede63266] Qt_jll v5.15.1+0

[edit] Thanks this gives me a hint to use qt 5.15 instead for building jlqml.

This version of Qt_jll should support your platform

Current error trace is something like this:

ERROR: LoadError: UndefVarError: libjlqml not defined
Stacktrace:
[1] top-level scope at /home/xxx/.julia/packages/QML/AvdBY/src/QML.jl:30
[2] include(::Function, ::Module, ::String) at ./Base.jl:380
[3] include(::Module, ::String) at ./Base.jl:368
[4] top-level scope at none:2
[5] eval at ./boot.jl:331 [inlined]
[6] eval(::Expr) at ./client.jl:467
[7] top-level scope at ./none:3
in expression starting at /home/xxx/.julia/packages/QML/AvdBY/src/QML.jl:30
ERROR: Failed to precompile QML [2db162a6-7e43-52c3-8d84-290c1c42d82a] to /home/xxx/.julia/compiled/v1.5/QML/JLkMo_W3O9X.ji.
Stacktrace:
[1] error(::String) at ./error.jl:33
[2] compilecache(::Base.PkgId, ::String) at ./loading.jl:1305
[3] _require(::Base.PkgId) at ./loading.jl:1030
[4] require(::Base.PkgId) at ./loading.jl:928
[5] require(::Module, ::Symbol) at ./loading.jl:923

I will launch a new thread. I feel I am polluting this.

Oh, right, sorry, the missing library is libjlqml, not any of Qt

For now, you would still have to build the jlqml library yourself. Very soon now ™ we should have official bianries, though. You can track progress here, we just had a bit of setback with libcxxwrap-julia (a dependency for jlqml).

1 Like

Thanks. I managed to built it and I followed instruments of jlqml repo (overrides.toml). The library doesn’t pick the libjlqml.so still. I feel jlqml_jll needs aarch64 specific script in src folder.

Had to add aarch64 wrapper script (just a copy of arm-linux). I made an aarch64 fork here. But I have a general question. How do you get git-tree-sha1 value. In my case I just replaced with expected value in error.

You should be able to add an entry to your ~/.julia/artifacts/Overrides.toml like this:

[6b5019fb-a83d-5b4e-a9f7-678a36c28df7]
jlqml = "/home/user/src/build/jlqml"

[ede63266-ebff-546c-83e0-1c6fb6d0efc8]
Qt = "/usr"

The directories passed here need to contain a directory lib that holds the actual libraries. Note that it’s best to also override Qt to the Qt you used to compile jlqml.

Note that this is also documented in the JLL packages section of BinaryBuilder docs

1 Like

@barche Yes. I agree it should work because the changes I made look trivial but as I mentioned I followed instructions in jlqml. It didn’t work. I am not sure why. May be its my system in some stale state is the problem. Thanks for this work. It works well so far.

Ah, I think I understand now, probably the override doesn’t work because the aarch64 architecture is not present at all in the JLL. The only way I can think of to do that is to check out the Yggdrasil tree, add aarch64 to the build_tarballs.jl for jlqml and then build using --deploy to your own github fork of the jlqml JLL package.

1 Like