Welcome snapcraft 2.29

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

Availability

This release is now available on Ubuntu Xenial Xerus, Yakkety Yak and Zesty Zapus.

For first time installation run:

sudo apt update
sudo apt install snapcraft

If already installed, run sudo apt update && sudo apt dist-upgrade.

There is also a docker image on docker hub available as snapcore/snapcraft

For those wondering, a snap is coming soon! Sooner than you think

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: Per project containers

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: Snapcraft version scripts

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 Asset recording for a built snap

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 UX for snap collaboration

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

4 Likes