remote build: legacy builder doesn't send icon to Launchpad
Metadata
Current evaluation
Marked won't fix. The bug only affects the legacy remote builder, which will be removed in Snapcraft 9. The current remote builder correctly handles root-level icons.
Suggested action: —
No scores available.
Issue body
### Bug Description
remote-build doesn't send the `icon` to Launchpad if the icon is in the root of the repository.
### To Reproduce
remote-build a snap where the icon is in the root of the repository.
Example repo: discord at this commit https://github.com/snapcrafters/discord/tree/d3344c01a930f831ae7779381e8a0d292c569268
### Environment
remote-build, both on Ubuntu 22.04 and GitHub actions
### snapcraft.yaml
```shell
name: discord
title: Discord
summary: Chat for Communities and Friends
description: |
Discord is the easiest way to communicate over voice, video, and text. Chat, hang out, and stay close with your friends and communities.
Snaps are confined, as such Discord may be unable to perform some of the tasks it typically does when unconfined. This may result in the system log getting spammed with apparmor errors. Granting access to the system-observe interface when in the snap will enable the features, and thus reduce the logging.
snap connect discord:system-observe
**Authors**
This snap is maintained by the Snapcrafters community, and is not necessarily endorsed or officially maintained by the upstream developers.
website: https://discord.com/
contact: https://github.com//snapcrafters/discord/issues
issues: https://github.com//snapcrafters/discord/issues
source-code: https://github.com//snapcrafters/discord
license: Proprietary
icon: discord.png
version: 0.0.36
base: core22
grade: stable
confinement: strict
assumes:
- snapd2.54
architectures:
- build-on: amd64
compression: lzo
parts:
disable-updater:
plugin: nil
override-pull: |
cat <<'EOF' > disable-updater.sh
#!/bin/bash
if [ ! -d "$SNAP_USER_DATA"/.config/discord ]; then
mkdir -p "$SNAP_USER_DATA"/.config/discord
fi
CONFIG_FILE="$SNAP_USER_DATA"/.config/discord/settings.json
if ! [ -f "$CONFIG_FILE" ]; then
echo '{}' > "$CONFIG_FILE"
fi
ORIG_JSON=$(cat "$CONFIG_FILE")
NEW_JSON=$(jq '.SKIP_HOST_UPDATE = true' < "$CONFIG_FILE")
if [ "$ORIG_JSON" != "$NEW_JSON" ]; then
echo "$NEW_JSON" > "$CONFIG_FILE"
fi
exec "$@"
EOF
override-build: |
install -m755 -D -t $CRAFT_PART_INSTALL/bin disable-updater.sh
stage-packages:
- jq
launcher:
plugin: dump
source: launcher
override-build: |
cp launcher $CRAFT_PART_INSTALL/
discord:
plugin: nil
override-build: |
craftctl default
curl -o discord.deb "https://dl.discordapp.net/apps/linux/${SNAPCRAFT_PROJECT_VERSION}/discord-${SNAPCRAFT_PROJECT_VERSION}.deb"
dpkg-deb -xv discord.deb $CRAFT_PART_INSTALL/
rm $CRAFT_PART_INSTALL/usr/share/discord/chrome-sandbox
# Correct path to icon.
sed -i 's|Icon=discord|Icon=/usr/share/discord/discord\.png|' ${CRAFT_PART_INSTALL}/usr/share/discord/discord.desktop
build-packages:
- curl
- sed
stage-packages:
- libatomic1
- libc++1
- libnspr4
- libnss3
- libxss1
- xdg-utils
prime:
- -usr/bin/xdg-open
cleanup:
after: [discord]
plugin: nil
build-snaps: [ gnome-42-2204 ]
override-prime: |
set -eux
cd /snap/gnome-42-2204/current
find . -type f,l -exec rm -f $CRAFT_PRIME/{} \;
plugs:
shmem:
interface: shared-memory
private: true
apps:
discord:
extensions: [gnome]
command: launcher
command-chain: [bin/disable-updater.sh]
autostart: discord.desktop
desktop: usr/share/applications/discord.desktop
environment:
# Correct the TMPDIR path for Chromium Framework/Electron to
# ensure libappindicator has readable resources
TMPDIR: $XDG_RUNTIME_DIR
GTK_USE_PORTAL: 1
DISABLE_WAYLAND: 1
plugs:
- audio-playback
- audio-record
- camera
- home
- mount-observe
- network
- network-observe
- opengl
- process-control
- removable-media
- screen-inhibit-control
- shmem
- system-observe
- unity7
```
### Relevant log output
```shell
Running on amd64 for amd64
Specified icon 'discord.png' does not exist.
Full execution log: '/root/.local/state/snapcraft/log/snapcraft-20231202-120056.334830.log'
Build failed
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/lpbuildd/target/build_snap.py", line 265, in run
self.pull()
File "/usr/lib/python3/dist-packages/lpbuildd/target/build_snap.py", line 205, in pull
self.run_build_command(
File "/usr/lib/python3/dist-packages/lpbuildd/target/operation.py", line 62, in run_build_command
return self.backend.run(args, cwd=cwd, env=full_env, **kwargs)
File "/usr/lib/python3/dist-packages/lpbuildd/target/lxd.py", line 716, in run
subprocess.check_call(cmd, **kwargs)
File "/usr/lib/python3.8/subprocess.py", line 364, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['lxc', 'exec', 'lp-jammy-amd64', '--env', 'LANG=C.UTF-8', '--env', 'SHELL=/bin/sh', '--env', 'http_proxy=http://10.10.10.1:8222/', '--env', 'https_proxy=http://10.10.10.1:8222/', '--env', 'GIT_PROXY_COMMAND=/usr/local/bin/lpbuildd-git-proxy', '--env', 'SNAPPY_STORE_NO_CDN=1', '--env', 'SNAPCRAFT_LOCAL_SOURCES=1', '--env', 'SNAPCRAFT_SETUP_CORE=1', '--env', 'SNAPCRAFT_BUILD_INFO=1', '--env', 'SNAPCRAFT_IMAGE_INFO={"build-request-id": "lp-84317756", "build-request-timestamp": "2023-12-02T11:59:01Z", "build_url": "https://launchpad.net/~snapcrafters-bot/+snap/snapcraft-discord-2ce38607310745e1e17f995dfa82de56/+build/2315373"}', '--env', 'SNAPCRAFT_BUILD_ENVIRONMENT=host', '--', '/bin/sh', '-c', 'cd /build/snapcraft-discord-2ce38607310745e1e17f995dfa82de56 && linux64 snapcraft pull']' returned non-zero exit status 1.
Revoking proxy token...
RUN: /usr/share/launchpad-buildd/bin/in-target scan-for-processes --backend=lxd --series=jammy --arch=amd64 SNAPBUILD-2315373
Scanning for processes to kill in build SNAPBUILD-2315373
```
### Additional context
_No response_
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| qwen/qwen3.6-35b-a3b | — | — | Marked won't fix. The bug only affects the legacy remote builder, which will be removed in Snapcraft 9. The current remote builder correctly handles root-level icons. | |
| qwen/qwen3.6-35b-a3b | — | — | Marked won't fix. The bug only affects the legacy remote builder, which will be removed in Snapcraft 9. Maintainers deemed it non-critical and will not implement a fix. | |
| qwen/qwen3.6-35b-a3b | — | — | Won't fix. The bug only affects the legacy remote builder, which is deprecated and being removed in Snapcraft 9. The current remote builder correctly handles root-level icons. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Won't fix. Only the legacy remote builder fails to send root-level icons to Launchpad. The current builder works correctly, and the legacy builder will be removed in Snapcraft 9. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Marked won't fix. The bug only affects the legacy remote builder, which is being removed in Snapcraft 9. The current builder correctly handles root-level icons. |
Update history
No update history recorded yet.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #5712 remote build: legacy builder should give a friendly error when passing `--project` | snapcraft | closed | Marked as won't fix. The legacy remote builder is being removed in Snapcraft 9, making the requested error message enhancement unnecessary. | |
| #4365 remote-build: legacy builder complains about the wrong part name | snapcraft | closed | Marked won't fix. The legacy remote builder causing misleading validation errors for core22 snaps will be removed in Snapcraft 9, rendering the issue obsolete. No code changes were implemented. |