Snapcraft

Latest version: v4.8.1

Safety actively analyzes 682404 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 5 of 6

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

- spread: add snap watch cjp256 (3158)

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

- appveyor: disable artifact collection cjp256 (3136)

4.0.1

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 ``key`` from ``progressive`` dict 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

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 `core20` base is now supported
- `--use-lxd` can 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](https://snapcraft.io/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`:

- [autotools](orgf23feb5)
- [cmake](orgd2a3c0e)
- [dump](org3291d8f)
- [go](orgf09a235)
- [make](org0b0a82c)
- [meson](org51feefc)
- [nil](org426a14b)
- [npm](org7c77ebe)
- [python](orgf5d5516)
- [rust](orgd96325f)

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).

<a id="orgf23feb5"></a>

autotools

The autotools plugin for `core20` works mostly in the same way, with
the following exceptions:

- the plugin checks for the existence of `configure` in the source. If
not found, `autoconf --install` is executed instead
- `configflags` has been renamed to `autotools-configure-parameters`
- `install-via` has been removed

<a id="orgd2a3c0e"></a>

cmake

This plugin works mostly the same, except for the fact that
`configflags` has been renamed to `cmake-parameters`.


<a id="org3291d8f"></a>

dump

This behaves in the same way for `core20` as for `core18` or `core`.


<a id="orgf09a235"></a>

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-channel`
- `go-buildtags`

These options are no longer available when using `core20`:

- `go-importpath`
- `go-packages`

<a id="org0b0a82c"></a>

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`:

- `makefile`
- `artifacts`
- `make-install-var`


<a id="org51feefc"></a>

meson

This plugin works the same in `core20` although it has been enhanced
for easier rebuilds.


<a id="org426a14b"></a>

nil

This plugin behaves in the same way for `core20` as for `core18` or `core`.


<a id="org7c77ebe"></a>

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`.


<a id="orgf5d5516"></a>

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-packages`
- `requirements`
- `python-packages`


<a id="orgd96325f"></a>

rust

This is another plugin that has been simplified to reduce the number
of parameters when targeting `core20` as a base:

- `rust-features` same behaviour as for `core` and `core18`
- `rust-path`, defaulting to the current working directory, but can be
set to the relative path of the crate to build when using workspaces


<a id="orgb37bf2a"></a>

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


<a id="org325e09b"></a>

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 sources (3055)
- repo: format $SNAPCRAFT_APT_RELEASE instead of ${release} for suites (3057)
- package repositories: make 'name' optional (3058)
- remote build: package up local sources with source-type 'git' (3056)
- requirements: uprev python-apt (3067)
- [experimental] package-management repository configuration (2911)
- schema: minor tweaks/fixes for package-repositories (3072)
- repo: fix decoding of CalledProcessError output (3071)
- remote-build: fix case where build log url is None (3076)
- repo: fix for multi-arch stage-package scenario (3080)
- repo: fix for multi-arch virtual-packages (3084)
- repo: restore marked-install strategy for apt-cache (3086)
- repo: filter stage-packages using base's manifest (core20)
- tests: add tests for python with stage and python-package dep
- tests: fully stage python3 requirements for python-hello-staged-python

Heather Ellsworth (1):
- extensions: add gcc to the build-packages for the gnome-3-34 (2995)

James Henstridge (1):
- build providers: pass through SNAPCRAFT_{BUILD,IMAGE}_INFO to container or VM (3031)

Michał Sawicz (2):
- build providers: use stdio to get data in/out of Multipass (2784)
- meta: quote final LD_LIBRARY_PATH for command-chain (3053)

Sergio Schvezov (56):
- static: ignore direnv created artifacts (2985)
- tests: only run catkin based snap on 16.04 (2989)
- ci: remove osx test from Travis (2990)
- packaging: use find_namespace_packages in setup.py (2986)
- plugins: move the existing plugin to a new package (2984)
- requirements: uprev mypy to 0.770 (2996)
- specifications: progressive delivery (2997)
- CODE_STYLE: update to reflect latest conventions (2998)
- storeapi: add channel-map endpoint (3004)
- cli: use the channel-map api for status (3008)
- cli: add progressive releases support to the release command (3010)
- plugins: use v1 import path for all plugins (3013)
- meta: migrate get_build_base to Snap (3014)
- pluginhandler: deterministic load depending on plugin and build-base (3017)
- spread tests: default base for local plugin tests (3020)
- static: consolidate tooling setup to setup.cfg (3019)
- pluginhandler: move plugin attributes to PluginHandler (3023)
- static: mypy requires __init__.py (3027)
- static: add codespell excludes for .direnv (3028)
- spread tests: add core20 and cleanup systems (3026)
- plugins: introduce v2.PluginV2 and v2.NilPlugin (3022)
- build providers: move to buildd images for LXD (2966)
- tests: speed up step, pack and clean command unit tests (3029)
- build providers: do not print network test output for LXD (3033)
- plugins: introduce v2.MakePlugin with rebuilding (3032)
- plugins: introduce v2.CMakePlugin (3037)
- plugins: introduce v2.AutotoolsPlugin (3040)
- grammar: pick from properties if attributes not in the plugin (3045)
- plugins: introduce v2.PythonPlugin (3041)
- plugins: introduce v2.GoPlugin (3046)
- plugins: introduce v2.DumpPlugin (3048)
- build providers: wait for systemd and better nameserver setup on LXD (3052)
- plugins: introduce v2.MesonPlugin (3059)
- plugins: introduce v2.NpmPlugin (3060)
- plugins: introduce v2.RustPlugin (3061)
- cli: update command names to new design (3063)
- tests: fix local plugin spread test to be multi-arch aware (3065)
- cmake v2 plugin: rename configflags to cmake-parameters (3064)
- autotools v2 plugin: rename configflags to autotools-configure-parameters (3066)
- plugins v2: update plugins so they have a similar behavior (3070)
- storeapi: remove strict additionalProperties from store responses (3073)
- make v2 plugin: make use of make-parameters (3069)
- pluginhandler: skip plugin clean_pull for PluginV2 (3077)
- meson v2 plugin: ignore any staged python when installing meson (3078)
- cli: add plugin help for core20 (3079)
- make v2 plugin: also pass make-parameters to install (3081)
- cli: add list-plugins for core20 (3082)
- repo: revert logic to get deb_arch (3083)
- build providers: dist-upgrade the environment on bootstrap (3085)
- meta: remove snapd workaround for classic for core20 onwards (3087)
- repo: add interface to get packages from base (3088)
- ci: install the snapd snap when preparing spread systems
- tests: add python3-wheel to staged python spread test
- tests: remove MATCH from build-and-run-hello spread task
- tests: add python3-minimal to python-staged spread
- pluginhandler: cleanup before rebuilding for anything not PluginV1

3.38

With this release, the GNOME 3.38 extension, which was previously
marked as unstable and documented at
<https://snapcraft.io/docs/gnome-3-38-extension> is now marked as
stable.


<a id="org43327b5"></a>

KDE Neon

The KDE Neon extension now supports `core20` as an experimental
extension, the documentation on
<https://snapcraft.io/docs/kde-neon-extension> has been updated to
reflect this.


<a id="org288e5e9"></a>

Flutter

New flutter variants of the extension for **stable** and **beta** are now
available. The same documentation applies as for the **master** and **dev**
variant <https://snapcraft.io/docs/flutter-extension>.



Full list of changes

- package-repositories: use last 8 characters of key id for .asc cjp256 (3486)
- build(deps): bump lxml from 4.6.2 to 4.6.3 dependabot (3485)
- Support install-mode option for apps cmatsuoka (3482)
- requirements: use PyNaCl 1.3.0 and ensure is compiled on linux sergiusens (3483)
- tests: crystal 1.0.0 requires shard.lock sergiusens (3484)
- porting conda plugin from v1 to v2 so we can use it in core20 ycheng (3457)
- project loader: ensure all key assets are utilized cjp256 (3364)
- Candid bakery sergiusens (3473)
- extensions: add core20 support to kde-neon sergiusens (3462)
- ci: add requirements for snapcraft legacy in spread sergiusens (3478)
- ci: reduce amount of artifacts to upload for spread sergiusens (3476)
- godeps: set default channel to 1.15/stable cjp256 (3475)
- spread tests: pin go for v1 plugin snaps cjp256 (3477)
- Add flutter-stable and -beta extension variants MarcusTomlinson (3471)
- storeapi: move http client and auth to http_clients package sergiusens (3472)
- store: do not unnecessarily catch/rewrite exceptions cjp256 (3466)
- ci: run spread store tests when secret is available sergiusens (3470)
- gitignore: sort list cjp256 (3467)
- repo: introduce DebPackage class to standardize package name parsing cjp256 (3460)
- store: set auth headers when using login --with sergiusens (3468)
- meta: add support for `kernel.yaml` for kernel snaps mvo5 (3464)
- extensions: make GNOME 3.38 stable sergiusens (3427)
- requirements: pip freeze sergiusens (3458)
- storeapi: decouple auth and API sergiusens (3452)

1.0

summary: hello world
description: |
A ROS 1 roscpp-based workspace.
grade: stable
confinement: strict
base: core20

apps:
catkin-noetic-hello:
command: opt/ros/noetic/lib/snapcraft_hello/snapcraft_hello
plugs: [network, network-bind]
extensions: [ros1-noetic]

parts:
hello:
plugin: catkin
source: .
build-packages: [g++, make]


The experience should be pretty similar to the newly introduced ROS 2 extension and colcon plugin
in [Snapcraft 4.2](https://github.com/snapcore/snapcraft/releases/4.2).

> Source is assumed to be local and a valid catkin project

Set the default Channel Track from the Snapcraft

Building on the feature set from [Snapcraft 4.2](https://github.com/snapcore/snapcraft/releases/4.2)
where track listing was introduced, it is now possible to set default tracks and it is as simple as running:


$ snapcraft set-default-track node 17
Default track for 'node' set to '17'.


Other improvements

- build providers: use the releases endpoint for LXD sergiusens (3271)
- cli: add --enable-experimental-extensions option for expand-extensions cjp256 (3266)

Bug Fixes

- spread tests: remove references of core16 cjp256 (3269)
- cli: ignore sudo warning when using multipass sergiusens (3275)
- schema: rename package-repository's "deb-types" to "format" cjp256 (3274)
- spread tests: lock down setuptools for plainbox sergiusens (3273)
- build providers: hide systemd setup for LXD sergiusens (3281)
- Set VDPAU_DRIVER_PATH appropriately flexiondotorg (3279)
- storeapi: improve to channel map docstrings sergiusens (3272)
- colcon v2 plugin: honour http(s) proxy for stage-runtime-dependencies cjp256 (3265)

Specifications and Documentation

- specifications: environment lifecycle cjp256 (3140)

Page 5 of 6

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.