These are the release notes for Snapcraft 3.7, a significant update to Snapcraft 3.
For general details, including installation instructions, see Snapcraft overview, or take a look at Snapcraft release notes for other Snapcraft releases.
Many of the improvements in this release are thanks to the great work done in collaboration with the attendees of the 2019 Snapcraft Summit that took place in Montreal.
build-base
Prior to the release of Snapcraft 3.7, using the base
keyword within snapcraft.yaml
to specify a base type for a snap did not take into account the creation of bases. Instead, the name
keyword was arbitrarily used to determine the build environment:
name: core18
type: base
# base: is not set elsewhere
The above example uses name
to specify the creation of an Ubuntu 18.04 (core18) based build environment.
This fails if a base has yet to be bootstrapped, or is otherwise unavailable. For example, the following will currently generate a `launch failed: Unable to find an image matching “core20” error:
name: core20
type: base
# base: is not set elsewhere
In cases like the above, where the base has not yet been bootstrapped, build-base
can be used to explicitly define the base to use for the build environment.
To solve the above issue, for example, use the following:
name: core20
type: base
build-base: core18
# base: is not set elsewhere
snapd
snapd
is a new value for base type. Its inclusion will help the snapd team when using Snapcraft to build their own snap.
The snapcraft.yaml schema has been extended to support new app properties added to snap.yaml, alongside better error handling and schema checks.
stop-command
reload-command
dbus
bus-name
(for use with daemon: dbus
). Uses regex pattern found in snapdrestart-delay
start-timeout
timer
watchdog-timeout
stop-timeout
, restart-condition
)on-watchdog
for restart-condition
autostart
for apps installing autostart desktop filesstop-timeout
(to match introduced timeouts).When using Snapcraft with LXD and iterating over a build, a significant reduction in network overhead has resulted in much faster build times.
This is thanks to snapd 2.39 supporting API snap retrieval, and is used to avoid a root requirement when adding snaps to the build environment. It means snap don’t need to be re-downloaded as frequently.
After the prime stage has completed, and missing dependencies are detected, Snapcraft now lists these as stage-packages, rather than as a simple list, for inclusion in snapcraft.yaml to hopefully build a functioning snap.
This will be extended in upcoming versions of Snapcraft to take into account plugs using the content
interface.
Crystal is a programming language with a similar syntax to Ruby. This plugin was developed by Crystal’s upstream team to work with their recently released Crystal snap.
The following keyword is currently accepted by the plugin:
crystal-channel
: (string)
The Snap Store channel to install Crystal from.
Default: latest/stable
Brian J. Cardiff, one of Crystal’s developers, attended the 2019 Snapcraft Summit Montréal and wrote an excellent overview of how to use the plugin as part of an event write-up. See Snapcraft Summit Montréal for the post.
Conda is an open source package management system and environment management system that runs on Windows, macOS and Linux. This plugin was developed during the 2019 Snapcraft Summit Montréal with the Anaconda developers.
This plugin uses the following plugin-specific keywords:
conda-packages
(list of strings)
List of conda packages to install.conda-python-version
(string)
The Python version to use for the conda packages.
Defaults to the latest supported by Miniconda.conda-miniconda-version
(string)
The version of Miniconda to bootstrap.
Defaults to the latest release.The Rust plugin has been reviewed by a Rust developer and their suggestions incorporated into this release.
One such improvement is defaulting to use the rust-toolchain
file (if present), unless explicitly overridden by use of rust-channel
or rust-revision
.
Rebuilding is now also possible using this plugin.
The Ant publisher has released an Ant snap and reviewed the Ant plugin. Consequently, the Ant plugin has been updated to support the use of this new snap for building Ant-based projects.
The following new keywords are now accepted by the plugin:
ant-channel
(string)
If not using the Ant tarball from the Ant archive (see ant-version and ant-version-checksum, this keyword specifies the channel to use for ant in the Snap Store.
Default: latest/stable
Support for ROS 2 Dashing Diademata was added to the colcon plugin in order to support this latest ROS release.
There have been many bugs fixed in this release. Some of the most significant are as follows:
/usr
directory schemeclick.prompt
and click.confirm
expanded to query the existence of tty for stdin.The full list of features and issues worked on in this release are listed below.
Last updated 5 years ago.