remote build: legacy builder doesn't send icon to Launchpad
Metadata
Current evaluation
Closed won't fix: the current remote builder handles root-level icons; the affected legacy builder was removed in Snapcraft 9 by #5994 (b08f1a66e).
Resolution: closed stale
Reason: Maintainer @mr-cal confirmed the defect only affected the legacy remote builder, which was scheduled for removal. That builder was removed in Snapcraft 9 by PR #5994, commit b08f1a66e.
Evaluated by: mr-cal-bot
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 |
|---|---|---|---|---|
| stealth/space-bunny-alpha | — | closed stale | Closed won't fix: the current remote builder handles root-level icons; the affected legacy builder was removed in Snapcraft 9 by #5994 (b08f1a66e). | |
| stealth/space-bunny-alpha | — | closed stale | Legacy remote builds omitted root-level icons, but the current builder works correctly; the legacy builder was removed from Snapcraft 9 by #5994 (b08f1a66e). | |
| stealth/space-bunny-alpha | — | closed stale | Closed as won't fix: only the legacy remote builder was affected; it was removed in Snapcraft 9 by PR #5994 (commit b08f1a66e), while the current builder handles root-level icons. | |
| stealth/space-bunny-alpha | — | closed stale | Reported 2023 by external contributor: the legacy remote builder didn't upload repo-root icons to Launchpad, so builds failed with "Specified icon does not exist". Closed won't-fix by mr-cal (2026-01-27); legacy builder removed in PR #5994 (b08f1a66e) for Snapcraft 9. | |
| stealth/space-bunny-alpha | — | closed not a bug | Closed as won't fix by mr-cal: only the legacy remote builder missed root-level icons; the current remote builder works, and the legacy builder was removed in commit b08f1a66e (chore!: remove legacy remote builder, #5994) for Snapcraft 9. | |
| stealth/space-bunny-alpha | — | closed stale | Closed as won't fix: maintainer mr-cal (2026-01-27) confirmed the icon only fails with the legacy remote builder, not the current one, which was later removed in commit b08f1a66e (PR #5994). | |
| stealth/space-bunny-alpha | — | closed stale | Closed as won't fix: the bug only affects the legacy remote builder, which is removed in Snapcraft 9; the current remote builder handles root-level icons correctly. | |
| 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. |
Update history
No update history recorded yet.
Related work
-
Superseded By:
canonical/snapcraft#5994
(confidence 99%)
PR #5994 removed the affected legacy remote-builder implementation in Snapcraft 9.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #2006445 remote-build is not copying files from root of repository | snapcraft (launchpad) | closed | Closed as no longer reproducible with Snapcraft 9's new remote builder; the legacy builder was removed in snapcraft#5994, with no targeted copy fix recorded. | |
| #5712 remote build: legacy builder should give a friendly error when passing `--project` | snapcraft | closed | Closed as won't fix: maintainer mr-cal said the UX tweak wasn't critical because the legacy remote builder is being removed in Snapcraft 9. That removal landed in merged PR #5994 (commit b08f1a66e), closing #5676. | |
| #5676 remote build: remove legacy remote builder | snapcraft | closed | Fixed in merged PR #5994 (commit b08f1a66e) for Snapcraft 9.0 by removing the legacy remote builder, selection logic, strategy env var, and legacy credential support. | |
| #4892 fix(remotebuild): use legacy launchpad credentials if they exist | snapcraft | merged | Merged in snapcraft#4892 as c1c70a249, adding legacy Launchpad credential fallback, build-for: all support, and expanded remote-build tests; fixes #4889. |