Bug in 'gnome-3.38' extension prevents me from installing my snap

Dear Snap Community,

I hope you are having a nice day.

Today I added a Graphical Desktop component to my snap, and I used the gnome-3.38 extension to make this a lot easier.

Anyway, now I am getting to following error when I run snap install duckpowered_0.1a_amd64.snap --dangerous:

error: cannot perform the following tasks:
- Run configure hook of "duckpowered" snap if present (run hook "configure": cannot snap-exec: no such file or directory)

I am not using a configure hook (actually I’m not using any hooks at all), so I am sure that the gnome-3.38 extension is adding some hook that doesn’t work.

The snap is not installed at all after running this command.

Here is the output of snap version, in case it helps:

snap 2.57.5+22.04
snapd 2.57.5+22.04
series 16
ubuntu 22.04
kernel 5.15.0-52-generic

How can I resolve this bug in the extension?

Thank you for you time!

foss-for-the-win

P.s. here is my snapcraft.yaml in case you need it:

name: duckpowered
base: core20
version: '0.1a'
summary: Intelligent power savings that don't effect performance.
description: |
  Tweet tweet.
grade: stable
confinement: strict


layout:
  /usr/bin:
     bind: $SNAP/actual-service/shipping
  /etc/duckpowered:
     bind: $SNAP_DATA

plugs:
  cpu-control:
    interface: cpu-control
  system-observe:
     interface: system-observe
 
 
apps:
  duckpowered:
    extensions: [gnome-3-38]
    command: usr/bin/dash
    adapter: none
  actual-service:
    command: usr/bin/run
    adapter: none
    plugs:
      - cpu-control
      - system-observe
    daemon: simple    

parts:
  actual-service:
    plugin: dump
    source: ./actual-service
    override-build: |
      snapcraftctl build
      mkdir $SNAPCRAFT_PART_INSTALL/shipping
      cp /usr/bin/vmstat $SNAPCRAFT_PART_INSTALL/shipping
      cp /usr/bin/lscpu $SNAPCRAFT_PART_INSTALL/shipping
      cp /usr/bin/awk $SNAPCRAFT_PART_INSTALL/shipping
      cp /bin/cat $SNAPCRAFT_PART_INSTALL/shipping
      cp /usr/bin/tail $SNAPCRAFT_PART_INSTALL/shipping
      cp /usr/bin/tee $SNAPCRAFT_PART_INSTALL/shipping
      cp /bin/grep $SNAPCRAFT_PART_INSTALL/shipping
      apt -y install bash
      cp /bin/bash $SNAPCRAFT_PART_INSTALL/shipping
      chmod +x $SNAPCRAFT_PART_INSTALL/main.sh
      
    organize:
      main.sh: usr/bin/run
      
  gui:
    plugin: dump
    source: ./gui
    override-build: |
      snapcraftctl build
      cd $SNAPCRAFT_PART_INSTALL
      snap install rustup --classic
      rustup install stable
      rustup default stable
      fallocate -l 8G /buildSwapfile
      chmod 600 /buildSwapfile
      mkswap /buildSwapfile
      swapon /buildSwapfile
      cargo install tauri-cli
      apt -y install libssl-dev
      cargo tauri build -b none
      cp ./src-tauri/target/release/duck-powered-dashboard .
      chmod +x ./duck-powered-dashboard
      rm -r ./src-tauri/target
    organize:
      duck-powered-dashboard: usr/bin/dash


you are wiping out the existing content of /usr/bin i.e. you are hiding all binaries from your core20 base snap so internal tools can not run anymore …

try to instead simply add $SNAP/actual-service/shipping to your PATH

i’d also recommend to not overlay bash, tail, tee, awk or grep, they are all already available from your base snap without you shipping them (i think vmstat and lscpu as well but have not checked).

2 Likes

Thank you so much @ogra that was exactly the problem! :slight_smile: