Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. Julia is a high-level, high-performance dynamic language for technical computing. The main homepage for Julia can be found at [[https://julialang.org|julialang.org]]. The port for %%FreeBSD%% is available at [[https://www.freshports.org/lang/julia|lang/julia]]. This page will record related ecosystem between %%FreeBSD%% and Julia. ===== Port Installation Options ===== We provide two options for building self-shipped libraries * ''%%ARPACK%%'': This is off by default. Julia requires ''%%math/arpack-ng%%'' as its dependency. If you have some ports require ''%%math/arpack%%'', which conflict with ''%%math/arpack-ng%%'', you can enable this option to build private library without involving ''%%math/arpach-ng%%'' port build. * ''%%LLVM%%'': This is off by default. Julia v0.6 requires ''%%devel/llvm39%%'' as its dependency. If a Julia package requires private ''%%libLLVM%%'' built (e.g. [[https://github.com/maleadt/LLVM.jl|LLVM.jl]]), you can enable this option to build private ''%%libLLVM%%''. The private ''%%libLLVM%%'' might contain some extra patches backported from LLVM upstream, in order to deal with special need of Julia's ecosystem, e.g. 'loading different version of ''%%libLLVM%%'' simultaneously', 'some NVPTX fix from upstream', ...etc. ===== Install a Package Required Native Extension ===== The package manager of julia v0.6 is ''%%Pkg%%'', which is part of standard library. If a package requires one or more native extensions, like C or Fortran libraries, ''%%Pkg.install("...")%%'' will invoke the ''%%Pkg.build("...")%%'', then it will spawn a standalone julia process with the script ''%%deps/build.jl%%''. Usually, ''%%build.jl%%'' script relies on [[https://github.com/JuliaLang/BinDeps.jl|BinDeps.jl]] to - Checks the availability of native libraries. - If not available, manage to install prebuilt binary via OS's package manager (Note that current implementation (ps. when I write down these words, it's v0.8.8) will invoke ''%%sudo%%''). - If not prebuilt binary available, manage to build from source. - Otherwise, ''%%Pkg.build%%'' throws exception of build failure. Since %%BinDeps%%.jl v0.6.0, %%FreeBSD%%'s package manager ''%%pkg%%'' has been supported (see [[https://github.com/JuliaLang/BinDeps.jl/pull/296]]). There is a julia struct ''%%BSDPkg%%'' to provide related features. ==== Example Usage of BinDeps ==== If you run into similar issue of installing native libraries, please checkout these patches. * HDF5.jl: https://github.com/JuliaIO/HDF5.jl/blob/e51e2795fface3f413857d1ce24b722da1523ce9/deps/build.jl#L26 * Tk.jl: https://github.com/JuliaGraphics/Tk.jl/pull/142 ===== Slack Channel ===== There is a ''%%#freebsd%%'' slack channel on [[https://julialang.slack.com|julialang.slack.com]]. This is a public slack, you can get invitation from [[https://slackinvite.julialang.org|https://slackinvite.julialang.org]]. ---- {{tag>Ports Team}} julia.txt Last modified: 2018/05/10 11:39by IblisLin