Releases: canonical/snapcraft
4.0.6
Special thanks to the contributors that made this release happen: @cjp256 and @sergiusens
Bug Fixes
- extensions: add gcc to GNOME 3.28 extension part @sergiusens (#3178)
- repo: decouple fetch and unpack stage-packages @sergiusens (#3170)
- repo: consider virtual pkgs for cache invalidation @sergiusens (#3177)
- cli: restore --target-arch with warning for LXD and Multipass @cjp256 (#3175)
- package-repositories: allow empty component list @cjp256 (#3169)
Maintenance
- unit tests: move to pytest @sergiusens (#3167)
4.0.5
Special thanks to the contributors that made this release happen: @cjp256 and @sergiusens
Maintenance
- cli: remove enable-ci command @sergiusens (#3164)
- tests: remove scenario usage from lifecycle order @sergiusens (#3162)
- cli: remove the hidden inspect command @sergiusens (#3163)
Bug Fixes
4.0.4
Special thanks to the contributors that made this release happen: @cjp256, @galgalesh and @sergiusens
Full list of changes
Maintenance
- cli: migrate upload and release to new channel-map @sergiusens (#3145)
Bug Fixes
- npm v2 plugin: always include $SNAPCRAFT_PART_INSTALL/bin in $PATH @cjp256 (#3161)
- project loader: fix v1 plugin repository installation on host @cjp256 (#3160)
- cli: improve sudo detection with euid check for warnings/errors @cjp256 (#3159)
- cmake v2 plugin: take source-subdir into account @sergiusens (#3154)
- cli: disable --target-arch support on core20 @cjp256 (#3151)
- cli: error/warn when using sudo @cjp256 (#3150)
- review-tools: add --allow-classic flag for local review @cjp256 (#3153)
- cli: disable --target-arch for multipass/lxd @cjp256 (#3152)
- elf: search dynamic tags within sections, not segment @cjp256 (#3149)
- extensions: pre/append_dir: support rpath tokens by not using eval @galgalesh (#3128)
- build providers: snap sw to channels if injecting @sergiusens (#3146)
Tooling
4.0.3
Special thanks to the contributors that made this release happen: @NickZ, @cjp256, @jhenstridge and @sergiusens
Maintenance
- cli: migrate close to use the new channel map @sergiusens (#3143)
- project: add core20 linker version @sergiusens (#3138)
Bug Fixes
- pluginhandler: run plugin commands in isolation @sergiusens (#3139)
- build providers: use LXD-provided DNS by default @cjp256 (#3141)
- lifecycle: use snap from path to --check-skeleton @sergiusens (#3137)
- build providers: set HOME environment variable using posix format @cjp256 (#3135)
- cli: fix clean on Windows @NickZ (#2949)
- cli: fix push on Windows @NickZ (#2922)
- cli: nicer message for status with no releases @sergiusens (#3134)
- go v1 plugin: go.mod support for 1.11 and 1.12 @sergiusens (#3133)
- build providers: don't show an error if there are no auto-refresh changes @jhenstridge (#3130)
- storeapi: reset account_id on store login @sergiusens (#3142)
Tooling
4.0.2
Special thanks to the contributors that made this release happen: @cjp256 and @sergiusens
Full list of changes
Bug Fixes
- pluginhandler: allow cleaning the build step @sergiusens (#3126)
- cli: cleanup error handling @sergiusens (#3125)
- storeapi: update api and error messages from push to upload @sergiusens (#3124)
- cmake v2 plugin: configure with $SNAPCRAFT_PART_SRC @sergiusens (#3123)
- pluginhandler: make the build environment available to all steps @sergiusens (#3122)
- spread tests: improvements for python-hello-with-stage-package-dep @cjp256 (#3121)
- elf: fix string format for debug log @cjp256 (#3119)
Tooling
- spread: only run in LXD with the google/multipass provider for repo @sergiusens (#3120)
Iterating and fixing
Special thanks to the contributors that made this release happen: @cjp256, @nessita and @sergiusens
Full list of changes
- npm v2 plugin: update doc string @sergiusens (#3114)
- ci: setup release-drafter @sergiusens (#3117)
- cli: fix following hints in channel status @sergiusens (#3116)
- build providers: ignore missing LXD instance when cleaning project @cjp256 (#3115)
- spread: remove dead code for lxd setup and add debug prints @cjp256 (#3112)
- colcon: use packages.ros.org/ros2 repository @cjp256 (#3113)
- package repositories: avoid setting up on host when not the target @sergiusens (#3101)
- elf: fix parsing of notes after patchelf mangling @cjp256 (#3111)
- build provider: clean incompatible build-environments @cjp256 (#3105)
- python v2 plugin: set path to the interpreter @sergiusens (#3103)
- tools: install wheel in snapcraft-dev @cjp256 (#3108)
- packaging: use git-based versioning for python package @cjp256 (#3104)
- build providers: prevent snap refreshing in build environment @cjp256 (#3102)
- sources: enable git, local, and tar handlers for all platforms @cjp256 (#3106)
- package-repositories: draft spec and cleanup @cjp256 (#3074)
- repo: always refresh cache when build packages are required @cjp256 (#3099)
- Removed
keyfromprogressivedict following changes in the server API. @nessita (#3100) - build providers: bootstrap with dirmngr @sergiusens (#3098)
- plugins: break out rosdep resolve parsing for external use @cjp256 (#3095)
- ci: move staging store tests to spread @sergiusens (#3090)
4.0 TOW core20 support
The team behind Snapcraft is pleased to announce the release of
Snapcraft 4.0. Among the many updates, fixes and additions it
includes, the following are what we consider its highlights:
- the
core20base is now supported --use-lxdcan now be used with all snap supported architectures- improved plugins for
core20 - support for adding external repositories
To try this release, switch to the candidate channel for
Snapcraft.
Commands
As when using extensions, command entries when using core20 will now strictly follow the snapd rules for allowed commands. Wrappers are still generated when necessary when using core or core18 as base.
Plugins V2
New plugin infrastructure has been developed to support core20.
This new infrastructure greatly simplifies plugins and delivers another
great advantage: "quick rebuilds".
Thanks to core20 plugins being much simpler, so to is the environment
setup process, removing most of the perceived magic during Snapcraft
builds for parts.
Plugins are now applicable only to Snapcraft's build step. The pull
step, for instance, has become completely owned by Snapcraft and
dedicated to managing the source related entries for parts.
The following plugins have been updated to work with core20:
While the list of plugins is not as broad as for core or core18,
they offer a strong foundation for the majority of snaps, and the list
will grow after this initial release.
The command line related to plugins has gained some additional
parameters to specifically reach base relevant information:
snapcraft help <plugin-name> [--base <base>]snapcraft list-plugins [--base <base>]
These commands will default to using the base defined in the current
Snapcraft project or to the latest supported base (i.e., core20).
Also, plugins now have their properties scoped (i.e.; prefixed with the
plugin-name).
autotools
The autotools plugin for core20 works mostly in the same way, with
the following exceptions:
- the plugin checks for the existence of
configurein the source. If
not found,autoconf --installis executed instead configflagshas been renamed toautotools-configure-parametersinstall-viahas been removed
cmake
This plugin works mostly the same, except for the fact that
configflags has been renamed to cmake-parameters.
dump
This behaves in the same way for core20 as for core18 or core.
go
The plugin has been revamped for core20. It now only supports projects
using go.mod, which means it only supports version of go that
support this.
The following are the only configuration parameters available to the plugin
when using core20:
go-channelgo-buildtags
These options are no longer available when using core20:
go-importpathgo-packages
make
The following parameters will be accepted by the plugin when setting
core20 as the base:
make-parameters
The following are no longer accepted but should instead be easily managed
with override-build:
makefileartifactsmake-install-var
meson
This plugin works the same in core20 although it has been enhanced
for easier rebuilds.
nil
This plugin behaves in the same way for core20 as for core18 or core.
npm
This is a new plugin for core20. It is intended to replace
the nodejs plugin, which is only available for core and core18.
The only parameter the plugin now accepts is npm-node-version.
python
The python plugin has been simplified the most for core20 and yet
provides the most new functionality. It essentially behaves like a
virtual environment, preferring the python interpreter shipped in
the core20 base.
By behaving this way, the plugin operates more like how a Python
developer would expect, allowing for easier snap customization
whilst still using the plugin.
The plugin can use an interpreter if it is added through a
comprehensive list of stage-packages (an extension shall be
evaluated in the future to provide alternative complete python
stacks).
When used with core20, the plugin accepts the following parameters,
with the same semantics as the V1 plugin used in core and core18:
python-packagesrequirementspython-packages
rust
This is another plugin that has been simplified to reduce the number
of parameters when targeting core20 as a base:
rust-featuressame behaviour as forcoreandcore18rust-path, defaulting to the current working directory, but can be
set to the relative path of the crate to build when using workspaces
Package Management
This feature adds high-level package-management to snapcraft.yaml, enabling
users to configure additional repositories & components.
Specifically, the scope of package-management is for anything affecting the
behavior and availability of:
- build-packages
- stage-packages
- build-snaps
- stage-snaps
- python-packages
The scope of this spec will focus on the configuration of apt repositories,
affecting the availability of build-packages and stage-packages.
To use, simply configure package-repositories in snapcraft.yaml.
Note: snapcraft will log an 'experimental feature' warning until the
schema is considered stable.
Here are some example configurations:
name: apt-example
base: core18
<snip>
package-repositories:
- type: apt
ppa: snappy-dev/snapcraft-daily
- type: apt
deb-types: [deb, deb-src]
components: [main]
suites: [xenial]
key-id: 78E1918602959B9C59103100F1831DDAFC42E99D
url: http://ppa.launchpad.net/snappy-dev/snapcraft-daily/ubuntu
- type: apt
deb-types: [deb, deb-src]
components: [main, multiverse, restricted, universe]
suites: [xenial, xenial-updates]
key-id: test-key
url: http://archive.ubuntu.com/ubuntu
Build Environments
The --use-lxd flag has been released from its experimental phase and
now supports the same build roots as build.snapcraft.io (or Launchpad),
bringing the two environments closer together. With these new images,
there is now support for all the snap enabled architectures too.
Progressive Releases
Initial experimental support for progressive releases has landed in
Snapcraft. To view any existing progressive release use the status
command, as an example:
Track Arch Channel Version Revision Progress
latest all stable - - -
candidate - - -
beta 0.6 8 → 20%
10 13 → 80%
edge ↑ ↑ -
To perform a progressive release, use the release command with the
with the --progressive option. After releasing, the status of the
release will be shown.
What follows is the full change set since the last release
Andrey M (1):
- dotnet plugin: add dotnet runtime version and support core18 (#3005)
Chris Patterson (45):
- catkin plugins: remove bash workaround for catkin cmake args (#2972)
- repo: remove dead code from deb implementation (#2993)
- repo: move filtered package list from manifest.txt into a python list (#2994)
- yaml_utils: don't sort keys when dumping (#2991)
- repo: always use host source lists and remove those found in plugins (#3003)
- repo: type annotations and mypy fixes for base (#3001)
- repo: use functools.lru_cache for dpkg -L queries (#3002)
- requirements: uprev python-apt to 1.6.0 (bionic package) (#2999)
- go plugin: support projects with multiple binaries when using go.mod (#3007)
- repo: use python-apt's fetch_binary implementation (#3009)
- repo: always use host release and arch for Ubuntu (#3006)
- spread tests: set appropriate default base in snapcraft.yamls (#2987)
- repo: introduce install_source() and install_gpg_key() to Ubuntu (#3011)
- plugins: install required apt sources and keys to system (#3012)
- cli: remove experimental config.yaml support (#3016)
- remote build: remove artifact sanity check (#3021)
- tests: remove usage of FakeApt fixtures in lifecycle (#3024)
- tests: move FakeApt fixtures into deb tests (#3025)
- repo: drop _AptCache and add migrate to install_stage_packages() (#3030)
- ci: use stable channel for building snapcraft snap in Travis (#3036)
- repo: fix resolution of virtual build packages (#3035)
- ci: add and ship a self-hosting build of snapcraft in Travis (#3038)
- repo: minor debug log tweaks (#3042)
- build providers: setup initial apt source configuration (#3039)
- build providers: use ubuntu-ports mirrors for non-x86 platforms (#3044)
- package repositories: initial schema and meta read/write support (#3043)
- repo: fix returned strings for install_stage_packages() (#3047)
- build providers: rename default sources (#3049)
- project: introduce 'keys' for project assets (#3051)
- meta: split up package repository sanity checks (#3050)
- repo: add identifiers for gpg keys and source...
New GNOME Extension
Hello Snapcrafters! This point release is brought to you by a new extension, one that targets GNOME 3.34.
The team hopes you enjoy it.
Aside from the extension, many small fixes made its way in, which are detailed in the text that follows.
Chris Patterson (4):
- build providers: match build provider flag keys to envvar (#2970)
- cli: formalize developer debug as hidden build option (#2976)
- project_loader: use -isystem instead of -I for system include paths (#2974)
- cli: merge build options into provider options (#2977)
Heather Ellsworth (1):
- extensions: new extension for GNOME 3.34 (#2956)
Kyle Fazzari (1):
- colcon plugin: rewrite poco absolute library paths (#2981)
Sergio Schvezov (7):
- specifications: add core20 plugin specification (#2973)
- specifications: experimental features guidelines (#2975)
- tests: add microk8s spread test (#2978)
- tests: add multipass adhoc spread backend (#2979)
- vcs: add direnv files to .gitignore (#2980)
- specifications: experimental snap compression (#2982)
- tests: add LXD spread test (#2983)
Point release
Chris Patterson (5):
- requirements: uprev lxml to 4.5.0 (#2927)
- pluginhandler: do not search installdir or stagedir for dependencies (#2942)
- requirements: uprev click to 7.1.1 (#2967)
- project: add fallbacks for os.sched_getaffinity (#2963)
- git: always fetch specified source-commit before using (#2968)
Kyle Fazzari (1):
- rosdep: include EOL ROS distros (#2965)
Pavel Dotsulenko (1):
- go plugin: add support for go mod and main package is not in the root (#2962)
Sergio Schvezov (3):
Point release
Chris Patterson (10):
- remote build: pass through 'source-subdir' property (#2947)
- ci: capture developer debug information for spread (#2943)
- snap-packaging: remove broken host-compatibility check for runner (#2951)
- meta: Snap to_dict() cleanup (#2950)
- elf: resolve paths in
ldd()to purge relative path components (#2932) - spread: introduce appstream parse-info test (#2952)
- meta: remove remaining
__dict__and key list usage in snap (#2953) - repo: respect http proxy for apt update (#2955)
- cli: enable config file for base snapcraft command (#2954)
- go plugin: do not remove install /bin directory before build (#2957)
NickZ (1):
- requirements: uprev PyYAML to 5.3 (#2923)
Olivier Tilloy (1):
- extensions: regenerate the GDK pixbuf loaders cache file if not present (#2948)