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.tomlorJuliaProject.tomlfiles.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.AbstractPlatformas theplatformor target triplet as thetriplet. - See Julia's supported OS/architectures.
- See
?Base.BinaryPlatforms.Platformand the types inPkg.BinaryPlatformsfor 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)