Changelog

8.5.0 (2024-Nov-19)

Core

  • Remove the Snapcraft Dockerfile in favour of the snapcraft-rocks registry. For more information, see the docker/README.md file.

Bases

core24

Plugins

Poetry

Extensions

Env-injector
  • Add a new experimental extension called env-injector. It simplifies passing environment variables to snaps at runtime using snap config or a .env file. For more information, see the env-injector extension

Command line

  • Order lifecycle commands in the sequence they run rather than alphabetically in help messages.

  • Show positional arguments in help messages.

  • Hide the terminal cursor when Snapcraft is running.

  • Fix a bug where the version and path to the log file were logged multiple times.

  • Fix a bug where deprecated commands were suggested when an invalid command was entered (canonical/craft-cli#297).

Init

  • Add a <project-dir> argument to initialise the project in a particular directory.

  • Add a --name <name> argument to set the name key in the initialised snapcraft.yaml. If --name isn’t provided, the name of the project directory or current working directory is used.

  • Add a --profile <profile> argument to initialise a project for a specific purpose. Currently, only the simple profile is supported.

Store

  • Add support for registries with new commands list-registries and edit-registries.

  • Add support for specifying components in a validation set when using the edit-validation-sets command.

Documentation

  • Add reference for linters.

  • Update the HACKING doc with instructions for how to use tox.

  • Hide subheadings in the changelog’s table of contents.

  • Add reference for the Poetry plugin.

  • Fix an issue where the auto-generated command reference wasn’t rendered correctly.

For a complete list of commits, check out the 8.5.0 release on GitHub.

8.4.4 (2024-Oct-24)

Core

Bases

core24
  • Fix a bug where CRAFT_PARALLEL_BUILD_COUNT was not evaluated in snapcraft.yaml files (#4785).

  • Fix a bug where package-repositories declarations could conflict with default sources present in Noble (LP#2083013).

For a complete list of commits, check out the 8.4.4 release on GitHub.

7.5.8 (2024-Oct-24)

Core

  • Fix a regression where Snapcraft would fail to run on some architectures due to a cryptography dependency that attempted to load legacy algorithms (#5077).

For a complete list of commits, check out the 7.5.8 release on GitHub.

8.4.3 (2024-Oct-10)

Core

Components

  • Add support for component types kernel-modules and standard (#5089).

For a complete list of commits, check out the 8.4.3 release on GitHub.

8.4.2 (2024-Oct-07)

Core

  • Fix a regression where Snapcraft would fail to run on some architectures due to a cryptography dependency that attempted to load legacy algorithms (#5077).

  • Fix a regression where Snapcraft would fail to run in a container if it was not running as a snap (#5079).

  • Fix a bug where parallel installations of Snapcraft would not work if the Snapcraft snap was installed from the store (#4683, #4927).

Plugins

Python
  • Fix an issue where the python plugin would fail to build if the part had no Python scripts.

Remote build

  • Fix a bug where the remote builder would ignore the user’s response when a build is interrupted and always clean the launchpad project (#4929).

Documentation

  • Update Rust plugin doc with recent changes to the Rust toolchain.

For a complete list of commits, check out the 8.4.2 release on GitHub.

7.5.7 (2024-Oct-03)

Core

  • Fix a bug where parallel installations of Snapcraft would not work if the Snapcraft snap was installed from the store (#4683, #4927).

For a complete list of commits, check out the 7.5.7 release on GitHub.

8.4.1 (2024-Sep-20)

Core

  • Fix a regression where numeric entries in snapcraft.yaml couldn’t be parsed.

Bases

core24
  • Fix a regression where build-for couldn’t be omitted in a platforms entry in a snapcraft.yaml file.

  • Fix a regression where --shell and --shell-after weren’t supported for the pack command (#4963).

  • Fix a regression where --debug wouldn’t open a shell into the build environment if the packing step fails (#4959).

Plugins

NPM
  • Fix a bug where NPM parts fail to build if the pull and build steps didn’t occur in the same instance of Snapcraft.

Command line

  • Fix a regression where store errors would be raised as an internal error (#4930).

  • Add documentation links for error messages about using an ESM base.

Remote build

  • Fix a regression where --build-for and --platform couldn’t accept comma-separated values (#4990).

  • Fix a regression where remote build errors would be raised as an internal error (#4908).

  • Add documentation links and recommended resolutions to remote-build errors.

Store

  • Fix a regression where Ubuntu One macaroons couldn’t be refreshed (#5048).

For a complete list of changes, check out the 8.4.1 release on GitHub.

8.3.4 (2024-Sep-13)

Core

Plugins

NPM
  • Fix a bug where NPM parts fail to build if the pull and build steps did not occur in the same execution of Snapcraft.

For a complete list of commits, check out the 8.3.4 release on GitHub.

8.4.0 (2024-Sep-10)

Note

8.4.0 includes changes from the 7.5.6 release.

Core

  • Fix a bug where Snapcraft would fail to inject itself into the build environment when not running as a snap (canonical/charmcraft#406). If an app isn’t running from snap, the installed app will now install the snap in the build environment using the channel in the CRAFT_SNAP_CHANNEL environment variable, defaulting to latest/stable if none is set.

  • Fix a regression where icons wouldn’t be configured and installed for snaps with no apps defined in their snapcraft.yaml.

Bases

core24
  • Raise an error if the build plan is empty and no snaps will be built (canonical/craft-application#225).

  • Fix a regression where https_proxy, https_proxy, and no_proxy were not forwarded into the build environment.

Plugins

  • Fix a bug where snapcraft list-plugins --base core20 would fail in a core24 project directory (#5008).

Components

Command line

Remote build

  • Add “Pending” status for queued remote builds.

  • Add documentation links to remote-build errors.

  • Improve error messages when multiple snaps can be built on a single build-on architecture (#4995).

  • Improve error messages when using the wrong remote builder.

  • Fix a regression where --platform or --build-for could be used when platforms or architectures were defined in the snapcraft.yaml file (#4881).

  • Fix a regression where --platform could be used for core22 snaps (#4881).

  • Fix a bug where SNAPCRAFT_REMOTE_BUILD_STRATEGY would be validated when running commands other than remote-build.

  • Fix a bug where SNAPCRAFT_REMOTE_BUILD_STRATEGY was ignored for core24 snaps.

Documentation

For a complete list of commits, check out the 8.4.0 release on GitHub.

8.3.3 (2024-Aug-28)

Core

  • Improve detection and error messages when LXD is not installed or not properly enabled.

Bases

core24
  • Require Multipass >= 1.14.1 when using Multipass to build core24 snaps.

For a complete list of commits, check out the 8.3.3 release on GitHub.

7.5.6 (2024-Aug-15)

Core

Bases

core22
  • Fix a regression where icons would not be configured and installed for snaps with no apps defined in their snapcraft.yaml.

For a complete list of commits, check out the 7.5.6 release on GitHub.

8.3.2 (2024-Aug-05)

Core

Bases

core24
  • Fix a bug where classic snaps with a Python virtual environment would attempt to use the system’s Python intepretter (#4942).

Plugins

Kernel
  • Fix a bug where removing a missing symlink would cause the kernel plugin to fail.

Store

  • Fix a bug where edit-validation-sets would fail when editing a validation sets with snap revisions (#4909).

For a complete list of commits, check out the 8.3.2 release on GitHub.

8.3.1 (2024-Jul-08)

Core

Bases

core24
  • Support all as a target with build-for: [all] (#4854).

  • Ensure Craft Providers provider (LXD or Multipass) is available before launching a build environment.

  • Improve presentation of snapcraft.yaml model errors.

Metadata

  • Validate that update_contact, donation, vcs-browser, bugtracker, and homepage fields adopted from an appstream metadata file are valid URLs or email addresses.

  • Ensure that contact, donation, source-code, issues, and website fields in a snapcraft.yaml take priority over appstream metadata (#4890).

Remote build

  • Require core20 snaps to use the legacy remote builder (#4886).

  • Allow building core22 snaps with build-for: [all].

  • Support reading Launchpad credentials from the previous location (#4889). If launchpad credentials do not exist in the new location ($XDG_DATA_DIR/snapcraft/launchpad-credentials) introduced in 8.2.0, then load credentials from the previous location ($XDG_DATA_DIR/snapcraft/provider/launchpad/credentials) and emit a deprecation notice.

Note

This behavior applies to the new and legacy remote builders.

Documentation

For a complete list of commits, check out the 8.3.1 release on GitHub.

8.3.0 (2024-Jun-27)

Core

  • Improve logging to show which package is being fetched.

  • Add support for parts to source 7z archives.

  • Improve error messages when sources cannot be fetched.

Bases

core24
  • Add support for core24-desktop snaps (#4818).

core22
  • Warn when multiple snaps are going to be built in destructive mode because it may cause unexpected behavior (#4685, #4356).

  • Fix a regression where core22-desktop could not be built (#4818).

Plugins

Flutter
  • Add curl as a build-package for flutter parts (#4804).

ROS 2 Jazzy
  • Add support for the new ROS 2 Jazzy extension which lets you snap ROS 2 applications on core24 (#4791).

  • Similar to ROS 2 Humble for core22, content-sharing is supported (#4828).

For more information, see https://snapcraft.io/docs/ros2-jazzy-extension and https://snapcraft.io/docs/ros2-jazzy-content-extension.

NPM

Various improvements for the core22 and core24 NPM plugins:

  • Accept NVM-style version identifiers for npm-node-version.

  • Verify SHA256 checksums after node.js download (canonical/craft-parts#717).

  • Use new-style npm-install commands if the npm version is newer than 8.x.

  • Set NODE_ENV to production by default.

List plugins
  • Fix a bug where snapcraft list-plugins would fail to run in a core24 project directory (#4830).

  • Update snapcraft list-plugins to show a list of core24 plugins instead of core22 plugins when not in a project directory (#4830).

Extensions

Gnome
  • Make gnome extension stable for core24.

  • Fix GI_TYPELIB_PATH and XDG_DATA_DIRS paths in the build environment (#4798).

  • Integrate with the gpu-2404 SDK (#4744).

For more information, see the gpu 2404 interface docs.

KDE Neon 6
  • Fix paths to QtWebEngineProcess in the desktop launcher (#4745).

Expand extensions
  • Fix a bug where snapcraft expand-extensions could not parse a snapcraft.yaml file containing the platforms keyword.

Components

  • Include the provenance keyword in a component’s metadata from a snapcraft.yaml file (#4827).

Metadata

Add support for adopting more metadata fields from a project’s appstream file:

  • license

  • contact

  • source-code

  • issues

  • websites

  • donations

Metrics

  • Add support for snapcraft metrics to retrieve the metrics installed_base_by_architecture and weekly_installed_base_by_architecture (#4735).

Names

  • Add output formatting to snapcraft names with --format. Supported formats are table and json (#4778).

Init

  • Update snapcraft init to create a core24 project instead of a core22 project (#4830)

Documentation

Add reference documentation for more plugins (#4811):

  • ant

  • autotools

  • cmake

  • dotnet

  • go

  • make

  • meson

  • nil

  • npm

  • qmake

  • scons

For a complete list of commits, check out the 8.3.0 release on GitHub.

8.2.12 (2024-Jun-12)

Core

Bases

core24
  • Fix a bug where snaps would stage Python packages already included in the core24 base snap (#4865).

Store

  • Fix a bug where store-related error messages would be presented as an internal Snapcraft error.

  • Add a resolution and link to documentation for keyring errors.

Documentation

  • Fix Snapcraft’s version in the readthedocs documentation.

For a complete list of commits, check out the 8.2.12 release on GitHub.

8.2.11 (2024-Jun-12)

Core

Plugins

Dotnet
  • Fix a regression where the dotnet plugin could not be used for core22 snaps (#4825).

For a complete list of commits, check out the 8.2.11 release on GitHub.

8.2.10 (2024-Jun-03)

Remote builder

  • Fix a bug where comma-separated architectures in --build-for could not be parsed (#4780).

  • Fix a bug where core22 snaps with a top level architectures keyword could not be parsed (#4780).

  • Fix a bug where remote build log files were incorrectly named (#4781).

  • Retry more API calls to Launchpad (canonical/craft-application#355).

  • Add an exponential backoff to API retries with a maximum total delay of 62 seconds (canonical/craft-application#355).

  • Fix a bug where the remote builder would not fail if no artefacts were created (#4783).

For a complete list of commits, check out the 8.2.10 release on GitHub.

8.2.9 (2024-May-28)

Core

Extensions

KDE Neon 6
  • Fix multiple issues to allow web processes to work correctly (#4823).

  • Expose the libplas and liblapack provided by the kf6-core22{-sdk} snaps (#4823).

For a complete list of commits, check out the 8.2.9 release on GitHub.

8.2.8 (2024-May-17)

Core

Bases

core24
  • Fix a behavior where shared libraries from the host were loaded for classically confined snaps.

Note

This is implemented with patchelf --no-default-lib when enable-patchelf is defined.

Plugins

Dotnet
  • Disable the dotnet plugin for core24 snaps due to a pending rewrite.

For a complete list of commits, check out the 8.2.8 release on GitHub.

8.2.7 (2024-May-09)

Core

  • Add support for ignore-running in apps.<app-name>.refresh-mode in a snapcraft.yaml file (#4747).

Remote build

  • Fix a regression where remote build would fail to parse some architectures definitions (#4780).

For a complete list of commits, check out the 8.2.7 release on GitHub.

8.2.6 (2024-May-09)

Core

  • Fix a regression where a directory could not be packaged as a snap (#4769).

For a complete list of commits, check out the 8.2.6 release on GitHub.

8.2.5 (2024-May-07)

Store

  • Fix the same cryptography regression addressed in 8.2.4 but for store-related operations.

For a complete list of commits, check out the 8.2.5 release on GitHub.

8.2.4 (2024-May-05)

  • Fix a regression where Snapcraft would fail to run on some architectures due to a cryptography dependency that attempted to load legacy algorithms (LP#2064639).

For a complete list of commits, check out the 8.2.4 release on GitHub.

8.2.3 (2024-May-01)

Core

Bases

core24
  • Fix a bug where project variables were evaluated before extensions were applied (#4771).

  • Fix a bug where build-for project variables were evaluated based on the host architecture (#4770).

For a complete list of commits, check out the 8.2.3 release on GitHub.

8.2.2 (2024-Apr-30)

Core

Bases

core24
  • Fix a bug where advanced grammar could not be combined with other data (#4764, LP#2061603).

For a complete list of commits, check out the 8.2.2 release on GitHub.

8.2.1 (2024-Apr-25)

Core

Bases

core24
  • Fix a bug where project variables were not evaluated inside a snapcraft.yaml file and were not available as environment variables in the build environment.

  • Fix a bug where advanced grammar was not evaluated in root-level part keywords build-packages and build-snaps.

  • Fix a bug where local key assets in snap/keys/ were not used when installing package repositories.

Remote build

  • Fix a bug where core24 snaps could not use package repositories because gpg and dirmngr were not installed in the remote build environment.

For a complete list of commits, check out the 8.2.1 release on GitHub.

8.2.0 (2024-Apr-17)

Core

Bases

core24
  • Drop requirement for build-base: devel for core24 snaps.

core22
  • Extend advanced grammar for all part keywords except plugin-specific keywords.

Remote build

  • Migrate to the upstream remote builder in Craft Application.

  • Allow only one remote build is allowed per project.

  • Remove support for build-id with snapcraft remote-build --recover.

  • Remove support for deprecated --build-on argument in favor of --build-for.

  • Move Launchpad credentials file from $XDG_DATA_DIR/snapcraft/provider/launchpad/credentials to $XDG_DATA_DIR/snapcraft/launchpad-credentials.

  • Fail if snapcraft is in a shallowly-cloned git repository instead of falling back to the legacy remote builder.

Note

Reminder: Legacy remote-build behavior can be used for bases core22 and older with the environment variable SNAPCRAFT_REMOTE_BUILD_STRATEGY="force-fallback". See more information in the remote build documentation.

For a complete list of commits, check out the 8.2.0 release on GitHub.

8.1.0 (2024-Apr-10)

Core

Bases

core24

For more information on deprecations and changes, see the core24 migration guide.

Plugins

Matter SDK
  • Add new Matter SDK plugin for core22.

For more information, see the Matter website and the Matter on Ubuntu docs.

Maven
  • Add support for the Maven plugin for core22 snaps.

For more information, see Maven plugin.

QMake
  • Add support for the QMake plugin for core22 snaps.

For more information, see https://snapcraft.io/docs/qmake-plugin.

Colcon
  • Set build type to RELEASE if it is not defined by colcon_cmake_args: ["-DCMAKE_BUILD_TYPE=<build type>"]).

Extensions

KDE Neon 6
  • Add new kde-neon-6 extension for core22 snaps that use Qt6 or the KDE Neon 6 framework.

Components

  • Add support for creating components.

  • Components are parts of a snap that can be built and uploaded in conjunction with a snap and later optionally installed beside it.

For more information, see the reference, explanation, and how-to documentation pages.

Remote build

  • Add support for user-defined Launchpad projects projects, including private projects.

  • This is configured via snapcraft remote-build --project <project-name>.

For a complete list of commits, check out the 8.1.0 release on GitHub.

8.0.5 (2024-Mar-18)

Core

  • Fix a bug where LXD versions with an “LTS” suffix could not be parsed.

For a complete list of commits, check out the 8.0.5 release on GitHub.

8.0.4 (2024-Mar-04)

Core

Bases

  • Fix a bug where devel bases may not be fully validated.

  • Bump the LXD compatibility tag to v7.

core24
  • Use buildd daily images instead of ubuntu images for core24 bases and build-base: devel.

  • Fix a bug where creating core24 base images would fail because apt would install packages interactively.

For a complete list of commits, check out the 8.0.4 release on GitHub.

8.0.3 (2024-Feb-09)

Core

  • Add a warning that when a part uses override-prime it cannot use enable-patchelf (#4547).

Bases

  • Bump the LXD compatibility tag to v6.

  • Stop updating apt source config files when build-base: devel is defined.

core24
  • Use the core24 alias instead of the devel alias when retrieving LXD images.

Plugins

Ant
  • Use the proxy environment variables http_proxy and https_proxy.

Remote build

  • Fix a bug where --build-for and --build-on were not mutually exclusive options.

  • Improve error messages and provide links to documentation when remote builds fail (#4517).

  • Fix a regression where comma-separated architectures in --build-on and --build-for were not accepted (#4516).

For a complete list of commits, check out the 8.0.3 release on GitHub.

8.0.2 (2024-Jan-23)

Core

  • Fix a bug where Snapcraft fails to run on platforms where SSL_CERT_DIR is not set (#4510, #4520).

  • Fix a decoding bug when logging malformed output from other processes, typically during the build step (#4515).

For a complete list of commits, check out the 8.0.2 release on GitHub.

8.0.1 (2024-Jan-03)

Remote build

  • Fix a bug where Snapcraft would not fail if the Launchpad build itself failed for new and legacy remote builders (#4142).

  • Fix a bug where large repos could not be pushed with the new remote builder (#4478).

  • Fallback to the legacy remote builder if the project is shallowly cloned (#4479).

For a complete list of commits, check out the 8.0.1 release on GitHub.

8.0.0 (2023-Dec-04)

Core

Bases

core22

Add new environment variables for build-on and build-for architectures:

  • CRAFT_ARCH_TRIPLET_BUILD_FOR, supersedes CRAFT_ARCH_TRIPLET

  • CRAFT_ARCH_TRIPLET_BUILD_ON

  • CRAFT_ARCH_BUILD_FOR, supersedes CRAFT_TARGET_ARCH

  • CRAFT_ARCH_BUILD_ON

For more information, see Architectures.

core20

Add new environment variables for build-on and build-for architectures:

  • SNAPCRAFT_ARCH_TRIPLET_BUILD_FOR, supersedes SNAPCRAFT_ARCH_TRIPLET

  • SNAPCRAFT_ARCH_TRIPLET_BUILD_ON

  • SNAPCRAFT_ARCH_BUILD_FOR, supersedes SNAPCRAFT_TARGET_ARCH

  • SNAPCRAFT_ARCH_BUILD_ON

For more information, see Architectures.

core18
  • Deprecate building snaps using the core18 base.

For more information on how to continue building snaps with the core18 base, see this page.

Stage packages

  • Support chiseled stage-packages. This is useful for reducing the size of the snap when creating base snaps or using a bare base.

For more information about chisel, see https://github.com/canonical/chisel

Plugins

Rust
  • Use default rust toolchain with rustup.

  • Add option rust-ignore-toolchain-file.

  • Add option rust-inherit-ldflags.

  • Add list rust-cargo-parameters.

For more information about the new options, see Rust plugin.

Kernel
  • Generate kernel configs for Ubuntu 22.04 (Jammy).

Python
  • Add support for Python projects driven by a pyproject.toml.

For more information, see the PEP 518 spec.

ROS 2
  • Add support for content sharing for core20 & core22 bases (ROS Noetic, Foxy, Humble) and the colcon, catkin, and catkin-tools plugins

For more information on ROS architecture, see the ROS architectures with snaps.

More information on content-sharing, see:

Command line

  • Stream messages in the default brief mode

  • Improve presentation of build step prefixes

Linter

  • Suggest packages to add to stage-packages to satisfy a potential missing library.

Remote build

Introduce a new remote-builder for core24 snaps:

  • Does not modify the project’s snapcraft.yaml

  • Does not fetch and tarball remote sources before sending the project to Launchpad

  • Require projects to be in the top-level of a fully-cloned (non-shallow) git repository

  • Allow switching between the new and legacy remote builders with the environment variable SNAPCRAFT_REMOTE_BUILD_STRATEGY.

For more information on the new remote-builder, how to switch between the new and legacy remote builders, see Remote build.

Store

  • Add a fallback to a file-based keyring when the system keyring cannot be initialized, is not fully configured, or is otherwise not available.

For more information on the file-based keyring, see https://snapcraft.io/docs/snapcraft-authentication.

For a complete list of commits, check out the 8.0.0 release on GitHub.