We're attempting to update the rpi-imager snap to use the kde-neon-6 extension. The application has recently moved to Qt6, so this seemed like a reasonable opportunity to try the extension and potentially make the snap much smaller by not embedding most of Qt in it.
The snap builds successfully and runs very nicely on amd64. However, on arm64, while the snap builds successfully, it fails to run, complaining that libQt6Widgets.so.6 is missing. This is meant to come from the kf6-core22 content snap and, indeed, on amd64 this is present.
Unfortunately, the arm64 version of kf6-core22 appears completely broken. For starters it's a mere 73MB compared to the amd64 variant's 2GB (!), and indeed it is missing Qt6 entirely. I checked the snapstore page for kf6-core22 but there's no contact information registered.
In the absence of being able to file a bug against kf6-core22 itself, I figure the next best thing is to try filing a bug against the project with an official extension encouraging its use? It may at the least be worth mentioning on the snapcraft extensions page that, contrary to appearances, this extension is amd64 only currently?
To Reproduce
On an arm64 box (e.g. a Raspberry Pi 5) with a desktop installation:
Add the following connections (normally made automatically, but obviously not here with a local build):
sudo snap connect rpi-imager:hardware-observe
sudo snap connect rpi-imager:mount-observe
sudo snap connect rpi-imager:network-manager
sudo snap connect rpi-imager:removable-media
sudo snap connect rpi-imager:udisks2
Run rpi-imager
Observe failure while attempting to load shared library libQt6Widgets.so.6
Compare the content of /snap/kd6-core22/current/ between amd64 and arm64 and you should find the missing library located under usr/lib/{arch} on the amd64 variant, but not the arm64 one.
Environment
Built using LXD on Ubuntu 24.04 LTS on a PC (amd64) and a Raspberry Pi 5 (arm64).
snapcraft.yaml
name: rpi-imager
base: core22
adopt-info: imagewriter
summary: Raspberry Pi Imager
website: https://www.raspberrypi.com/software/
source-code: https://github.com/raspberrypi/rpi-imager
issues: https://github.com/waveform80/imager-snap
icon: images/rpi-imager.png
license: Apache-2.0
description: |
Raspberry Pi Imager is an easy to use application for installing Raspberry Pi
OS, or other operating systems, to an SD card ready to use with your
Raspberry Pi.
Usage is as simple as:
1. Pick the Raspberry Pi board you want to use.
2. Pick the operating system you want to write.
3. Pick the storage you want to write it to (SD card, hard drive, SSD, etc.)
4. Click "NEXT", confirm you wish to overwrite your storage and wait!
The application also verifies that the operating system has been written
correctly after writing has finished. With certain operating system images,
the imager also supports customizing the first boot configuration (you will
be prompted for more information after selecting "NEXT" in this case).
compression: lzo
grade: stable
confinement: strict
apps:
rpi-imager:
command: usr/local/bin/rpi-imager
desktop: usr/local/share/applications/org.raspberrypi.rpi-imager.desktop
extensions: [kde-neon-6]
environment:
DISABLE_WAYLAND: 1
# Use GTK3 cursor theme, icon theme and open/save file dialogs
QT_QPA_PLATFORMTHEME: gtk3
plugs:
- home
- removable-media # required to re-write first-boot configuration
- mount-observe # required to report mounts on target media
- network-manager # required to grab image
- network-control
- cifs-mount
- udisks2 # required for writing to sd card
- hardware-observe # required to find card with lsblk
- gsettings # required for theming on wayland
parts:
imagewriter:
plugin: cmake
cmake-parameters:
- -DENABLE_CHECK_VERSION=OFF
- -DQt6_ROOT=
source: https://github.com/raspberrypi/rpi-imager.git
source-subdir: src
source-type: git
override-pull: |
craftctl default
last_committed_tag="$(git describe --tags $(git rev-list --tags --max-count=1))"
last_committed_tag_ver="$(echo ${last_committed_tag} | sed 's/v//' )"
git fetch
git checkout "$last_committed_tag"
echo "Building $last_committed_tag_ver"
craftctl set version="$last_committed_tag_ver"
# Strip out the vendored dependencies and embedded source
if [ -d "$CRAFT_PART_SRC"/embedded ]; then
rm -fr "$CRAFT_PART_SRC"/embedded
fi
# Point the icon to the right place
sed -i -e \
's|^Icon=rpi-imager|Icon=/usr/local/share/icons/hicolor/128x128/apps/rpi-imager.png|' \
"$CRAFT_PART_SRC"/src/linux/org.raspberrypi.rpi-imager.desktop
build-packages:
- libgnutls28-dev
Relevant log output
/snap/rpi-imager/x1/usr/local/bin/rpi-imager: error while loading shared libraries: libQt6Widgets.so.6: cannot open shared object file: No such file or directory
Bug Description
We're attempting to update the rpi-imager snap to use the
kde-neon-6
extension. The application has recently moved to Qt6, so this seemed like a reasonable opportunity to try the extension and potentially make the snap much smaller by not embedding most of Qt in it.The snap builds successfully and runs very nicely on amd64. However, on arm64, while the snap builds successfully, it fails to run, complaining that
libQt6Widgets.so.6
is missing. This is meant to come from thekf6-core22
content snap and, indeed, on amd64 this is present.Unfortunately, the arm64 version of
kf6-core22
appears completely broken. For starters it's a mere 73MB compared to the amd64 variant's 2GB (!), and indeed it is missing Qt6 entirely. I checked the snapstore page for kf6-core22 but there's no contact information registered.In the absence of being able to file a bug against kf6-core22 itself, I figure the next best thing is to try filing a bug against the project with an official extension encouraging its use? It may at the least be worth mentioning on the snapcraft extensions page that, contrary to appearances, this extension is amd64 only currently?
To Reproduce
On an arm64 box (e.g. a Raspberry Pi 5) with a desktop installation:
git clone https://github.com/waveform80/imager-snap
git checkout neon-6
snapcraft pack
sudo snap install --dangerous ./rpi-imager_1.9.0_amd64.snap
sudo snap connect rpi-imager:hardware-observe
sudo snap connect rpi-imager:mount-observe
sudo snap connect rpi-imager:network-manager
sudo snap connect rpi-imager:removable-media
sudo snap connect rpi-imager:udisks2
rpi-imager
libQt6Widgets.so.6
Compare the content of
/snap/kd6-core22/current/
between amd64 and arm64 and you should find the missing library located under usr/lib/{arch} on the amd64 variant, but not the arm64 one.Environment
Built using LXD on Ubuntu 24.04 LTS on a PC (amd64) and a Raspberry Pi 5 (arm64).
snapcraft.yaml
Relevant log output
Additional context
No response