Skip to content

Releases: canonical/snapcraft

4.4

26 Oct 20:50
4d863eb

Choose a tag to compare

4.4 Pre-release
Pre-release

Special thanks to the contributors that made this release happen: @artivis, @cjp256, @galgalesh, @hellsworth, @kenvandine, @kyrofa, @maxiberta, @sergiusens and @timsueberkrueb

Command Line

It is now possible to add custom CA certificates into the build environments created by Snapcraft by using --add-ca-certificates with the lifecycle related commands.

And, Snapcraft's snap command now accepts an --output parameter.

Extensions

Desktop

A new mechanism to pre-generate font caches has been added to the desktop related extensions. This allows for system font caches to be generated at install time and isolated from the potentially ABI incompatible host generated cache.

To benefit from this feature, any extension using Snapcraft project just needs to rebuild their snap. More details about this feature can be found in the specification.

Package Repositories

The experimental package repositories feature is adapting to the latest changes:

  • The undocumented =$SNAPCRAFT_APT= variables have been removed.
  • Introduced improved error handling and schema validation.

The specification has been finalized which opens a path from leaving the experimental flag behind.

Store

Progressive Releases

Progressive releases now support reporting metrics as defined in the specification. Input on the feature is welcome on the forum.

Snap Revisions

Snapcraft's revisions command is now internally using a new endpoint which should provide much better results:

  • the table headers have slightly changed to better represent architectures.
  • channels are now fully qualified (i.e.; <track/risk/branch>).
  • comma separated column entries no longer have a space separating each item.

Refer to the specification for further details.


Full list of changes

New Features

Maintenance

  • cli: update revisions to use releases API @sergiusens (#3329)
  • storeapi: remove bindings for history @sergiusens (#3332)
  • v1 plugins: lock godep's dependencies @cjp256 (#3285)
  • readme: remove link to Google+ @timsueberkrueb (#3292)
  • storeapi: drop arch requirement for get_channel_mapping() @cjp256 (#3301)
  • build(deps-dev): bump junit from 3.8.1 to 4.13.1 in /tests/spread/plugins/v1/maven/snaps/legacy-maven-hello/my-app @dependabot (#3316)
  • build(deps-dev): bump junit from 3.8.1 to 4.13.1 in /tests/spread/plugins/v1/maven/snaps/maven-hello/my-app @dependabot (#3315)
  • spread tests: introduce electron-builder test @cjp256 (#3312)
  • unit tests: fix runtests.sh not filtering tests when passed a subdirectory @maxiberta (#3305)
  • electron-builder spread test: sync expected snapcraft.yaml @cjp256 (#3323)
  • package repositories: drop $SNAPCRAFT_APT_HOST_ARCH variable @cjp256 (#3322)
  • package repositories: drop $SNAPCRAFT_APT_RELEASE variable @cjp256 (#3328)
  • flutter tests: updated for latest embedder @kenvandine (#3310)
  • lxd unit tests: simplify command checking pattern @cjp256 (#3326)

Bug Fixes

  • package repositories: fix case where formats is empty @cjp256 (#3330)
  • meta: add error check for "command not found" @cjp256 (#3321)
  • snapcraftctl: add checks for empty string for set-version & set-grade @cjp256 (#3325)
  • pluginhandler: properly handle snapcraftctl errors @cjp256 (#3317)
  • schema: add regex to validate description is non-empty @cjp256 (#3303)
  • set ROS_PYTHON_VERSION for rosdep @artivis (#3324)
  • Set ROS_VERSION for rosdep in plugins v1 @artivis (#3313)
  • repo: install requested build-package versions @cjp256 (#3221)
  • project loader: install dirmngr prior to configuring package repositories @cjp256 (#3294)
  • build providers: fix issues running on Windows @sergiusens (#3289)
  • cmake v2 plugin: add help for cmake generators @sergiusens (#3288)
  • setup.py: assert with helpful error when unable to determine version @cjp256 (#3307)

Specifications and Documentation

4.3

11 Sep 19:12
262f118

Choose a tag to compare

4.3

Special thanks to the contributors that made this release happen: @cjp256, @flexiondotorg, @kyrofa and @sergiusens

New Features

ROS 1 Extension together with a v2 catking and catkin-tools plugin for core20

This allows you to target ROS 1 Noetic Ninjemys which is the latest (and last)
ROS 1 LTS that runs on Ubuntu 20.04 (Focal Fossa).

This feature allows building ROS 1 applications with a snapcraft.yaml as simple as:

name: catkin-noetic-hello
version: "1.0"
summary: hello world
description: |
  A ROS 1 roscpp-based workspace.
grade: stable
confinement: strict
base: core20

apps:
  catkin-noetic-hello:
    command: opt/ros/noetic/lib/snapcraft_hello/snapcraft_hello
    plugs: [network, network-bind]
    extensions: [ros1-noetic]

parts:
  hello:
    plugin: catkin
    source: .
    build-packages: [g++, make]

The experience should be pretty similar to the newly introduced ROS 2 extension and colcon plugin
in Snapcraft 4.2.

Source is assumed to be local and a valid catkin project

Set the default Channel Track from the Snapcraft

Building on the feature set from Snapcraft 4.2
where track listing was introduced, it is now possible to set default tracks and it is as simple as running:

$ snapcraft set-default-track node 17
Default track for 'node' set to '17'.

Other improvements

  • build providers: use the releases endpoint for LXD @sergiusens (#3271)
  • cli: add --enable-experimental-extensions option for expand-extensions @cjp256 (#3266)

Bug Fixes

Specifications and Documentation

4.2

25 Aug 16:28
31731cc

Choose a tag to compare

4.2 Pre-release
Pre-release

The team behind Snapcraft is pleased to announce the release of Snapcraft 4.2.

Special thanks to the contributors that made this release happen: @GamePad64, @Saviq, @cjp256, @igorljubuncic and @sergiusens

New Features

ROS 2 Extension and colcon v2 plugin with base core20

This allows you to target ROS 2 Foxy Fitzroy which is the latest ROS 2 LTS
that runs on Ubuntu 20.04 (Focal Fossa).

This feature allows building ROS2 applications with a snapcraft.yaml as simple as:

name: ros2-talker-listener
version: '0.1'
summary: ROS2 Talker/Listener Example
description: |
  This example launches a ROS2 talker and listener.

grade: devel
confinement: strict
base: core20

parts:
  ros-demos:
    plugin: colcon
    source: https://github.com/ros2/demos.git
    source-branch: foxy
    source-subdir: demo_nodes_cpp
    build-packages: [make, gcc, g++]
    stage-packages: [ros-foxy-ros2launch]

apps:
  ros2-talker-listener:
    command: opt/ros/foxy/bin/ros2 launch demo_nodes_cpp talker_listener.launch.py
    plugs: [network, network-bind]
    extensions: [ros2-foxy]

A nice walkthrough on how to work with the plugin and extension can be found on https://snapcraft.io/blog/how-to-build-a-snap-using-ros-2-foxy

Ninja generator support when using cmake with base core20

The default generator is set to create Makefiles when using the cmake plugin on core20. A new plugin property has now been introduced to allow for setting that to ninjas. To do so as an example a part can be configured to look like

  hello:
    source: .
    plugin: cmake
    cmake-parameters:
      - -DCMAKE_INSTALL_PREFIX=/usr
    cmake-generator: Ninja

Listing Snap Channel Tracks from Snapcraft

A long missing feature in Snapcraft since the introduction of Channel Tracks and the possibility
to have a default one was to view the available Tracks created for a given snap.

There is now a new command available to retrieve such information, snapcraft list-tracks that
has an alias for convenience and can be called with snapcraft tracks.

The list will show the list of tracks together with their state:

  • default (implicit active)
  • active
  • hidden
  • closed

And their creation date together with their assigned Version Pattern (version string required in a given
Snap Revision to be able to release to a given Track).

Bug Fixes

  • meta: detailed warnings for resolution of commands @cjp256 (#3219)
  • file utils: introduce get_host_tool_path() to find commands on host @cjp256 (#3244)
  • plugins v2: use repo.Repo not repo.Ubuntu in colcon @cjp256 (#3257)
  • remote-build: use requests.get() instead of urlopen() @cjp256 (#3255)
  • spread tests: fix classic patchelf linker regex to match all arches @cjp256 (#3247)
  • tests: restrict colcon / ros2-foxy test to amd64 & arm64 @cjp256 (#3254)
  • extensions: prepend the snapd glvnd path @Saviq (#3253)
  • build providers: honour http proxy settings for snapd @cjp256 (#3251)
  • snapcraft: use system certificates by default for https requests @cjp256 (#3252)

Specifications and Documentation

  • Tiny typo fix @igorljubuncic (#3249)
  • experimental ros2 extension & colcon v2 plugin @cjp256 (#3203)

4.1.5

12 Aug 23:40
65a7c63

Choose a tag to compare

Special thanks to the contributors that made this release happen: @cjp256

Bug Fixes

  • plugins v2: quote python packages argument for pip @cjp256 (#3246)
  • build providers: install apt-transport-https @cjp256 (#3232)
  • cli: only issue warning when checking for usage of sudo @cjp256 (#3240)
  • tests: migrate legacy classic patchelf tests to spread @cjp256 (#3242)

Specifications and Documentation

  • specifications: minor cleanup for package-repositories @cjp256 (#3245)

4.1.4

07 Aug 02:35

Choose a tag to compare

Special thanks to the contributors that made this release happen: @cjp256

Fixes

Specifications and Documentation

4.1.3

31 Jul 21:34
e6ef1ce

Choose a tag to compare

Special thanks to the contributors that made this release happen: @cjp256, @galgalesh, @sergiusens and @snshn

Maintenance

Bug Fixes

  • cli: fix typo on build provider installation request @snshn (#3222)
  • extensions: kde-neon: use gtk3 platform theme on gtk-based DE's @galgalesh (#3226)
  • lifecycle: check for snap using shutil.which() @cjp256 (#3230)
  • meta: fix content slot to set content when using source key @cjp256 (#3227)
  • review tools: fix snap link or copy path @sergiusens (#3228)
  • file utils: rename get_tool_path() to get_snap_tool_path() @cjp256 (#3231)
  • errors: introduce HostToolNotFoundError exception @cjp256 (#3229)

Specifications and Documentation

Tooling

4.1.2

21 Jul 18:09
e4e0879

Choose a tag to compare

Special thanks to the contributors that made this release happen: @anonymouse64, @cjp256, @jhenstridge and @sergiusens

Bug Fixes

Maintenance

  • extensions/desktop/common: add snapd gl vdpau dir to LD_LIBRARY_PATH @anonymouse64 (#3209)
  • packaging: use PEP-440 compliant versioning for python & snap @cjp256 (#3207)
  • snap: specify 'libxslt1-dev' than virtual 'libxslt-dev' build-package @cjp256 (#3214)

4.1.1

08 Jul 14:02
ad01248

Choose a tag to compare

Special thanks to the contributors that made this release happen: @cjp256, @kenvandine, and @sergiusens

Bug Fixes

Tooling

Flutter all the things

08 Jul 13:52
c9a0355

Choose a tag to compare

Special thanks to the contributors that made this release happen: @cjp256, @edumucelli, @hpoul, @kenvandine, @sergiusens and @xnox

New Features

The most interesting feature in this release is the addition of being able to
create snaps for Flutter based applications. A first snap workflow has been
written to guide you through the process https://snapcraft.io/#flutter

Maintenance

Bug Fixes

Specifications and Documentation

Tooling

  • tools: fix environment-setup to work on aarch64 @cjp256 (#3176)

4.0.7

22 Jun 17:43
7d1f7fb

Choose a tag to compare

Special thanks to the contributors that made this release happen: @cjp256 and @sergiusens

Full list of changes

Bug Fixes

  • build providers: improve warning for unknown base @cjp256 (#3182)
  • build providers: nice message on bad base @sergiusens (#3180)
  • cli: don't warn about --target-arch if target_arch is None @cjp256 (#3181)

Tooling