← Back to issue list

snapcraft 9.0.1's rust plugin stopped auto-provisioning rustup

View original Github issue

Metadata

Project
snapcraft
Number
#6330
Type
issue
State
open
Author
oleksandr-balyshyn
Labels
Created
Updated
Closed

Current evaluation

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.

Suggested action: needs triage

Reason: The issue reports a clear regression in the rust plugin where snapcraft 9.0.1 fails to provision rustup, causing builds to break. Code analysis of craft-parts shows a mismatch between get_build_snaps() (which skips rustup if system rustc is detected) and the environment validator (which still expects rustup). This needs maintainer triage to align the logic and release a fix.

Impact: 80 Quick Win: 48.0 Staleness: 40 Complexity: 40 Confidence: 85 Support Request: 0

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
qwen3.6-35b-a3b-mtp-q6
Impact: 80
Quick Win: 48.0
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.0
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
updated

Related work

  • Related To: craft-parts#903 (confidence 75%)

    The 'improve dependency validation' commit likely introduced the mismatch between get_build_snaps and the validator.

Related issues

No related issues found above the similarity threshold.