DepotDelivery bundles a Julia project into a standalone depot (contents of a `.julia/` directory).
- Bundles all Julia code of one or more projects.
- Can be deployed in air-gapped environments.
- Build for platforms other than the host platform.
- Can precompile all dependencies to built path.
build(src = pwd(), dest=mktempdir(); triplet, platform, verbose, precompiled)
Arguments:
src = pwd()
: AString
/Vector{String}
of the project path/paths containingProject.toml
orJuliaProject.toml
files.dest::String = <tempdir>
: The depot directory to populate.platform::AbstractPlatform = <host platform>
: The targetBase.BinaryPlatforms.Platform
.triplet = nothing
: The target triplet of the platform to build for. If notnothing
, it overridesplatform
.verbose = true
: Whether to display verbose output during the build process (default istrue
).precompiled = false
: Whether to enable precompilation of packages.
Returns:
dest::String
using DepotDelivery
# `path/Project.toml` (or `path/JuliaProject.toml`) must exist
path = abspath(joinpath(pathof(DepotDelivery), "..", ".."))
depot = DepotDelivery.build(path)
Then in your production environment, either:
- Replace the
.julia/
directory withdepot
- Run
include(joinpath(depot, "config", "startup.jl"))
to begin your Julia session.
Be aware that build
will copy everything inside the source directories to depot/dev/
. Avoid populating those directories with unnecessary files. For example, when starting a new project, it's better to run julia --project=./isolated_folder/
rather than julia --project=.
, as in the latter case the Project.toml
file will coexist with other stuff.
- Use any
Base.BinaryPlatforms.AbstractPlatform
as theplatform
or target triplet as thetriplet
. - See Julia's supported OS/architectures.
- See
?Base.BinaryPlatforms.Platform
and the types inPkg.BinaryPlatforms
for details, e.g.
import Pkg
Base.BinaryPlatforms.HostPlatform()
Base.BinaryPlatforms.Platform("windows", "x86_64"; cuda == "10.1")
# `arch` argument must be in (:x86_64, :i686m, :armv7l, :armv6l, :aarch64, :powerpc64le)
Pkg.BinaryPlatforms.Windows(:x86_64)
Pkg.BinaryPlatforms.MacOS()
Pkg.BinaryPlatforms.Linux(:powerpc64le)
Pkg.BinaryPlatforms.FreeBSD(:armv7l)