snapcraft 9.0.1's rust plugin stopped auto-provisioning rustup
Metadata
Current evaluation
Regression in snapcraft 9.0.1: rust plugin stopped auto-provisioning rustup. Fixed in craft-parts PR #1774.
Resolution: closed resolved
Reason: The issue was a regression in craft-parts causing rustup provisioning to fail. This was resolved by craft-parts PR #1774 (commit cd1265cd), which adjusted rustup requirements and provisioning logic.
Evaluated by: mr-cal-bot
No scores available.
Issue body
### Check existing issues
- [x] I've verified that this bug isn't described by any existing issues.
### Bug description
The same config of snapcraft.yaml (plugin: rust, no rustup anywhere) relied on the plugin bootstrapping the toolchain itself, which 9.0.0 did and 9.0.1 doesn't.
No changes in the snapcraft.yaml and in the source code of the app itself, no changes in the repo at all.
First GHA passed with 9.0.0
``` Ensuring runner is in the lxd group...
/usr/bin/sudo groupadd --force --system lxd
/usr/bin/sudo usermod --append --groups lxd runner
Installing LXD...
/usr/bin/sudo snap install lxd
2026-06-21T17:22:11Z INFO Waiting for automatic snapd restart...
2026-06-21T17:22:12Z INFO Waiting for automatic snapd restart...
2026-06-21T17:22:13Z INFO Waiting for automatic snapd restart...
2026-06-21T17:22:14Z INFO Waiting for automatic snapd restart...
lxd (5.21/stable) 5.21.4-aee7e08 from Canonical** installed
Initialising LXD...
/usr/bin/sudo lxd init --auto
Installed docker related packages might interfere with LXD networking:
/usr/bin/sudo iptables -P FORWARD ACCEPT
Installing Snapcraft...
/usr/bin/sudo snap install --channel stable --classic snapcraft
snapcraft 9.0.0 from Canonical** installed
/usr/bin/sudo -u runner -E snapcraft --build-for=amd64
Running snapcraft without a command will not be possible in future releases. Use 'snapcraft pack' instead.
Launching managed ubuntu 24.04 instance...
Creating new instance from remote
Creating new base instance from remote
Creating new instance from base instance
Starting instance
Running snapcraft without a command will not be possible in future releases. Use 'snapcraft pack' instead.
Initializing lifecycle
Installing build-packages
Installing build-snaps
Pulling scenedeck
Fetching stage-packages
Downloading package: libdbus-1-3
Extracting stage package: libdbus-1-3
:: + craftctl default
error: rustup could not choose a version of rustc to run, because one wasn't specified explicitly, and no default is configured.
help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain.
Switch rustup channel to stable
:: + rustup update stable
:: info: syncing channel updates for stable-x86_64-unknown-linux-gnu
:: info: latest update on 2026-05-28 for version 1.96.0 (ac68faa20 2026-05-25)
:: Compiling hkdf v0.12.4
:: Compiling dbus v0.9.11
:: Compiling gdk4 v0.9.6
:: Compiling serde_with_macros v3.21.0
:: Compiling cbc v0.1.2
:: Compiling aes v0.8.4
:: Compiling gsk4 v0.9.6
:: Compiling http v1.4.2
:: Compiling gtk4-macros v0.9.5
:: Compiling thiserror-impl v2.0.18
:: Compiling time-core v0.1.8
:: Compiling base64 v0.22.1
:: Compiling thiserror v1.0.69
:: Compiling lazy_static v1.5.0
:: Compiling simdutf8 v0.1.5
:: Compiling num-conv v0.2.2
:: Compiling sha1_smol v1.0.1
:: Compiling time v0.3.47
:: Compiling tokio-websockets v0.13.2
:: Compiling sharded-slab v0.1.7
:: Compiling gtk4 v0.9.7
:: Compiling dbus-secret-service v4.1.0
:: Compiling serde_with v3.21.0
:: Compiling matchers v0.2.0
:: Compiling derive_more v2.1.1
:: Compiling tracing-log v0.2.0
:: Compiling tokio-stream v0.1.18
:: Compiling thiserror-impl v1.0.69
:: Compiling thread_local v1.1.9
:: Compiling uuid v1.23.3
:: Compiling ryu v1.0.23
:: Compiling nu-ansi-term v0.50.3
:: Compiling unsafe-libyaml v0.2.11
:: Compiling rgb v0.8.53
:: Compiling scenedeck v0.1.3 (/root/parts/scenedeck/build)
:: Compiling obws v0.15.0
:: Compiling serde_yaml v0.9.34+deprecated
:: Compiling tracing-subscriber v0.3.23
:: Compiling keyring v3.6.3
:: Compiling libadwaita v0.7.2
:: Finished `release` profile [optimized] target(s) in 1m 37s
:: Installing /root/parts/scenedeck/install/bin/scenedeck
:: Installed package `scenedeck v0.1.3 (/root/parts/scenedeck/build)` (executable `scenedeck`)
:: warning: be sure to add `/root/parts/scenedeck/install/bin` to your PATH to be able to run the installed binaries
:: + rm -f /root/parts/scenedeck/install/.crates.toml /root/parts/scenedeck/install/.crates2.json
:: + install -Dm644 data/io.scenedeck.app.desktop /root/parts/scenedeck/install/usr/share/applications/io.scenedeck.app.desktop
:: + install -Dm644 data/io.scenedeck.app.metainfo.xml /root/parts/scenedeck/install/usr/share/metainfo/io.scenedeck.app.metainfo.xml
:: + install -Dm644 data/io.scenedeck.app.gschema.xml /root/parts/scenedeck/install/usr/share/glib-2.0/schemas/io.scenedeck.app.gschema.xml
:: + install -Dm644 assets/io.scenedeck.app.svg /root/parts/scenedeck/install/usr/share/icons/hicolor/scalable/apps/io.scenedeck.app.svg
:: + glib-compile-schemas /root/parts/scenedeck/install/usr/share/glib-2.0/schemas
Skipping pull for scenedeck (already ran)
Skipping build for scenedeck (already ran)
Staging scenedeck (required to build 'gnome/gpu/cleanup')
Building gnome/gpu/cleanup
Building gnome/gpu/wrapper
:: + make -j4 GPU_INTERFACE=gpu-2404
:: install -D -m755 gpu-wrapper "/snap/command-chain"/"gpu-2404-wrapper"
:: sed --in-place 's/%GPU_INTERFACE%/gpu-2404/g' "/snap/command-chain"/"gpu-2404-wrapper"
:: + make -j4 install GPU_INTERFACE=gpu-2404 DESTDIR=/root/parts/gnome/gpu/wrapper/install
:: install -D -m755 gpu-wrapper "/root/parts/gnome/gpu/wrapper/install/snap/command-chain"/"gpu-2404-wrapper"
:: sed --in-place 's/%GPU_INTERFACE%/gpu-2404/g' "/root/parts/gnome/gpu/wrapper/install/snap/command-chain"/"gpu-2404-wrapper"
Building gnome/sdk
:: + make -j4
:: make: 'Makefile' is up to date.
:: + make -j4 install DESTDIR=/root/parts/gnome/sdk/install
:: install -D -m755 "hooks-configure-fonts" "/root/parts/gnome/sdk/install/snap/command-chain"/"hooks-configure-fonts"
:: install -D -m755 "desktop-launch" "/root/parts/gnome/sdk/install/snap/command-chain"/"desktop-launch"
:: install -D -m755 "run" "/root/parts/gnome/sdk/install/snap/command-chain"/"run"
Skipping stage for scenedeck (already ran)
Staging gnome/gpu/cleanup
Staging gnome/gpu/wrapper
Staging gnome/sdk
Priming scenedeck
Priming gnome/gpu/cleanup
:: + craftctl default
:: + /root/parts/gnome/gpu/cleanup/src/bin/gpu-2404-cleanup mesa-2404
:: + mkdir -p /root/prime/gpu-2404
Priming gnome/gpu/wrapper
Priming gnome/sdk
Packing...
Reading snap metadata...
Running linters...
Running linter: classic
Running linter: gpu
Running linter: library
Running linter: metadata
Lint warnings:
- metadata: Metadata field 'contact' is missing or empty. (https://documentation.ubuntu.com/snapcraft/stable/reference/project-file/snapcraft-yaml/#contact)
Creating snap package...
Packed scenedeck_0.1.3_amd64.snap
```
the same definition after couple of days with 9.0.1
```
Ensuring runner is in the lxd group...
/usr/bin/sudo groupadd --force --system lxd
/usr/bin/sudo usermod --append --groups lxd runner
Installing LXD...
/usr/bin/sudo snap install lxd
2026-07-08T19:33:53Z INFO Waiting for automatic snapd restart...
2026-07-08T19:33:54Z INFO Waiting for automatic snapd restart...
2026-07-08T19:33:55Z INFO Waiting for automatic snapd restart...
2026-07-08T19:33:56Z INFO Waiting for automatic snapd restart...
lxd (5.21/stable) 5.21.5-f2a1a0e from Canonical** installed
Initialising LXD...
/usr/bin/sudo lxd init --auto
Installed docker related packages might interfere with LXD networking:
/usr/bin/sudo iptables -P FORWARD ACCEPT
Installing Snapcraft...
/usr/bin/sudo snap install --channel stable --classic snapcraft
snapcraft 9.0.1 from Canonical** installed
/usr/bin/sudo -u runner -E snapcraft pack --build-for=amd64
Launching managed ubuntu 24.04 instance...
Creating new instance from remote
Creating new base instance from remote
Creating new instance from base instance
Starting instance
Initializing lifecycle
Installing build-packages
Installing build-snaps
Pulling rust-deps
Pulling scenedeck
Fetching stage-packages
Downloading package: libdbus-1-3
Extracting stage package: libdbus-1-3
:: + craftctl default
error: rustup could not choose a version of rustc to run, because one wasn't specified explicitly, and no default is configured.
help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain.
Switch rustup channel to stable
:: + rustup update stable
:: info: syncing channel updates for stable-x86_64-unknown-linux-gnu
:: info: latest update on 2026-06-30 for version 1.96.1 (31fca3adb 2026-06-26)
:: info: downloading 6 components
::
:: stable-x86_64-unknown-linux-gnu installed - rustc 1.96.1 (31fca3adb 2026-06-26)
::
:: info: default toolchain set to stable-x86_64-unknown-linux-gnu
:: info: self-update is disabled for this build of rustup
:: info: any updates to rustup will need to be fetched with your system package manager
:: + rustup default stable
:: info: using existing install for stable-x86_64-unknown-linux-gnu
::
:: info: default toolchain set to stable-x86_64-unknown-linux-gnu
:: stable-x86_64-unknown-linux-gnu unchanged - rustc 1.96.1 (31fca3adb 2026-06-26)
::
:: ++ sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml
:: ++ head -n1
:: + version=0.1.6
:: + '[' -z 0.1.6 ']'
:: + craftctl set version=0.1.6
Pulling gnome/gpu/cleanup
Pulling gnome/gpu/wrapper
Pulling gnome/sdk
Building rust-deps
Skipping pull for rust-deps (already ran)
Skipping build for rust-deps (already ran)
Staging rust-deps (required to build 'scenedeck')
Building scenedeck
Environment validation failed for part 'scenedeck': 'rustup' not found.
Failed to run snapcraft in instance
Full execution log: '/home/runner/.local/state/snapcraft/log/snapcraft-20260708-193435.955364.log'
Error: The process '/usr/bin/sudo' failed with exit code 1
```
### Steps to reproduce
Provide step-by-step instructions to reproduce the bug.
### Environment
We need to understand the context in which Snapcraft failed. Please let us know if you are running Snapcraft in destructive mode, whether you are using LXD or Multipass, and which operating system you are running Snapcraft on.
https://github.com/worxbend/scenedeck/blob/main/.github/workflows/snap.yml
### snapcraft.yaml
```yaml
If the issue is specific to a project, share its `snapcraft.yaml`. This field automatically renders as YAML, so you don't need to add special formatting.
https://github.com/worxbend/scenedeck/blob/1304eb5e00d1ce30796a306397912a709758a291/snap/snapcraft.yaml
name: scenedeck
title: SceneDeck
summary: Role-aware OBS scene and audio controller
description: |
SceneDeck is a native Linux controller for structured OBS Studio setups.
It provides a role-aware surface for live scene switching, scene dependency
inspection, OBS output control, and an integrated audio mixer.
base: core24
adopt-info: scenedeck
grade: stable
confinement: strict
compression: lzo
license: MIT
icon: usr/share/icons/hicolor/scalable/apps/io.scenedeck.app.svg
source-code:
- https://github.com/worxbend/scenedeck
issues:
- https://github.com/worxbend/scenedeck/issues
website:
- https://github.com/worxbend/scenedeck
platforms:
amd64:
build-on: amd64
build-for: amd64
arm64:
build-on: arm64
build-for: arm64
apps:
scenedeck:
command: bin/scenedeck
extensions: [gnome]
desktop: usr/share/applications/io.scenedeck.app.desktop
common-id: io.scenedeck.app
plugs:
- network
parts:
scenedeck:
plugin: rust
source: .
build-packages:
- libadwaita-1-dev
- libdbus-1-dev
- libglib2.0-bin
- libglib2.0-dev
- libgtk-4-dev
- pkg-config
stage-packages:
- libdbus-1-3
override-pull: |
craftctl default
version="$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -n1)"
if [ -z "${version}" ]; then
echo "failed to read package version from Cargo.toml" >&2
exit 1
fi
craftctl set version="${version}"
override-build: |
craftctl default
install -Dm644 data/io.scenedeck.app.desktop \
"${CRAFT_PART_INSTALL}/usr/share/applications/io.scenedeck.app.desktop"
install -Dm644 data/io.scenedeck.app.metainfo.xml \
"${CRAFT_PART_INSTALL}/usr/share/metainfo/io.scenedeck.app.metainfo.xml"
install -Dm644 data/io.scenedeck.app.gschema.xml \
"${CRAFT_PART_INSTALL}/usr/share/glib-2.0/schemas/io.scenedeck.app.gschema.xml"
install -Dm644 assets/io.scenedeck.app.svg \
"${CRAFT_PART_INSTALL}/usr/share/icons/hicolor/scalable/apps/io.scenedeck.app.svg"
glib-compile-schemas "${CRAFT_PART_INSTALL}/usr/share/glib-2.0/schemas"
```
### Log output
```shell
Provide any relevant logging. This field automatically renders as a log, so you don't need to add special formatting.
Ensuring runner is in the lxd group...
/usr/bin/sudo groupadd --force --system lxd
/usr/bin/sudo usermod --append --groups lxd runner
Installing LXD...
/usr/bin/sudo snap install lxd
2026-07-08T19:33:53Z INFO Waiting for automatic snapd restart...
2026-07-08T19:33:54Z INFO Waiting for automatic snapd restart...
2026-07-08T19:33:55Z INFO Waiting for automatic snapd restart...
2026-07-08T19:33:56Z INFO Waiting for automatic snapd restart...
lxd (5.21/stable) 5.21.5-f2a1a0e from Canonical** installed
Initialising LXD...
/usr/bin/sudo lxd init --auto
Installed docker related packages might interfere with LXD networking:
/usr/bin/sudo iptables -P FORWARD ACCEPT
Installing Snapcraft...
/usr/bin/sudo snap install --channel stable --classic snapcraft
snapcraft 9.0.1 from Canonical** installed
/usr/bin/sudo -u runner -E snapcraft pack --build-for=amd64
Launching managed ubuntu 24.04 instance...
Creating new instance from remote
Creating new base instance from remote
Creating new instance from base instance
Starting instance
Initializing lifecycle
Installing build-packages
Installing build-snaps
Pulling rust-deps
Pulling scenedeck
Fetching stage-packages
Downloading package: libdbus-1-3
Extracting stage package: libdbus-1-3
:: + craftctl default
error: rustup could not choose a version of rustc to run, because one wasn't specified explicitly, and no default is configured.
help: run 'rustup default stable' to download the latest stable release of Rust and set it as your default toolchain.
Switch rustup channel to stable
:: + rustup update stable
:: info: syncing channel updates for stable-x86_64-unknown-linux-gnu
:: info: latest update on 2026-06-30 for version 1.96.1 (31fca3adb 2026-06-26)
:: info: downloading 6 components
::
:: stable-x86_64-unknown-linux-gnu installed - rustc 1.96.1 (31fca3adb 2026-06-26)
::
:: info: default toolchain set to stable-x86_64-unknown-linux-gnu
:: info: self-update is disabled for this build of rustup
:: info: any updates to rustup will need to be fetched with your system package manager
:: + rustup default stable
:: info: using existing install for stable-x86_64-unknown-linux-gnu
::
:: info: default toolchain set to stable-x86_64-unknown-linux-gnu
:: stable-x86_64-unknown-linux-gnu unchanged - rustc 1.96.1 (31fca3adb 2026-06-26)
::
:: ++ sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml
:: ++ head -n1
:: + version=0.1.6
:: + '[' -z 0.1.6 ']'
:: + craftctl set version=0.1.6
Pulling gnome/gpu/cleanup
Pulling gnome/gpu/wrapper
Pulling gnome/sdk
Building rust-deps
Skipping pull for rust-deps (already ran)
Skipping build for rust-deps (already ran)
Staging rust-deps (required to build 'scenedeck')
Building scenedeck
Environment validation failed for part 'scenedeck': 'rustup' not found.
Failed to run snapcraft in instance
Full execution log: '/home/runner/.local/state/snapcraft/log/snapcraft-20260708-193435.955364.log'
Error: The process '/usr/bin/sudo' failed with exit code 1
```
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| qwen/qwen3.6-35b-a3b | — | closed resolved | Regression in snapcraft 9.0.1: rust plugin stopped auto-provisioning rustup. Fixed in craft-parts PR #1774. | |
| ~deepseek/deepseek-pro-latest |
Impact:
70
Quick Win:
25
Complexity:
55
Confidence:
70
Actionability:
80
|
keep open | Rust plugin no longer auto-provisions rustup in snapcraft 9.0.1; builds fail with 'rustup not found'. Triaged, internal ticket SNAPCRAFT-1399 created. | |
| ~deepseek/deepseek-pro-latest |
Impact:
70
Quick Win:
21
Complexity:
60
Confidence:
70
Actionability:
75
|
keep open | Rust plugin no longer auto-provisions rustup in snapcraft 9.0.1 and 8.x stable; builds fail with 'rustup not found'. Triaged as a craft-parts regression. | |
| ~deepseek/deepseek-pro-latest |
Impact:
70
Quick Win:
24
Complexity:
55
Confidence:
70
Actionability:
75
|
keep open | Rust plugin stopped auto-provisioning rustup in snapcraft 9.0.1; builds fail with 'rustup not found' after an auto-generated rust-deps part is staged. Triaged as bug, reproduced in 8.x latest. | |
| stealth/space-bunny-alpha |
Impact:
68
Quick Win:
36
Complexity:
42
Confidence:
90
Actionability:
92
|
keep open | Rust plugin regression: Snapcraft 9.0.1 provisions rustup during pull but later fails validation with “rustup” not found; maintainers reproduced it in 8.x and identify craft-parts as the source. | |
| stealth/space-bunny-alpha |
Impact:
58
Quick Win:
27
Complexity:
48
Confidence:
97
Actionability:
88
|
keep open | Rust plugin regression in Snapcraft 9.0.1 stops provisioning rustup; linked CI builds fail with "'rustup' not found". A maintainer confirmed it is a craft-parts regression affecting Snapcraft 8.x, with no resolution noted. | |
| qwen3.6-35b-a3b-mtp-q6 |
Impact:
80
Quick Win:
48
Staleness:
40
Complexity:
40
Confidence:
85
Support Request:
0
|
needs triage | Regression in snapcraft 9.0.1 where the rust plugin stops auto-provisioning rustup, breaking builds with 'rustup' not found. Requires triage in craft-parts. | |
| qwen3.6-35b-a3b-mtp-q6 |
Impact:
80
Quick Win:
56
Staleness:
20
Complexity:
30
Confidence:
85
Support Request:
5
|
needs triage | Regression in snapcraft 9.0.1 where the rust plugin fails to auto-provision rustup, causing environment validation to fail with 'rustup' not found. | |
| qwen/qwen3.6-35b-a3b |
Staleness:
45
Complexity:
30
Confidence:
85
Support Request:
10
|
needs triage | Regression in snapcraft 9.0.1 rust plugin failing to auto-provision rustup, breaking builds. Issue is unlabelled and awaiting maintainer triage. | |
| qwen3.6-35b-a3b-mtp-q6 |
Staleness:
0
Complexity:
40
Confidence:
90
Support Request:
0
|
needs triage | Regression in snapcraft 9.0.1 where the rust plugin fails to auto-provision rustup, causing build failures. Issue is fresh, unlabelled, and awaiting maintainer assessment. |
Update history
| Date | Change |
|---|---|
| closed | |
| updated | |
| updated | |
| updated |
Related work
-
Likely Fixed By:
craft-parts#1774
(confidence 90%)
Commit cd1265cd in craft-parts fixes the rustup provisioning/validation issue described in the bug.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #198 plugins: rust | craft-parts | merged | Merged PR #198 (bb92a132) ported Snapcraft’s Rust plugin into craft-parts for CRAFT-955 after prerequisite test refactor #199. |