Releases: canonical/snapcraft
8.0.4
8.0.3
What's Changed
- style(remote): reword git error messages by @mr-cal in #4536
- fix: warning unsafe override-prime by @syu-w in #4553
- chore(deps): bump craft-parts to 1.26.2 by @cmatsuoka in #4572
- build(deps): bump craft-providers to 1.22.0 by @mr-cal in #4551
- fix(lifecycle): return correct base when using devel for build-base by @syu-w in #4523
- fix(remote): parse comma-separated architectures by @mr-cal in #4543
- fix: warn for override-prime and patchelf by @syu-w in #4553
Full Changelog: 8.0.2...8.0.3
8.0.2
What's Changed
- build(deps): update dependencies by @lengau in #4504
- chore(deps): bump version of Chisel by @tigarmo in #4522
- fix(remote-build): set a known path to cacerts by @sergiusens in #4526
- Spread update by @sergiusens in #4529
- build(deps): bump craft-cli to 2.5.1 by @tigarmo in #4528
Full Changelog: 8.0.1...8.0.2
8.0.1
What's Changed
Fixes
- fix(remote): return error when remote build failed by @syu-w in #4480
- fix(remote): use git for push to remote system by @syu-w in #4482
- fix(remote): fallback to legacy snapcraft if under shallow git clone by @syu-w in #4498
Chore
- chore(deps): update internal packages by @renovate in #4474
- chore(deps): update bugfixes by @renovate in #4473
- style(lint): fix pyright errors by @syu-w in #4485
- chore(deps): update dependency importlib-metadata to v7 by @renovate in #4475
- refactor: replace
pkg_resources
withpackaging
by @branchvincent in #4490 - ci(appveyor): fix pyinstaller by @syu-w in #4494
New Contributors
Full Changelog: 8.0.0...8.0.1
8.0.0
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
, supersedesCRAFT_ARCH_TRIPLET
CRAFT_ARCH_TRIPLET_BUILD_ON
CRAFT_ARCH_BUILD_FOR
, supersedesCRAFT_TARGET_ARCH
CRAFT_ARCH_BUILD_ON
For core20
,
SNAPCRAFT_ARCH_TRIPLET_BUILD_FOR
, supersedesSNAPCRAFT_ARCH_TRIPLET
SNAPCRAFT_ARCH_TRIPLET_BUILD_ON
SNAPCRAFT_ARCH_BUILD_FOR
, supersedesSNAPCRAFT_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 featureforce-fallback
to force the legacy feature of tarballing the sources
This is the basic workflow:
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
, andcatkin-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:
- https://snapcraft.io/docs/ros2-humble-content-extension
- https://snapcraft.io/docs/ros2-foxy-content-extension
- https://snapcraft.io/docs/ros-noetic-content-extension
Changelog
- tests: remove arch_triplet from unit test by @mr-cal in #4160
- requirements: update craft-archives by @tigarmo in #4174
- core18: removal by @sergiusens in #4177
- Hotfix/7.4 merge by @sergiusens in #4191
- requirements: bump craft-providers by @mr-cal in #4192
- elf_utils: add missing triplet for i386 by @valentindavid in #4188
- ros: remove generator warnings from linter spread tests by @cmatsuoka in #4202
- For consistency, rename new kernel plugin file to "kernel_plugin.py" by @rpjday in #4164
- Remove trailing slashes from tools/staging_env.sh by @tartley in #4201
- requirements: update craft-parts to 1.21.0 by @cmatsuoka in #4183
- providers: remove deprecated
build_base
parameter by @mr-cal in #4204 - build(deps): bump tornado from 6.2 to 6.3.2 in /docs/.sphinx by @dependabot in #4179
- lint: fix for pyright 1.1.312 by @mr-cal in #4205
- build(deps): bump requests from 2.30.0 to 2.31.0 by @dependabot in #4171
- build(deps): bump requests from 2.28.1 to 2.31.0 in /docs/.sphinx by @dependabot in #4169
- requirements: update craft-parts to 1.21.1 by @cmatsuoka in #4208
- Revert "ros: remove linter warnings from spread tests (#4202)" by @cmatsuoka in #4212
- fix(catkin): rosbash is an unofficial ros package from Debian by @Guillaumebeuzeboc in #4206
- build(deps): bump cryptography from 40.0.2 to 41.0.0 by @dependabot in #4195
- kde-neon-extension: remove extra build environment variables that are… by @ScarlettGatelyMoore in #4193
- dependencies: update craft-cli to 2.0.0 by @tigarmo in #4215
- ros: make linter tests more flexible by @mr-cal in #4223
- meta: omit LD_LIBRARY_PATH and PATH in classic confinement by @mr-cal in #4216
- kernel_plugin.py: doc cleanup by @rpjday in #4218
- ci: do not check coverage of tests dir by @mr-cal in #4222
- type: workaround for pyright bug by @lengau in #4233
- spread: improve resilience of lxd-type-base test by @lengau in #4239
- plugins: add riscv into kernel plugin for build dtbs by @AristoChen in #4252
- Hotfix/7.4 merge by @sergiusens in #4213
- snap: migrate to core22 by @sergiusens in #4186
- Added comments to indicate where the desktop-launch script source is by @kenvandine in #4250
- docs: enable RTD builds by @dboddie in #4258
- remote-build: Use personal access tokens by @cjwatson in #4270
- docs: remove obsolete submodule by @dboddie in #4272
- docs: add command reference by @dboddie in #4267
- extensions: plugin aware part_snippet values by @sergiusens in #4271
- bases: improve errors for ESM bases by @sergiusens in #4274
- cli: catch craft-provider errors by @mr-cal in #4295
- build(deps): bump certifi from 2023.5.7 to 2023.7.22 by @dependabot in #4292
- build(deps): bump cryptography from 41.0.0 to 41.0.3 by @dependabot in #4301
- Merge 7.5 hotfixes by @sergiusens in #4304
- packaging: allow installing without g...
7.5.4
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
What's Changed
- requirements: update craft-parts to 1.19.7 by @cmatsuoka in #4305
- fix(legacy): export sources method to local plugins by @cmatsuoka in #4337
- fix: reprime for try by @sergiusens in #4347
- fix: support abstract socket listen-streams by @sergiusens in #4354
Full Changelog: 7.5.2...7.5.3
7.5.2
What's Changed
- fix build for armhf, ppc64el and riscv64 by @sergiusens in #4309
Full Changelog: 7.5.1...7.5.2
7.5.1
7.5.0
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