github canonical/snapcraft 2.43

latest releases: 8.2.1, 8.2.0, 8.1.0...
5 years ago

Hello Snapcrafters! The Snapcraft team is pleased to announce that version 2.43 is out.

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

lifecycle

snapcraft now accurately identifies source and build changes and re-executes steps accordingly. This new mode is enabled through configuration in this release. To enable it now, open (or create) ~/.config/snapcraft/cli.cfg and add the following entry:

[Lifecycle]
outdated_step_action = clean

Take a look at the feature in action in the following video,
asciicast

build providers

  • Per project SSH key management support was added. Each project will have its own key generated.
  • Snap injection logic has been improved and should be faster for the currently exposed build providers (i.e., multipass).
  • Use of cleanbuild on OS X now defaults to using multipass transparently.
  • Underlying image retrieving logic has been added to have a unique image available to build with any provider which would target a specific base (this is still under the covers and needs enabling).

error reporting

Snapcraft internal errors now prompt to send a report to Sentry, helping us identify the most pressing issues. An option to always report errors has also been added. Set SNAPCRAFT_ENABLE_SILENT_REPORT to a truthful value to automatically send the report.

The prompt asks if you always want to send error reports. If you choose this and change your mind, you can edit the option in snapcraft's configuration.

Take a look at this video to get a quick idea of the error reporting experience:
asciicast

manifest

For better tracking of deliverables, if SNAPCRAFT_BUILD_INFO is set, the resulting manifest.yaml will contain the version of snapcraft used to create the snap.

templates

The templates machinery has made it into this release. However, no new template has been added as we want to carefully review any of these with all relevant stakeholders to provide the stability and consistency which was not fully achieved with shared parts.

CLI

templates

Although no template is available today, the commands to work with them are already available (these are working names for the commands and subject to change):

  • template: Show contents of template.
  • expand-templates: Display snapcraft.yaml with all templates applied.
  • templates: List available templates (it is currently missing its counterpart list-templates).

Cleaner output

Tracebacks are now handled in a less verbose manner and stored to a file for inspection instead of printed to the screen.

The verbosity of output when using --debug has been reduced considerably as well, leaving the option with a more user-focused role (i.e., debug the actual project being worked on and not snapcraft itself).

The explicit traceback and the output previously seen when using debug can be enabled through use of an environment variable, SNAPCRAFT_ENABLE_DEVELOPER_DEBUG=yes.

Plugins

go

The go plugin now knows not to install the debs if the well known snap is used.

Here's a video showing off the functionality:
asciicast

kernel

As was done with Ubuntu based deb kernels, the kernel plugin now also installs the .config used at the root of the snap as config-$kernelversion.

rust

Given that they are well integrated into cargo, tests are now run for cargo builds.

jhbuild

The jhbuild plugin can now properly run as root and has been greatly simplified.

Full list of changes

The issues and features worked on for 2.43 can be seen on the 2.43 launchpad milestone which are reflected in the following change list:

  • recording: expose the version of snapcraft (#2147)
  • tests: add a fixture for OsRelease to simplify test setup
  • recording: add the os-release ID and VERSION_ID to manifest.yaml
  • nodejs plugin: update to the latest 6.x LTS point release (#2157)
  • snap: use apt from the archive instead of compiling (#2156)
  • build_providers: support for communicating with a qemu VM (#2155)
  • many: refactor snapcraft.yaml loading out of load_config (#2160)
  • tests: update codespell, the scope of checks and ordering of static
    tests (#2162)
  • rust plugin: fix cargo builds and run tests (#2170)
  • build_providers: add ssh key managemet to the qemu build provider (#2168)
  • ci: disable osx tests until a new pyyaml is released
  • build_providers: inject snaps when running from a snap (#2174)
  • code: use black as the standard style (#2180)
  • cli: reserve the --debug option for snapcraft projects (#2185)
  • state: allow parametrization of the global state file (#2186)
  • errors: enable sentry by default (#2187)
  • file_utils: get_tool_path to always return an absolute path (#2193)
  • errors: support keyboard interrupts (#2198)
  • build_providers: add a build image setup facility (#2192)
  • build providers: better injection logic (#2196)
  • Revert "ci: disable osx tests until a new pyyaml is released" (#2213)
  • providers: multipass by default on darwin (#2215)
  • lifecycle: automatically stage dependencies (#2144)
  • lifecycle: automatically clean dirty steps (#2145)
  • travis: use LXD from 3.0 track (#2149)
  • project_loader: process parts in consistent order (#2146)
  • project_loader: allow loading null parts (#2153)
  • tests: disable sentry (#2154)
  • lifecycle: don't clean priming area if the snap is being tried (#2143)
  • many: extract lifecycle ordering into own module (#2159)
  • many: automatically redo step for specified part (#2152)
  • tests: add lifecycle ordering tests (#2163)
  • many: automatically detect dependency changes (#2165)
  • project_loader: replace dict keys as well as values (#2166)
  • {catkin,python} plugin: support cleaning (#2171)
  • many: add shellcheck to static tests (#2172)
  • lifecycle: detect local source changes (#2167)
  • lifecycle: pass commands to containerbuild, not steps (#2178)
  • cli: SNAPCRAFT_BUILD_ENVIRONMENT isn't deprecated (#2179)
  • pluginhandler: use uname from the host (#2177)
  • store: properly handle disabled deltas (#2181)
  • tests: create basic integration test spread infrastructure (#2173)
  • tests: add spread suite for autotools plugin (#2182)
  • tests: add spread suite for cmake plugin (#2183)
  • spread: stop testing 17.10 (#2197)
  • tests: add spread suite for copy plugin (#2199)
  • tests: add spread suite for nil plugin (#2201)
  • tests: add spread suite for kbuild plugin (#2203)
  • kbuild plugin: stop modifying kconfigfile (#2204)
  • tests: support running spread suite in autopkgtests (#2188)
  • tests: add spread suite for meson plugin (#2205)
  • tests: add spread suite for godeps plugin (#2200)
  • tests: add spread suite for scons plugin (#2208)
  • tests: add spread suite for catkin plugin (#2206)
  • tests: add spread suite for waf plugin (#2210)
  • cli: add inspect subcommand (#2184)
  • tests: add spread suite for tar-content plugin (#2209)
  • tests: add spread suite for ament plugin (#2211)
  • tests: add spread suite for ruby plugin (#2212)
  • project_loader: add basic template support (#2189)
  • spread tests: vendor gotty
  • spread tests: vendor kbuild-template
  • spread tests: vendor hello
  • sentry: support disabling error reporting (#2214)
  • jhbuild plugin: allow running as 'root' (#2141)
  • python plugin: add process-dependency-links to the pull_properties (#2190)
  • ci: improve pr template and tools' ignored files list (#2191)
  • tests: stricter match when running snapcraft revisions (#2195)
  • go plugin: do not install go debs if go snap is used (#2194)
  • kbuild plugin: read configs from source directory instead (#2202)
  • kernel plugin: install .config as config-$kernelversion (#2207)

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.