github canonical/snapcraft 2.39
Snapcraft 2.39 has been released

latest releases: 8.2.12, 8.2.11, 8.2.10...
6 years ago

Hello snapcrafters! The snapcraft team is pleased to announce that version 2.39 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:

Availability

This new version of snapcraft is now available in the following ways:

  • From the SnapStore, snap install snapcraft (from the stable channel)
  • On a Mac with Homebrew, brew install snapcraft
  • With docker, docker pull snapcore/snapcraft:stable

New in this release

Core

Improved support for classic confinement

We have solidified and unified the experience for classic confined snaps. Creating snaps on 16.04 targeting that same base will now make the necessary arrangements so that runnables and libraries target the correct linker and have the right paths regardless of how the snapcraft project is assembled (source or pre-built binaries).

Experimental support for building on newer stacks

When building on a newer stacks than the base that is being targeted, there is possibility of incompatibilities at the ABI level of the libraries involved, one of those that is noticeable is libc6. To sort through this, when building on newer stacks where this incompatibility may occur an error is issued to prevent the same failure at runtime; with this error, instructions on how to move forward are provided for those wishing to embark in such task.

New "to" keyword in grammar

The grammar which can be used to conditionalize build-packages and stage-packages has grown a new statement. The new "to" statement, analoguous to the existing "on" statement, only evaluates the given packages depending on the target architecture.
For example:

build-packages:
  - to armhf:
    - foo
  - bar

In this case, package foo will only be installed when building the snap targeting the armhf architecture. However, package bar is always installed. Furthermore, any package in a to statement will be installed for the target architecture rather than the host version.

In this example, foo has an implicit architecture specific tag matching what is in to, which would make it the same in the example shown to write foo:armhf.

Information extraction

Snapcraft 2.38 added support to extract basic metadata info from appstream files, such as summary and description and making them available in the resulting snap.yaml, allowing to reduce the entry point for specific application information to central point. On this release we have extended that to also extract the icon and desktop files declared in the appstream metainfo.xml file.

CLI

Specify expiration date for exported login

Snapcraft v2.37 gained the ability to export a login that could be used in CI. However, it only supported the default lifespan of one year. This release sees the addition of the ability to specify a shorter lifespan with the --expires option.

Default locale

Snapcraft requires a UTF locale to be set, given that most CI systems have the C locale setup by default, snapcraft now sets a default locale of C.UTF-8 as a fallback locale.

Plugins

kbuild

If, when cross-compiling a kernel, one set the ARCH variable and not the CROSS_COMPILE variable, the kbuild plugin would incorrectly proceed with an empty CROSS_COMPILE variable set, which resulted in a failed build. This release sees the kbuild plugin only use the CROSS_COMPILE variable if it's actually set.

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

Don't miss a new snapcraft release

NewReleases is sending notifications on new releases.