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:
- Paolo Pisati
- Alberto Donato
- Herman Yanush
- Konrad Krawiec
- Marcin Mikołajczak
- Alan Pope
- Daniel Lim Wee Soong
- Chris Glass
- Jonathan Cave
Availability
This new version of snapcraft is now available in the following ways:
- From the SnapStore,
snap install snapcraft
(from thestable
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