Hello snapcrafters!
We are pleased to announce the release of version 2.26
of snapcraft has been released:
https://launchpad.net/snapcraft/+milestone/2.26
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:
- Björn Tillenius
- Marco Trevisan
- Matthew Aguirre
- Olivier Tilloy
- Shawn Wang
New in this release
Snap directory now in place
All the snapcraft specific asset handling has been moved to the snap
directory as the preferred location for the following:
snapcraft.yaml
setup/gui
parts/plugins
This adds up to the already existing location for hooks
introduced in 2.25.
On snapcraft init
, snapcraft will now create a snap/snapcraft.yaml
file. Keep in mind that the existing snapcraft.yaml
and .snapcraft.yaml
are still valid and not deprecated.
However, use of parts/plugins
will print a deprecation message with a link to https://snapcraft.io/docs/deprecation-notices/dn2 and use of setup/gui
will behave in a similar way but linking to https://snapcraft.io/docs/deprecation-notices/dn3.
stage packages
The experience for using multi-architecture package entries in stage-packages
has been refined. This should provide a better experience for when someone wants to; to illustrate image that on an arm64
you would want to include an armhf
package, e.g.;
parts:
packages:
plugin: nil
stage-packages:
- libfoo:armhf
Desktop file support enhancements
Snapcraft 2.25 introduced support for desktop
file entries in as part of an app entry in apps
. There have been improvements to this functionality for when the app entry in apps
matches the snap name
as well as polishing in the assembly of the resutling snap.
godeps plugin
The godeps
plugin until this release fetched all the dependencies defined in dependencies.tsv
or that defined in the part by the godeps-file
entry and proceeded to build all package main
sources found in the tree. This can now be limited to only build certain packages by use of the go-packages
entry.
As an example let's use juju
. It currently as at the time of this writing:
github.com/juju/juju/cmd/juju
github.com/juju/juju/cmd/jujud
github.com/juju/juju/cmd/plugins/juju-metadata
github.com/juju/juju/cmd/plugins/juju-upgrade-mongo
Without the go-packages
entry you would end up with 4 binaries in your snap juju
. jujud
. juju-metadata
and juju-upgrade-mongo
. If for example you wanted to only build juju
something like this would do the trick:
parts:
juju: https://github.com/juju/juju
go-importpath: github.com/juju/juju
go-packages:
- github.com/juju/juju/cmd/juju
catkin plugin
The catkin
plugin has been optimized under the hood to work better with the compiler meant to be used with the chosen ROS release.
gradle plugin
The gradle
plugin has been enhanced to also work with gradle
transparently when gradlew
is not provided with the sources
of that part.
python plugin
The python
plugin will now do the right thing when setting up a requirements
entry and having an install_requires
entry in setup.py
.
General polishing
Some nice polishing that is part of ongoing work is showing up in this release:
- schema errors related to text length limits now display an error a human can parse.
- incorrect spacing issues have been fixed in some prompts.
- some projects that are part of the tour had missing `build-packages added to them.
- colors have been fixed for failed logins to the store.
Others
For the full list of things available on 2.26 feel free to check https://launchpad.net/snapcraft/+milestone/2.26
Final Notes
To get the source for this release check it out at https://github.com/snapcore/snapcraft/releases/tag/2.26
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