A package is the unit of installation on a Fuchsia system.
To be added...
The majority of this process relies on a tool called pm
which is available under //tools
. This document describes the various steps to generate a package. For more details about each step, see pm
's help messages.
The initial step is to create a manifest file $MANIFEST_FILE
describing the contents of the package. The manifest is a mere list of lines of the form destination=source
, where source
is the path to the file on the host machine and destination
the location of that file in the final package.
The manifest must include at least one line for the package identity file:
meta/package=path/to/generated/package.json
This identity file should contain the following data:
{ "name": "<package name", "version": "<package version>" }
That file can be created using the pm init
command.
From this point on, we are going to use $PACKAGE_DIR
to denote a staging dir where the package is going to be built.
First, we need to initialize the package with:
pm -o $PACKAGE_DIR -n $PACKAGE_NAME init
In order to create the package, a signing key is required. You may provide your own key or generate one at $SIGNING_KEY
with:
pm -o $PACKAGE_DIR -k $SIGNING_KEY genkey
TODO: add more details about signing keys, possibly in pm's help
The next step is to generate an archive with the package's metadata:
pm -o $PACKAGE_DIR -k $SIGNING_KEY -m $MANIFEST_FILE build
This will create the metadata archive at $PACKAGE_DIR/meta.far
.
Finally, we put it all together to generate the package itself:
pm -o $PACKAGE_DIR -k $SIGNING_KEY -m $MANIFEST_FILE archive
This will create the package archive at $PACKAGE_DIR/$PACKAGE_NAME-0.far
. Note that this step needs to be re-run if the contents of the package change.
To be added...