The team behind Snapcraft is pleased to announce the release of Snapcraft 4.2.
Highlights for this release include:
- new ROS 2 (Foxy Fitzroy) support
- cmake Ninja generator with
core20
- improved track and channel listing
For general details, including installation instructions, see Snapcraft overview, or take a look at Snapcraft release notes for other Snapcraft releases.
Special thanks to the contributors that helped to make this release happen: @GamePad64, @Saviq, @cjp256, @igorljubuncic and @sergiusens.
New Features
ROS 2 Foxy Fitzroy extension and updated colcon plugin
Snapcraft 4.2 includes experimental support for Robot Operating System (ROS 2) Foxy Fitzroy LTS with a new extension and colcon plugin when used with core20
.
For example, ROS 2 applications can now be built 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]
For a walkthrough on how to work with the plugin and extension, see https://snapcraft.io/blog/how-to-build-a-snap-using-ros-2-foxy.
Ninja file generation with cmake
By default, the cmake plugin creates a Makefile when used with with core20
. This release adds the cmake-generator
plugin property to optionally generate of a Ninja file:
hello:
source: .
plugin: cmake
cmake-parameters:
- -DCMAKE_INSTALL_PREFIX=/usr
cmake-generator: Ninja
List channel tracks from Snapcraft
You can now view the available channel tracks for a given snap with the new snapcraft list-tracks <snap-name>
command (or with its alias, tracks).
The command output shows a list of tracks together with their status, creation date, and assigned version pattern, which is required by a given snap revision to be able to release to a given track:
Name Status Creation-Date Version-Pattern
latest default - -
Status can be one of the following:
- default (implicit active)
- active
- hidden
- closed
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)
Specification and documentation changes
- tiny typo fix @igorljubuncic (#3249)
- experimental ros2 extension & colcon v2 plugin @cjp256 (#3203)