github canonical/snapcraft 3.2
An expedited release

latest releases: 8.2.8, 8.2.7, 8.2.6...
5 years ago

This is an expedited release, including some features, but more importantly the necessary fix to unbreak snap builds using classic confinement that use no base. These snaps essentially target core, which is based on Ubuntu 16.04.

New in this release

stage-snaps

This feature is equivalent to the stage-packages keyword but instead of using packages from the build environment's repositories, uses snaps hosted on the Snap Store.

The semantics are the same as those available for build-snaps. When declaring a snap to be staged, the snap will be retrieved from the Snap Store and unpacked into the the snap currently being built. The meta and snap directories from the snap will be available as meta.<snap-name> and snap.<snap-name> for the cases where assets from those locations are desired for reuse.

schema migrated from yaml to json

This has been done to make it easier to reuse in editors such as Visual Studio Code to get syntax/error highlighting in place. Here's how it would look like with the appropriate extensions in place:

Syntax highlighting

Once this plugin is ready to use it will be available from the Snapcraft docs. In the meantime, an early preview is available.

New colcon plugin

This plugin enables the new build system that targets ROS2, it has been introduced in experimental form as the build system is actively being worked on by the OSRF.

These are the options the plugin offers for a part needing to build with colcon:

    - colcon-packages:
      (list of strings)
      List of colcon packages to build. If not specified, all packages in the
      workspace will be built. If set to an empty list ([]), no packages will
      be built, which could be useful if you only want ROS debs in the snap.
    - colcon-source-space:
      (string)
      The source space containing colcon packages (defaults to 'src').
    - colcon-rosdistro:
      (string)
      The ROS distro to use. Available options are bouncy and crystal (defaults to
      crystal), both of which are only compatible with core18 as the base.
    - colcon-cmake-args:
      (list of strings)
      Arguments to pass to cmake projects. Note that any arguments here which match
      colcon arguments need to be prefixed with a space. This can be done by quoting
      each argument with a leading space.
    - colcon-catkin-cmake-args:
      (list of strings)
      Arguments to pass to catkin packages. Note that any arguments here which match
      colcon arguments need to be prefixed with a space. This can be done by quoting
      each argument with a leading space.
    - colcon-ament-cmake-args:
      (list of strings)
      Arguments to pass to ament_cmake packages. Note that any arguments here which
      match colcon arguments need to be prefixed with a space. This can be done by
      quoting each argument with a leading space.

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

  • many: support for stage-snaps (#2468) (LP: #1805214)
  • project loader: do not leak a part's build-environment (#2472) (LP: #1815658)
  • build providers: remove dead code (#2474)
  • tests: disable spread colcon tests (#2476)
  • ci: shallow clones for CLA checks on travis (#2477)
  • meta: handle symlinked hooks (#2478)
  • project loader: remove special LD_LIBRARY_FLAGS handling for classic (#2485) (LP: #1817300)
  • sources: avoid marking changes to the snap directory as dirty (#2475) (LP: #1806746, #1816397)
  • cli: clean up snapcraft push output (#2469) (LP: #1804439)
  • cli: handle legitimate provider exec errors (#2483)
  • schema: convert yaml jsonschema document to a json equivalent (#2448)
  • tests: make before/after items an array in schema test (#2465)
  • ruby plugin: support new download URL (#2466) (LP: #1815336)
  • colcon plugin: new plugin (#2456) (LP: #1805213)
  • colcon plugin: support build-time chaining (#2486) (LP: #1816565)

Don't miss a new snapcraft release

NewReleases is sending notifications on new releases.