The team behind Snapcraft is pleased to announce the release of Snapcraft 4.4.
Highlights for this release include:
- improved font generation performance when desktop extensions
- updates to package repository definitions and behaviour
- metrics for Progressive Releases
- many small but significant bug fixes
Custom CA certificates can now be added to the build environments created by Snapcraft by using
--add-ca-certificates with the lifecycle related commands.
This release includes a new mechanism to pre-generate font caches with desktop-related extensions. This enables system font cache generation at install time, isolated from the potentially (ABI) incompatible host-generated cache.
To benefit from this feature, extension snaps will need to be rebuilt. More details about this feature can be found in the specification.
The experimental package repositories has the following changes:
- the undocumented
$SNAPCRAFT_APTvariables have been removed.
- improved error handling and schema validation.
Additionally, the package repository specification has been finalised, hopefully opening a path to remove the experimental flag for this feature.
Updates to the Store
See Progressive releases for more details.
revisions command is now internally using a new endpoint to provide much better results:
- table headers have changed to better represent architectures
- channels are now fully qualified (i.e.;
- comma separated column entries no longer have a space separating each item
Refer to the specification for further details.
Full list of changes
The issues and features worked on for Snapcraft 4.4 are reflected in the following change list:
List of changes for Snapcraft 4.4
- cli: remove spaces from progressive metrics @sergiusens (#3335)
- storeapi: add releases endpoint @sergiusens (#3311)
- cli: provide option to install ca certs into build environment @cjp256 (#3224)
- Add PYTHONPATH to environment (fixes #1893262) @hellsworth (#3270)
- snap packaging: fetch remote icons configured via appstream @cjp256 (#3241)
- pluginhandler: support using patchelf on strict snaps @kyrofa (#3277)
- gnome extensions: multiarch bindtextdomain.so support @galgalesh (#3127)
- db: introduce generalized datastore @cjp256 (#3238)
- meta: write stubs for command-chain using hooks when needed @sergiusens (#3296)
- cli: support snap --output @cjp256 (#3297)
- extensions: configure hook for fonts @sergiusens (#3299)
- storeapi: add support for reporting status of progressive releases @maxiberta (#3306)
- package repositories: improve error handling @cjp256 (#3334)
- spread tests: move package-repositories test snaps into own dir @cjp256 (#3331)
- cli: update revisions to use releases API @sergiusens (#3329)
- storeapi: remove bindings for history @sergiusens (#3332)
- v1 plugins: lock godep’s dependencies @cjp256 (#3285)
- readme: remove link to Google+ @timsueberkrueb (#3292)
- storeapi: drop arch requirement for get_channel_mapping() @cjp256 (#3301)
- build(deps-dev): bump junit from 3.8.1 to 4.13.1 in /tests/spread/plugins/v1/maven/snaps/legacy-maven-hello/my-app @dependabot (#3316)
- build(deps-dev): bump junit from 3.8.1 to 4.13.1 in /tests/spread/plugins/v1/maven/snaps/maven-hello/my-app @dependabot (#3315)
- spread tests: introduce electron-builder test @cjp256 (#3312)
- unit tests: fix runtests.sh not filtering tests when passed a subdirectory @maxiberta (#3305)
- electron-builder spread test: sync expected snapcraft.yaml @cjp256 (#3323)
- package repositories: drop $SNAPCRAFT_APT_HOST_ARCH variable @cjp256 (#3322)
- package repositories: drop $SNAPCRAFT_APT_RELEASE variable @cjp256 (#3328)
- flutter tests: updated for latest embedder @kenvandine (#3310)
- lxd unit tests: simplify command checking pattern @cjp256 (#3326)
- package repositories: fix case where formats is empty @cjp256 (#3330)
- meta: add error check for “command not found” @cjp256 (#3321)
- snapcraftctl: add checks for empty string for set-version & set-grade @cjp256 (#3325)
- pluginhandler: properly handle snapcraftctl errors @cjp256 (#3317)
- schema: add regex to validate description is non-empty @cjp256 (#3303)
- set ROS_PYTHON_VERSION for rosdep @artivis (#3324)
- Set ROS_VERSION for rosdep in plugins v1 @artivis (#3313)
- repo: install requested build-package versions @cjp256 (#3221)
- project loader: install dirmngr prior to configuring package repositories @cjp256 (#3294)
- build providers: fix issues running on Windows @sergiusens (#3289)
- cmake v2 plugin: add help for cmake generators @sergiusens (#3288)
- setup.py: assert with helpful error when unable to determine version @cjp256 (#3307)