2.6 KiB
layout | title | category | tags | order | |||
---|---|---|---|---|---|---|---|
developer-doc | Distribution Bundles | distribution |
|
9 |
Bundles
This document describes how the distributions are bundled to provide releases that work out-of-the box, allowing to use the latest engine without downloading any additional dependencies.
Project Manager Bundle
The Project Manager is distributed with latest engine version and its corresponding Graal runtime to avoid having to download them at first startup.
The bundled components are placed in their respective subdirectories (not as
packages, but extracted and ready to use) and a bundle marker file called
.enso.bundle
must be placed next to these directories so that the Project
Manager can detect the bundle.
The project-manager
executable looks for the .enso.bundle
marker in the
parent directory of the directory that it is, itself, located in. So overall,
the bundle should have the following structure (the actual engine and Graal
versions may of course differ):
enso
├── bin
│ └── project-manager
├── dist
│ └── 0.2.1-SNAPSHOT
├── other-project-manager-files
└── runtime
└── graalvm-ce-java11-20.2.0
If the bundle is detected, the additional dist
and runtime
directories are
added as secondary search paths for components. Thus, the project-manager
can
use both components present in the default
installed location or
those from the bundle. In a situation that the same component were to be
available both in the installed location and the bundle, the installed location
is preferred. New components are installed in the installed location, never next
to the bundles.
In fact, it is possible for the bundle directory to be read-only (which may be the case for example if the Project Manager bundle is packaged as part of IDE's AppImage package). In such situation, it will be impossible to uninstall the bundled components and a relevant error message will be returned.
Launcher Bundles
Bundles are also distributed for the launcher, but these are implemented using a different mechanism.
Since the launcher can run in portable mode, the bundled engine and runtime are simply included within its portable package. They can then be used from within this portable package or installed.