Released: snapcraft 2.28

Hello snapcrafters!

We are pleased to announce the release snapcraft 2.28:


This release has seen some contributions from outside of the snapcraft core team, so we want to give a shout out to these folks, here’s a team thank you for:

  • Colin Watson
  • Jonathan Cave
  • Michael Hudson-Doyle
  • Olivier Tilloy
  • Paolo Pisati
  • pachulo

New in this release


snapcraft snap

snapcraft can now properly build as a snap and does the right thing. Starting 2.28 snapcraft should eventually be able to be installed from the store, currently in the edge channel.


The repo module in snapcraft, which deals with stage-packages entries and host distro specific packaging has been moved to a more modular python packge inside snapcraft allowing contributors to add support for other mechanisms such as support for rpm.


The logic for cleanbuild has been reworked to properly detect when lxd (the lxc client actually) is installed as a snap or manually compiled. This change also comes into play for cross distro snapcraft support.

classic confinement

With this release it should be now possible to use launchpad builders to build for other architectures than amd64 as the detection logic for the dynamic linker in core has been fixed.


Sources, thanks to an external contributor, can now make use of a new entry, source-checksum which can be added to sources that can be hashed, the format is the following: source-checksum: <algorithm>/<digest>. These are the supported algorithms:

  • md5
  • sha1
  • sha224
  • sha256
  • sha384
  • sha3_256
  • sha3_384 (recommended)
  • sha3_512



Projects that use pbr, mostly openstack, now correctly setup their console_scripts defined in entry_points when using setup.cfg.
When building with python provided as a part, headers are now correctly setup to do the right thing for python packages that need to build code requiring these headers.


The kernel and kbuild plugins have received some needed attention for this release providing for better out of the box kernel builds.

The demos have been setup to now build proper bootable kernels with todays Ubuntu Core module dependency.

The plugin itself:

  • The plugin itself has added better support to the logic that adds and traces module dependencies when needing them added to initrd.
  • For the case of architectures that use dtbs, if no dtb is specified, all dtbs are installed to make sure the system could boot by default.
  • The kernel target, if not provided is now decided by the plugin depending on the build architecture.
  • When building, custom MAKEFLAGS no longer affect the build.

And to add to that, there is now a test plan for the kernel plugin that tracks the supported kernels.


The plugin has been expanded to support underlays, the benefit here is that it is now easy to build ROS projects that make use of the content interface. Check out the demo code.

Store integration

Delta uploads are now enabled for every snapcraft push done, a welcome bandwith saving addition.

Every store request now sends a proper User Agent string so the store can behave accordingly to the version of snapcraft in use and properly determine when deprecated APIs can go out the door.

The history command has been deprecated in favor of list-revisions with an alias of revisions. An explanation of the reasoning can be read on the deprecation notice DN4

The status, close and list-revisions commands have been updated to show track information when used.


For the full list of things available on 2.28 feel free to check

Final Notes

To get the source for this release check it out at

A great place to collaborate and discuss features, bugs and ideas on snapcraft is this here forum or on the snapcraft channel on Rocket Chat

To file bugs, please go to

Happy snapcrafting!
– Sergio and the team


The docker image on dockerhub snapcore/snapcraft has been updated to this release.

The snap for snapcraft 2.28 is now in released into the edge channel, after some testing we will be promoting it to beta and if it is that good maybe even candidate


As part of the message above, or perhaps as a reference to a new topic that may be referred to on every release, it would be great to have a summary of how to make use of this release. Otherwise people reckon the announcement but can’t exercise it.