Skip to content

Releases: canonical/snapcraft

snapcraft 2.37 has been released

22 Dec 19:49
2.37
b9e08fd
Compare
Choose a tag to compare

Hello snapcrafters! The snapcraft team is pleased to announce that version 2.37 has been released.

Contributions

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:

The last three contributors have done so as part of Google's CodeIn initiative.

New in this release

CLI

help command

As a user experience improvement, the snapcraft help command now produces the
same output as when running snapcraft --help. Viewing help information
related to plugins and other topics previously supported by snapcraft help is
still supported.

export-login command

Until now, the only support Snapcraft had baked in for CI systems was the enable-ci command, which only supported Travis, and only supported pushing a given snap to edge. This release sees the addition of a new export-login command that exports a login with the exact capabilities requested, which opens the door to many more possibilities in CI. Want to create a login that can only push a specific snap to edge? No problem. Want to create a login that can only migrate a specific snap from edge to beta? No problem. Here's how it works:

asciicast

Error messages

Another improvement that was developed together with the design team is that now
most (if not all) errors have a very well defined semantic explaining first
what went wrong followed by a suggestion on how to fix it.

Store

The API to synchronize changes made to the metadata in the snap related to the
presentation layer of the store has been extended to support binary assets. So
far, icons are the only entry supported. Once a definition is made on other
potential assets such as screenshots are made, support for them will be added
as well.

To synchronize the data to the store, you need to run the command that was
introduced in version 2.34 of snapcraft:

snapcraft push-metadata

Plugins

catkin-tools

This release sees the addition of the catkin-tools plugin. This plugin works similarly to the Catkin plugin, but instead of using Catkin, uses the newer (and faster) Catkin Tools. Catkin Tools is still under beta, as is this plugin, but please give it some mileage!

Final notes

To get the source for this release, check it out on github.

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

snapcraft 2.36 has been released

29 Nov 23:36
2.36
6711784
Compare
Choose a tag to compare
Pre-release

Hello snapcrafters,

The team is pleased to announce release 2.36 of snapcraft

Contributions

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

Core

snapcraft.yaml

It was discovered that the snap of Snapcraft v2.35 (currently in stable) doesn't work on i386 due to an inability to find libsodium. That's fixed in this release; you should be able to use Snapcraft v2.36 on i386 with no issues.

Plugins

catkin

Prior to this release, in order to use the Catkin plugin, one needed to specify each package in the workspace that was to be built and installed into the snap. We received feedback that this was, of course, annoying for large workspaces, especially because the entire workspace was typically desired anyway. A new feature has been added to this release, where if you simply don't specify the catkin-packages property, the Catkin plugin will assume you want to build the entire workspace.

ament

ROS1 has been supported pretty much from the beginning via the Catkin plugin, but this release sees the addition of an Ament plugin for supporting ROS2 (which has reached beta3). It fetches the ROS2 underlay and bootstraps it before building the overlay, so it does take a while. Give it some exercise! Here's an example of building a simple talker/listener workspace:

asciicast

Final notes

To get the source for this release, check it out on github.

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

Happy snapcrafting!
-- Sergio and the team

Plugins

snapcraft 2.35 is here

16 Nov 13:51
2.35
050b767
Compare
Choose a tag to compare

Hello snapcrafters! The snapcraft team is pleased to announce that version 2.35 has been released.

Contributions

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

Core

Containers

Each build instance created now correctly works out isolated temporary folder locations for those users running many builds in parallel. There is also better detection of existing or missing lxd installations so first time users can better understand any problems with the host they are currently trying to use.

When running snapcraft from the snap, snapcraft now injects itself into the actual snap instead of apt installing the deb (for the case of today of only supporting one base), providing parity with the local environment at hand.

Work has been added to get rid of all the corner cases and provide useful feedback to users and making the experience feel more native.
Additionally, support has been added for using remote lxd instances.

To enable the persistent build containers feature the SNAPCRAFT_CONTAINER_BUILDS environment variable needs to be set.

Here's an example of using a remote lxd instance:

asciicast

Recording

On this new version we added more information to the build manifest, like the contents of lock files, the debs and snaps installed in the machine, information from uname and the fingerprint of the container used for the build. To record the build manifest, set the environment variable SNAPCRAFT_BUILD_INFO. The manifest will be saved and distributed inside the snap. After the build, you can inspect it in the prime/snap/manifest.yaml.

asciicast

Command Line Interface

new command: pack

This new pack command replaces the now deprecated use of snap <snap-dir> with the goal of decoupling the concept of working on an actual snapcraft project and packing up a directory layout into a snap.

new command: refresh

This command is only available when persistent build containers are enabled and exists to make the environment feel as native as possible. Prior to the existence of this command, building continuously in a container triggered a refresh of the packaging archive every time, now this refresh only takes place on container creation or when called through snapcraft refresh.

new command: edit-collaborators

This command will eventually replace the use of the store invites mechanism to setup other people as collaborators to the project. It is currently hidden as the production snap store has it currently disabled. A future release once things have stabilized will expose the command to users. It is harmless to use today as a proper error will show up.

In the meantime, here is how it works when using the integration store:
asciicast

OS Support

Solus

Initial support for running the snapcraft snap on solus has been added. It should work well enough for things like performing store operations, packing up snaps; or if lxd is installed and setup, most operations should work through use of persistent build containers or cleanbuild.

We look forward to knowing how this initial experience performs.

Ubuntu 14.04

Snapcraft currently only really runs well on Ubuntu 16.04, but we're working on adding support for other releases and Linux distributions. This is the first release where you can use the Snapcraft snap on Ubuntu 14.04 (Trusty). This is particularly important for snaps based on ROS (Robot Operating System) Indigo, which targets Trusty. Here's a demo of just that:

asciicast

Plugins

dotnet

This plugin developed by Rajesh, a .NET developer at Microsoft, allows you to create .NET 2.x based snaps, currently embedding the runtime with plans to enhance it to understand content snaps of .NET runtimes which could be leveraged by projects.

The syntax is pretty straightforward and builds on language understood by upstream so getting started for a current .NET developer should feel like a pleasant journey.

Here is the plugin in action:
asciicast

ruby

This release sees the addition of a Ruby plugin, written by James Beedy. It supports a number of different Ruby versions by building them from source, which takes a little while but makes it pretty versatile. It could definitely use some exercise! Here's an example of building a snap of the Travis gem:

asciicast

catkin

The Catkin plugin has long supported rosdep to resolve and fetch system dependencies (i.e. Debian packages). However, rosdep also supports resolving pip dependencies. This release adds support for those, so they don't need to specified elsewhere in the snapcraft.yaml.

Final notes

To get the source for this release, check it out on github.

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

Snapcraft 2.34 is here

19 Sep 20:42
2.34
Compare
Choose a tag to compare

Hello snapcrafters!

We are pleased to announce the release of snapcraft 2.34:

  • Available on all supported Ubuntu releases (Ubuntu 16.04 LTS and 17.04), and the development release (Artful Aardvark).
  • A windows MSI preview installer for snapcraft on Windows.
  • brew installabled on OS X by running brew install snapcraft (store interaction and cleanbuild are supported).
  • pip installable from PyPI (with caveats when setting up apt bindings) by running pip install snapcraft.
  • View the full list of merged PRs.
  • Specific bug fixes can be seen on the Launchpad milestone.

Contributions

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

Core

types

A new snap type was added: base, this opens the door to start producing base snaps.

Containers

Each build instance created now correctly works out isolated temporary folder locations for those users running many builds in parallel. There is also better detection of existing or missing lxd installations so first time users can better understand any problems with the host they are currently trying to use.

When running snapcraft from the snap, snapcraft now injects itself into the actual snap instead of apt installing the deb (for the case of today of only supporting one base), providing parity with the local environment at hand.

Additionally, when cleaning projects making use of persistent project containers, snapcraft destroys the container that was assigned for this work as well.

To enable the persistent build containers feature the SNAPCRAFT_CONTAINER_BUILDS environment variable needs to be set.

build-snaps

They work in a similar fashion to build-packages, build-snaps takes leverage of snaps in the store to create your snaps. This release exposes the feature through

build-packages

While build-packages have been around for a while, it is only now that they have gained the support for advanced grammar, just as what is provided for stage-packages.
Support for grammar-powered build-packages, both at the part-level and global are here to stay.

source caching

Logic has been added to cache source entries that provide a source-checksum entry for parts, this would behave like:

Cleanup

Release detection

Snapcraft used the deprecated linux_distribution method from the platform module, it now correctly handles the host it is running on through parsing of /etc/os-release.

Tour removal

The tour has been sunset in favour of the tutorial which can be currently found here.

Errors

Many new exceptions have been created to handle the many potential errors that can occur when running snapcraft. In addition to that, proper snapcraft generated and understood errors will produce a nice user friendly error message while situations that were not thought of in the code base will provide proper tracebacks. This will provide a faster turnaround time for fixes and a more apparent situation of wrongness to the users of snapcraft. The errors codes for these two situations are also different, being 1for the former and2` for the latter.

Plugins

nodejs

Catching up to yarn's latest developments, the snapcraft plugin now supports the latest release of yarn.

This plugin has also gained recording capabilities by means of running snapcraft with the environment variable SNAPCRAFT_BUILD_INFO set.

jhbuild

This is a new plugin which uses jhbuild to build mostly gnome projects

python

The python plugin now records the assets it used to build, to get a glimpse of this feature you need to run snapcraft with the environment variable SNAPCRAFT_BUILD_INFO set.

catkin

Support for multiple dependency types was added. The catkin plugin now supports a new API which raises an exception if the dependency type is anything other than apt. This is paving the way for support of pip dependencies coming from rosdep.

The plugin now properly defaults to creating a release build, to enable a debug build, edit the part as follows:

kbuild

This plugin has gained the crosscompiling logic that existed for the kernel plugin, unifying the code bases more with the side effect of having cross compilation support for kbuild

Support for Makefiles without install targets is now also of declarative nature, to set it as such here is an example:

ant & gradle

Support for authenticated proxies has been added, this should be transparent to the snapcraft author through means of consumption of the already existing environment variables for proxy management (http_proxy, https_proxy, ...).

Here's an example recording:

Final notes

To get the source for this release, check it out on github.

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

Snapcraft 2.33 is here

07 Aug 23:20
2.33
Compare
Choose a tag to compare

Hello snapcrafters!

We are pleased to announce the release of snapcraft 2.33:

  • Available on all supported Ubuntu releases (xenial, zesty) and the development release (zesty).
  • brew installabled on OS X by running brew install snapcraft (store interaction and cleanbuild are supported).
  • pip installable from PyPI (with caveats when setting up apt bindings) by running pip install snapcraft.
  • View the full list of merged PRs.
  • Specific bug fixes can be seen on the Launchpad milestone.

Contributions

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

Core

Containers

The experience of using persistent build containers has become much more pleasant with this release as snapcraft now takes care of:

  • containers that have no use any more such as when a project is cleaned.
  • file handling an exposing to and fro the container does not leak container specific assets onto the host.
  • use of --debug and cleanbuild now properly enters into a shell inside the container for inspection.
  • the clean command now properly handles corner case scenarios that weren't handled before.
  • id mappings for the namespace are now correctly set depending on the uid of the user calling snapcraft

Yaml Merge tags

Yaml merge tags are now supported in snapcraft.yaml, allowing for advanced use of yaml in snapcraft.yaml if needed.

Bash completion

Support for bash completion in snapcraft has arrived, it is just a matter of defining completer for your app entry under apps with a script which would deal with such completions. As an illustrative example:

apps:
    my-application:
        command: runme
        completer: completion.sh

Where completion.sh would be found under the root of prime.
For all this to work a recent version of snapd is required like 2.27.

reload-command for daemons

App entries under apps in snapcraft.yaml now support reload-command as an entry which defines how to deal with configuration reloads for daemons.

Plugins

kernel

Handling of default make targets depending on the architecture is now supported for all architectures.

nodejs

Support has been added for newer releases for nodejs/npm for special cases where in tree builds are done and npm generates a symlink farm. This should now just work with no hassle.

Cross compilation

Cross compilation support is now enabled for:

  • autotools
  • waf

Final notes

To get the source for this release, check it out on github.

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

Happy snapcrafting!
-- Sergio and the team

Welcome snapcraft 2.32

27 Jun 15:54
Compare
Choose a tag to compare

Hello snapcrafters!

We are pleased to announce the release of snapcraft 2.32:

  • This is a snap-only release, available in the candidate channel: sudo snap install --candidate snapcraft
  • View the full list of merged PRs.
  • Specific bug fixes can be seen on the Launchpad milestone.

Contributions

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

Core

Who am I?

Several operations in the snap world require one’s account ID out of the store (e.g. creating model assertions). It gets old having to login to the web dashboard to get that ID, so we introduced a snapcraft whoami command that returns information about the account which is currently logged in.

Sources

Snapcraft has always supported local sources (i.e. sources sitting alongside the snapcraft.yaml), but has always used them as a fallback, i.e. if it was determined that it wasn’t another source, then it assumed it was local. This release includes the ability to actually specify that a given source is local, even if it’s e.g. a git repo.

Plugins

catkin

Support was added to the Catkin plugin for the newest ROS distro, Lunar.

rust

Support has been added for cross-compiling Rust parts by using snapcraft --target-arch=<arch>. Note that we’re still working on support for cross-compiling with stage-packages-- stay tuned for multi-arch support.

autotools

The autotools plugin supports a configflags option to supply flags to use when running ./configure. However, it was enforcing uniqueness on these flags, which prevented some projects from building successfully. This release stops enforcing uniqueness on configflags.

Final notes

To get the source for this release, check it out on github.

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

Happy snapcrafting!
-- Kyle and the team

Welcome snapcraft 2.31

13 Jun 18:29
Compare
Choose a tag to compare

Hello snapcrafters!

We are pleased to announce the release of snapcraft 2.31:

Contributions

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

Core

CLI

The move to the new argument parser caused the CLI to regress slightly by duplicating error messages in some circumstances and changing how it handled arguments to the snap command. That has been fixed in this release.

Resume snap downloads

Snapcraft supports downloading the core snap when building classic snaps. This release adds the ability to resume the download of that snap if an error is encountered when trying to fetch it. This feature is really used more in CI than anywhere else, particularly in our own tests, where downloading the snap fails all the time with connection resets. This change did not help quite as much as we’d hoped in that situation, but it’s nice to have nonetheless.

Sources

The git source-type was using --remote when updating submodules, which updated each submodule rather than using the commit recorded in the super project. That’s fixed in this release.

Better build-packages asset tracking

In this release, build-packages asset tracking has been extracted into a project-wide state area instead of being tracked individually in each part’s state. This fixes some awkward behavior when attempting to walk the dependency tree.

Plugins

qmake

The qmake plugin previously required one to specify the Qt version being used. In this release, it’s started defaulting to Qt5.

Go

Support has been added for cross-compiling Go parts by using snapcraft --target-arch=<arch>. This supports use of cgo as well. We’re currently working on support for cross-compiling with stage-packages-- if you’re using stage-packages, please wait to use this feature. We’re implementing it in phases.

Catkin

Larger Catkin projects often keep track of their components by utilizing one or more rosinstall files. This release adds support for those files to the Catkin plugin, allowing an entire ROS project to be built from a single file.

Store integration

Header change

This release changes away from using X-Ubuntu-Release to X-Ubuntu-Series for communication with the store.

Final notes

To get the source for this release, check it out on github.

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

Happy snapcrafting!
-- Kyle and the team

Welcome snapcraft 2.30

23 May 01:34
2.30
Compare
Choose a tag to compare

Hello snapcrafters!

We are pleased to announce the release of snapcraft 2.30:

  • specifics related to the release process and status of availability can be tracked on this forum post.
  • The full list of merged PRs.
  • Specific bug fixes can be seen on the launchpad milestone.

Contributions

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:

  • Facundo Batista
  • Paolo Pisati
  • Tim Süberkrüb
  • Julian Liu
  • roxd
  • Eduardo Vega
  • Ricardo N Feliciano

New in this release

Core

snapcraft CLI

This has been a highly requested change in snapcraft, the CLI has been refactored to provide a much cleaner interface to the user (without breaking backwards compatibility). The diferences between one version and the other can be seen on this forum post

containers

The preliminary support for snapcraft to have a container assigned per project has been extended to work with all of the snapcraft build commands, still hidden by the feature flag, SNAPCRAFT_CONTAINER_BUILDS needs to be set. Read more and track it on this forum post

cleanbuild now correctly works when using the :arch syntax in build-packages and stage-packages, this is for example, having a stage-packages entry that ends with :i386 when cleanbuilding on amd64.

asset recording

Asset recording is a feature with two benefits, easier tracking of what is in a snap and also provides enough information to rebuild a snap with the information provided. The plumbing work is nearly done ironing out minor issues. If SNAPCRAFT_BUILD_INFO is set in the environment, the resulting snap will have a snap/snapcraft.yaml which can be use to rebuild the same snap.

More about the final results of asset recording can be looked up on this forum post

sources

There is now support for 7-zip files, if your source has the extension .7z it should just work. If not, it can be used by setting source-type to 7z.

Plugins

meson

A new plugin has made it to snapcraft, a plugin to work with meson, run snapcraft help meson to get acquainted with the plugin.

rust

The rust plugin now correctly works when source-subdir is set.

kernel

The kernel plugin has received a lot of attention this cycle. It correctly provides warnings when certain features are not enabled that would be required for a system to boot.

The plugin has also gained a new property kconfigflavor that works with the knowledge of Ubuntu kernel configurations to assemble a kernel config.

Store integration

snap collaboration

The user interface for this feature has been completed. Hidden in APIs until the store enables the feature so the story is complete.

Branches

Snapcraft has been enhanced to display branch information for the relevant commands.

Final Notes

To get the source for this release check it out at https://github.com/snapcore/snapcraft/releases/tag/2.30

A great place to collaborate and discuss features, bugs and ideas on snapcraft are the forums on https://forum.snapcraft.io and the snapcraft channel on Rocket Chat https://rocket.ubuntu.com/channel/snapcraft

To file bugs, please go to https://bugs.launchpad.net/snapcraft/+filebug.

Happy snapcrafting!
-- Sergio and the team

Welcome snapcraft 2.29

26 Apr 16:06
2.29
Compare
Choose a tag to compare

Hello snapcrafters!

We are pleased to announce the release of snapcraft 2.29:

Contributions

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:

  • Andy Li
  • Celso Providelo
  • Chris MacNaughton
  • Colin Watson
  • Eduardo Vega
  • Facundo Batista
  • Jumpei Ogawa
  • Para Siva

New in this release

Core

snapcraft snap

Improvements were made to the way snapcraft (through python) finds libraries when using ctypes, this ensures a correct functioning of snapcraft across operating systems. Other improvements were made for snapcraft across operating systems to have correct fall back mechanisms to continue functioning.

containers

There is now preliminary support for snapcraft to have a container assigned per project being worked on. The support today is limited to local lxd remotes and hidden with the feature flag SNAPCRAFT_CONTAINER_BUILDS that needs to be set.

Read more and track it on the forum: https://forum.snapcraft.io/t/per-project-containers/388

enhanced version support

The much requested feature of changing the user visible version in a dynamic way has arrived. There are two modes:

  • a pure script to run after everything has been primed by use of a version-script keyword.
  • a keyword of git that can be set to the version which tells snapcraft to generate the version from the information provided by the VCS holding the repo. This should be really beneficial for people releasing with annotated git tags.

More of this can be read on the forum: https://forum.snapcraft.io/t/snapcraft-version-scriptlets/106

asset recording

Asset recording is a feature with two benefits, easier tracking of what is in a snap and also provides enough information to rebuild a snap with the information provided. Some of the plumbing work has made it into this release.

More about the final results of asset recording can be looked up on the forums https://forum.snapcraft.io/t/asset-recording-for-a-built-snap/317/1

Plugins

rust

Projects using rust can now enjoy the benefits of classic confinement as the linker flags are now correctly set through rust flags settings.

nodejs

The nodejs plugin now has experimental support for yarn. To use it instead of npm the part just needs to set node-package-manager to yarn, here is an example for a part using the nodejs plugin:

parts:
  shout:
    plugin: nodejs
    node-packages:
      - shout
    node-package-manager: 'yarn'

ant

Proxy support for the ant plugin has been worked on. Mostly invisible to most users but necessary to correctly work on most CI systems like the launchpad builders which can be setup on https://build.snapcraft.io

Store integration

snap collaboration

The plumbing work to get snap collaboration in place has landed, for more information about the design for snap collaboration refer to https://forum.snapcraft.io/t/ux-for-snap-collaboration/86/17

UI polish

Improvements to make the UI less cluttered have been made, left over artifacts have been cleaned up as well. This should mostly affect the operation of the snapcraft push --release command.

Final Notes

To get the source for this release check it out at https://github.com/snapcore/snapcraft/releases/tag/2.29

A great place to collaborate and discuss features, bugs and ideas on snapcraft are the forums on https://forum.snapcraft.io and the snapcraft channel on Rocket Chat https://rocket.ubuntu.com/channel/snapcraft

To file bugs, please go to https://bugs.launchpad.net/snapcraft/+filebug.

Happy snapcrafting!
-- Sergio and the team

Welcome snapcraft 2.28

30 Mar 17:39
Compare
Choose a tag to compare

Hello snapcrafters!

We are pleased to announce the release snapcraft 2.28:
https://launchpad.net/snapcraft/+milestone/2.28

Contributions

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

Core

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.

repo

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.

cleanbuild

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

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

Plugins

python

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.

kernel

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.

catkin

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.

Others

For the full list of things available on 2.28 feel free to check https://launchpad.net/snapcraft/+milestone/2.28

Final Notes

To get the source for this release check it out at https://github.com/snapcore/snapcraft/releases/tag/2.28

A great place to collaborate and discuss features, bugs and ideas on snapcraft is snapcraft@lists.snapcraft.io mailing list or on the snapcraft channel on Rocket Chat https://rocket.ubuntu.com/channel/snapcraft

To file bugs, please go to https://bugs.launchpad.net/snapcraft/+filebug.

Happy snapcrafting!
-- Sergio and the team