Skip to content

Releases: canonical/snapcraft

8.0.0

04 Dec 12:56
8.0.0
Compare
Choose a tag to compare

What's changed

core18 base removal

This is the largest change and the main reason for the major version bump. Builds requiring core18 should stick to Snapcraft 7.x. You should be able to parallel install Snapcraft by following https://snapcraft.io/docs/parallel-installs to have both instances of Snapcraft working.

Remote building for this base will still work, but issue a warning.

Command Line

The command line has been improved so that messages are streamed in the default brief mode, with additional tuning of the wording, replacing the message Executing , to Pulling, Building, Staging and Priming, making the message much more compact and to the point.

Store

Store operations no longer require a working keyring, Snapcraft will correctly fallback to a file based keyring in these scenarios when working on headless systems or when the system's keyring is not fully configured. The documentation on https://snapcraft.io/docs/snapcraft-authentication has been updated to reflect this, with additional edits to streamline for the new features and hiding away the legacy ones.

New environment for architecture

New environment is available to refer to the build-on and build-for architectures, for core22:

  • 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 core20,

  • 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

More on this can be read at https://canonical-snapcraft.readthedocs-hosted.com/en/latest/reference/architectures.html#project-variables

Remote Build

Note that this is for core22 and earlier bases. Core24 bases and onward have a different design.

Remote build has an improved behavior. In the past any local source would have been tarballed, generating a new snapcraft.yaml before pushing to launchpad to ensure that all sources could be read. This presented many problems, one of which was that the remote build process was not building as it would have when running locally.

All this has been fixed with the new git first workflow in remote-build, there's now an environment variable, SNAPCRAFT_REMOTE_BUILD_STRATEGY that can be set to:

  • disable-fallback to force the new feature
  • force-fallback to force the legacy feature of tarballing the sources

This is the basic workflow:

image

The new feature requires snapcraft projects to be in the top-level of a git repository. Shallowly cloned repositories are not supported (git clone --depth=) because they cannot be pushed to Launchpad.

Linter

The linter is now capable of showing what package could be provided through stage-packages to satisfy a potential missing library.

Chiseling

Chiseled packages can now be referenced through stage-packages, the chiseled slices can be referred to by their name. The current behavior is that when you would opt-in for chiseled packages, you can not mix that with regular debian packages.

This is a great option for creating bases or when using bare as a base.

More about Chisel can be found at https://github.com/canonical/chisel

Plugins and Extensions

Rust plugin

The rust plugin has been significantly improved for core20 and core22 bases. The requirement to speficy the rust toolchain is no longer there and the plugin will fetch the toolchain using rustup as previous versions of this plugin once did.

More information about the new options for rust can be found at https://canonical-craft-parts.readthedocs-hosted.com/en/latest/reference/plugins/rust_plugin.html

Kernel plugin

The kernel plugin can now properly generate Ubuntu kernel configs.

Python plugin

The plugin finally supports PEP 518, essentially meaning that projects can be driven through a pyproject.toml.

ROS content sharing

Support for content sharing for ROS powered by the extensions that make building a ROS content sharing snap seamless.

To that effect several snaps meant to distribute ROS through content-sharing were created and are available on the store (hidden, e.g. ros-foxy-ros-base & ros-foxy-ros-base-dev)

The support is introduced for

  • the core20 & core22 bases (ROS Noetic, Foxy, Humble)
  • the colcon, catkin, and catkin-tools plugins

To note, this requires the dev snap providing the build-time material to execute a script listing all ROS packages it contains when it's built.

The general architecture is neatly described at https://ubuntu.com/robotics/docs/ros-architectures-with-snaps
And more on each extension behavior can be found at:

Changelog

Read more

7.5.4

30 Nov 14:10
7.5.4
9b5c2f4
Compare
Choose a tag to compare

What's Changed

  • fix(project): improve error message for unsupported architectures by @mr-cal in #4392
  • ci: pin pyright by @mr-cal in #4420
  • cli: catch craft-provider errors by @mr-cal in #4419
  • fix(remote-build): parse --launchpad-timeout argument by @mr-cal in #4427
  • build(deps): bump craft-providers to 1.19.1 by @syu-w in #4421
  • chore(log): hide details error in the log when pack failed by @syu-w in #4424
  • build(deps): bump craft-providers to 1.19.2 by @mr-cal in #4438
  • build(deps): bump craft-store to 2.5.0 by @sergiusens in #4455

Full Changelog: 7.5.3...7.5.4

7.5.3

08 Sep 11:51
7.5.3
Compare
Choose a tag to compare

What's Changed

Full Changelog: 7.5.2...7.5.3

7.5.2

08 Sep 11:50
7.5.2
Compare
Choose a tag to compare

What's Changed

Full Changelog: 7.5.1...7.5.2

7.5.1

08 Sep 11:49
7.5.1
Compare
Choose a tag to compare

What's Changed

Full Changelog: 7.5.0...7.5.1

7.5.0

16 Jul 19:58
7.5.0
Compare
Choose a tag to compare

What's Changed

  • type: workaround for pyright bug by @mr-cal in #4243
  • requirements: update craft-providers to 1.10.1 by @mr-cal in #4244
  • store: add missing case for list-keys by @lengau in #4245
  • spread: disable godeps tests by @sergiusens in #4249
  • package-repositories: update craft-archives to support multi-keys. by @tigarmo in #4253
  • extension: remove extra kde-neon build envvars by @mr-cal in #4242
  • spread: add a test for the "python + classic" tutorial by @tigarmo in #4269
  • meta: write out metadata links by @sergiusens in #4275
  • requirements: bump craft-archives by @tigarmo in #4277
  • commands: fix missing built_at store upload option by @suligap in #4261
  • repos: revert package-repositories changes for core18 and core20 by @tigarmo in #4279

New Contributors

Full Changelog: 7.4.3...7.5.0

7.4.3

12 Jun 12:17
7.4.3
Compare
Choose a tag to compare

What's Changed

Full Changelog: 7.4.2...7.4.3

7.4.2

12 Jun 12:16
7.4.2
389462c
Compare
Choose a tag to compare

What's Changed

  • fix(ROS): rosdep init executed as root need to forward proxy env var by @Guillaumebeuzeboc in #4176
  • ros: remove linter warnings from spread tests by @mr-cal in #4203
  • desktop extensions: set libthai dictionary path by @lissyx in #4199
  • kernel plugin: change location where snapd deb is unpacked by @kubiko in #4200
  • kernel plugin: add debhelper build dependency by @kubiko in #4185

New Contributors

Full Changelog: 7.4.1...7.4.2

7.4.1

06 Jun 15:12
7.4.1
Compare
Choose a tag to compare

What's Changed

Full Changelog: 7.4.0...7.4.1

7.4.0

19 May 11:47
7.4.0
77d3454
Compare
Choose a tag to compare

Noticeable improvements

Snap file linting

Kernel plugins for core20 and core22

  • plugins: kernel plugin: fix core20 base builds by @kubiko in #4112
  • plugins: kernel: remove use of deprecated config.common.ports config by @kubiko in #4116
  • kernel plugin: call deb rules clean by @kubiko in #4117
  • plugins: merge kernel plugin by @cmatsuoka in #4111

Python plugin robustness for core22

build-base devel and core24

  • meta: allow support for build-base: devel by @mr-cal in #4068

Apt Pinning

  • update craft-archives and support apt pinning by @tigarmo in #4079

Snapcraft Parallel installations

  • providers: inject current snapcraft snap into instances by @mr-cal in #4084
  • providers: allow parallel installations when not running as a snap by @mr-cal in #4088
  • snapcraft_legacy: inject current snapcraft snap into instances by @mr-cal in #4090

build-for architecture all

  • meta: use build-for in snap.yaml architecture by @mr-cal in #4150

Fixes and Maintenance

  • Fix typo from 'unkown' to 'unknown' by @AristoChen in #4045
  • doc: fix docstring for accuracy by @dboddie in #4043
  • Legacy _deb: Add option to specify packages to unmark by @artivis in #4026
  • core22 colcon plugin: re-source environment after installation by @Guillaumebeuzeboc in #3994
  • grammar fixes: a number of grammar-type cleanups, no functional mods by @rpjday in #4071
  • snapcraft commands: change "snap on snap store" to "snap in snap store" by @rpjday in #4070
  • commands: various semantic cleanups and corrections, no functional ch… by @rpjday in #4074
  • accounts.py: tweak for grammatical effect a couple comments by @rpjday in #4072
  • Update kde content snap version and update regex to reflect change. by @ScarlettGatelyMoore in #4069
  • colgon_plugin.py: rename colcon.py to colcon_plugin.py for consistency by @rpjday in #4082
  • requirements: update craft-parts to 1.19.0 by @cmatsuoka in #4083
  • requirements: update craft-providers to 1.10.0 by @mr-cal in #4086
  • _options.py: use short form variables for listing providers by @rpjday in #4099
  • specifications/core20-plugins.org: typo fix, "PARALELL" -> "PARALLEL" by @rpjday in #4098
  • projects: warn on "global" assign of plugs and slots by @tigarmo in #4097
  • legacy: fix deprecation warning about multipass --mem by @abitrolly in #4103
  • meta: disallow Snap channel in default_provider by @syu-w in #4096
  • extensions: parse snapcraft.yaml before expanding extensions by @mr-cal in #4110
  • docker: remove outdated Dockerfile by @abitrolly in #4109
  • docs: import Sphinx scaffolding for documentation work by @dboddie in #4055
  • requirements: update craft-parts to 1.19.3 by @cmatsuoka in #4120
  • init: use core22 base for snapcraft init by @mr-cal in #4118
  • neon extension: content snap update by @ScarlettGatelyMoore in #4121
  • docs: set sphinx autobuild-docs to watch the correct directories by @lengau in #4128
  • ros plugin: add ros command wrappers by @artivis in #4094
  • repo: Migrate to craft-archives by @lengau in #4037

Quality

New Contributors

Full Changelog: 7.3.2...7.4.0