julia icon indicating copy to clipboard operation
julia copied to clipboard

Error when add some packages in julia on termux

Open yfsmth opened this issue 7 years ago • 3 comments

I've installed julia in termux on my android phone, it's great! But when I add some pkgs in julia, such as SpecialFunctions, I got some error as follow. It seems this pkg is provided by binary and julia cant find it, but there is aarch64 version pkg file indeed. How to resolve it? Thanks very much!

(v1.0) pkg> build SpecialFunctions Building SpecialFunctions → ~/.julia/packages/SpecialFunctions/sXbz6/deps/build.log ┌ Error: Error building SpecialFunctions: │ ┌ Warning: Platform aarch64--linux-android is not an officially supported platform │ └ @ BinaryProvider ~/.julia/packages/BinaryProvider/zp4zb/src/PlatformNames.jl:448 │ ERROR: LoadError: LoadError: KeyError: key "unknown" not found │ in expression starting at /data/data/com.termux/files/home/.julia/packages/BinaryProvider/zp4zb/src/PlatformNames.jl:676 │ in expression starting at /data/data/com.termux/files/home/.julia/packages/BinaryProvider/zp4zb/src/BinaryProvider.jl:12 │ ERROR: LoadError: Failed to precompile BinaryProvider [b99e7846-7c00-51b0-8f62-c81ae34c0232] to /data/data/com.termux/files/home/.julia/compiled/v1.0/BinaryProvider/ek6VZ.ji. │ in expression starting at /data/data/com.termux/files/home/.julia/packages/SpecialFunctions/sXbz6/deps/build.jl:1 └ @ Pkg.Operations ~/julia/usr/share/julia/stdlib/v1.0/Pkg/src/Operations.jl:1068p

yfsmth avatar Sep 30 '18 09:09 yfsmth

This is due to a limitation on android to hace to use LD_LIBRARY_PATH. The way around it is if something needs external library we have tp produce the dep output which points to the library and have the library in normal termux lib directory. If i get around to it i will make a tutorial explaining how to it.

its-pointless avatar Oct 04 '18 22:10 its-pointless

as a quick example ~/.julia/packages/ZMQ/ABGOx/deps/deps.jl const libzmq = "/data/data/com.termux/files/usr/lib/libzmq.so"

check_deps is not defined here so we have to account for that so we remove that line from function init() in src/ZMQ.jl.

after that package zmq will precompile using ZMQ you then do something similar with MbedTLS and you can actually get IJulia working.

For your specific issue i have precompiled external libopenspecfun so apt install libopenspecfunc and then point the correct const in deps.jl to that library you can work out what the name you need to use from build.jl

I would prefer a better solution but that would require me hacking pkg... and i don't have the time or even motivation to do that.

its-pointless avatar Oct 04 '18 23:10 its-pointless

it works, thanks a lot! but it's not a easy work, maybe it's a better idea to build a package like juliapro in termux :)

yfsmth avatar Oct 22 '18 07:10 yfsmth