Welcome snapcraft 2.42

Hello snapcrafters! The snapcraft team is pleased to announce that version 2.42 of snapcraft.


This release saw some excellent contributions from outside the snapcraft core team, and we want to give a shout out to those folks. A team thank you to:

New in this release


multipass cleanbuild support

If you are a user of snapcraft cleanbuild and have multipass installed (snap install multipass --beta at the time of this writing) then you might be interested in trying out this new feature, currently triggered by a
feature flag. Try it out by running:

$ SNAPCRAFT_BUILD_ENVIRONMENT=multipass snapcraft cleanbuild

sunset remote persistent containers

The feature, hidden behind a feature flag of enabling a remote lxd instance to drive the build with local
mounts in place has been removed as a feature due to complexities and trimming of scope towards a
unified, working and sustainable interface. Given this was a feature flag and never left its experimental
stages, removing it was the right thing to do to remove any expectation that this will be driven further or
have user go through a bad experience when using it.

This does not affect using local persistent LXD containers, nor does it affect remote cleanbuilds.

Error reporting

When enabling the snapcraft CLI’s use of Sentry by means of setting the feature flag to SNAPCRAFT_ENABLE_SENTRY=on (perhaps in your ~/.bashrc) you will now have the option to
always send the traceback instead of being prompted.

architectures keyword

Previous releases of the snapcraft CLI supported an architectures keyword that one could use to specify the architectures on which the snap runs. However, for multiple reasons this proved to be a confusing feature that few could use successfully, so this release sees it reworked to better match user expectations. The architectures keyword has been restructured into a list of more explicit objects, specifying both build and run architecture(s):

  - build-on: [<build arch 1>, <build arch 2>]
    run-on: [<run arch 1>, <run arch 2>]

If snapcraft is building on an architecture in build-on, it will use the corresponding run-on in the final snap, stating that it runs on those architectures. Please read the documentation for more details.



When using override-build, the dotnet plugin can now be used to override the plugin logic.

Full list of changes

Here’s the full list of changes that built up to this release:

  • elf: patch everything instead of a subset of elf files (#2081)
  • elf: clear the current runpath before setting the rpath (#2085)
  • python plugin: properly handle distutils on bionic
  • ci: add the python integration tests on bionic for travis
  • many: remove support for remote lxd per project containers (#2089)
  • schema: allow refresh-mode and stop-mode (#2092)
  • packaging: include changelog for setup.py’s version detection (#2097)
  • ci: enable OSX testing on travis (#2084)
  • tests: use a common cache for the integration tests
  • tests: remove the SharedCache fixture and uses of it
  • many: allow building in containers with no version in project (#2104)
  • errors: remove logic for SNAPCRAFT_SEND_ERROR_DATA
  • errors: implement the always option to sent to sentry
  • package: make use of snapcraftctl snapcraft features (#2103)
  • nodejs plugin: lazy load the required tarballs (#2106)
  • build_providers: new build provider using multipass (#2100)
  • tests: use FakeSnapd for grammar tests
  • tests: adapt the integration suite to work for all releases
  • project_loader: support architectures for CI (#2080)
  • meta: soften warning about using passthrough (#2091)
  • storeapi: better handle network errors and retries (#2094)
  • grammar: support compound on…to statement (#2088)
  • tests: fix arch-specific integration tests
  • python: bring back support for older versions of pip (#2055)
  • tests: don’t use os_release and repo from snapcraft (#2096)
  • lxd: wait for on-going refreshes to finish (#2098)
  • ci: setup AppVeyor (#2087)
  • repo: catch error updating the package cache (#2079)
  • tests: do not shadow deb_arch in architecture scenarios
  • tests: parser tests need the cache
  • tests: don’t hard-code expected arch in VersionScriptTestCase
  • dotnet plugin: add dotnet command to path for step overriding (#1909)
  • lifecycle: skip -all-root for base snaps (#2090)
  • tests: update metadata store integration test, no previous push
    required (#2086)

Final notes

To get the source for this release, check it out on github. For the full extent of changes, take a glance at https://github.com/snapcore/snapcraft/milestone/21?closed=1

A great place to collaborate and discuss features, bugs and ideas on snapcraft are the forums. Please also feel free to file a bug.

Happy snapcrafting!
– Sergio and the team

Originally published on https://github.com/snapcore/snapcraft/releases/tag/2.42