Julia is a high-level, high-performance dynamic language for technical computing. The main homepage for Julia can be found at julialang.org.
The port for FreeBSD is available at 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. 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 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.