`package-repositories` fail with the core24 base due to missing packages
Metadata
Current evaluation
Fixed in merged PR #4754 (commit 712626448) and released in Snapcraft 8.2.1: core24 remote builds now install GPG/dirmngr before configuring package repositories.
Resolution: closed resolved
Reason: PR #4754 was merged as commit 712626448, adding the missing GPG and dirmngr setup for core24 remote builds. The reporter confirmed that the pi-24 Launchpad build now succeeds.
Evaluated by: mr-cal-bot
No scores available.
Issue body
### Bug Description
We have a LP recipe for a snap with `base: core24` that's failing due to the following:
```
gpg: WARNING: unsafe permissions on homedir '/tmp/tmpvro98o2s'
gpg: error running '/usr/bin/dirmngr': probably not installed
gpg: failed to start dirmngr '/usr/bin/dirmngr': Configuration error
gpg: can't connect to the dirmngr: Configuration error
gpg: keyserver receive failed: No dirmngr
```
The build log is here:
https://launchpadlibrarian.net/724229364/buildlog_snap_ubuntu_noble_arm64_pi-24_BUILDING.txt.gz
And the recipe is here:
https://github.com/snapcore/pi-gadget/blob/24/snapcraft.yaml
It seems to happen when we use the following
```
package-repositories:
- type: apt
ppa: snappy-dev/image
```
We have tried to add the missing packages `gnupg` and `dirmngr` - but snapcraft fails before installing packages. It seems to have had special handling for core22 [here](https://github.com/canonical/snapcraft/blob/be36b4dc0c98fbbff10e38fc8aef23fc39a0e51f/snapcraft/parts/parts.py#L242)
### To Reproduce
1. Create a snap recipe on LP using the latest edge snapcraft.
2. Use a snapcraft.yaml that contains both of these configs options
* `base: core24`
* `package-repositories:` with `type: apt`
### Environment
Snapcraft on LP.
### snapcraft.yaml
```shell
name: pi
version: 24-1
summary: Raspberry Pi gadget
description: |
Support files for booting Raspberry Pi.
This gadget snap supports the Raspberry Pi 2B, 3B, 3A+, 3B+, 4B, Compute
Module 3, and the Compute Module 3+ universally.
type: gadget
base: core24
build-base: devel
assumes: [kernel-assets]
platforms:
rpi:
build-on: arm64
build-for: arm64
rpi-amd64:
build-on: amd64
build-for: arm64
package-repositories:
- type: apt
ppa: snappy-dev/image
confinement: strict
grade: devel
parts:
gadget:
plugin: nil
source: .
override-build: |
set -x
# we only support arm64 for 24 for pi
BUILD_ARCH_TRIPLET=aarch64-linux-gnu
BUILD_SERIES=noble
BUILD_ARCH="$(dpkg-architecture -t $BUILD_ARCH_TRIPLET -q DEB_HOST_ARCH)"
# but only use the cross-compiling sources when actually cross compiling
# as otherwise its just safer to use the build environment - it offers
# much more flexibility.
if [ "$CRAFT_ARCH_TRIPLET_BUILD_ON" = "x86_64-linux-gnu" ] || [ -z "$CRAFT_ARCH_TRIPLET_BUILD_ON" ]; then
sed -i "/^deb/s/\bSERIES/$BUILD_SERIES/" ./helpers/cross-sources.list
sed -i "/^deb/s/\bARCH\b/$BUILD_ARCH/" ./helpers/cross-sources.list
OPTIONAL_ARGS="SERIES_HOST=\"$BUILD_SERIES\" SOURCES_HOST=\"./helpers/cross-sources.list\" SOURCES_D_HOST=\"./helpers\""
fi
make -C $CRAFT_PART_SRC core \
DESTDIR=${CRAFT_PART_INSTALL} \
SERIES="$BUILD_SERIES" \
ARCH="$BUILD_ARCH" \
${OPTIONAL_ARGS:-}
prime:
- boot-assets/*
- piboot.conf
build-packages:
- lsb-release
- dpkg-dev
- make
- gnupg
- dirmngr
slots:
bcm-gpio-0:
interface: gpio
number: 0
bcm-gpio-1:
interface: gpio
number: 1
bcm-gpio-2:
interface: gpio
number: 2
bcm-gpio-3:
interface: gpio
number: 3
bcm-gpio-4:
interface: gpio
number: 4
bcm-gpio-5:
interface: gpio
number: 5
bcm-gpio-6:
interface: gpio
number: 6
bcm-gpio-7:
interface: gpio
number: 7
bcm-gpio-8:
interface: gpio
number: 8
bcm-gpio-9:
interface: gpio
number: 9
bcm-gpio-10:
interface: gpio
number: 10
bcm-gpio-11:
interface: gpio
number: 11
bcm-gpio-12:
interface: gpio
number: 12
bcm-gpio-13:
interface: gpio
number: 13
bcm-gpio-14:
interface: gpio
number: 14
bcm-gpio-15:
interface: gpio
number: 15
bcm-gpio-16:
interface: gpio
number: 16
bcm-gpio-17:
interface: gpio
number: 17
bcm-gpio-18:
interface: gpio
number: 18
bcm-gpio-19:
interface: gpio
number: 19
bcm-gpio-20:
interface: gpio
number: 20
bcm-gpio-21:
interface: gpio
number: 21
bcm-gpio-22:
interface: gpio
number: 22
bcm-gpio-23:
interface: gpio
number: 23
bcm-gpio-24:
interface: gpio
number: 24
bcm-gpio-25:
interface: gpio
number: 25
bcm-gpio-26:
interface: gpio
number: 26
bcm-gpio-27:
interface: gpio
number: 27
i2c-0:
interface: i2c
path: /dev/i2c-0
i2c-1:
interface: i2c
path: /dev/i2c-1
i2c-2:
interface: i2c
path: /dev/i2c-2
i2c-3:
interface: i2c
path: /dev/i2c-3
i2c-4:
interface: i2c
path: /dev/i2c-4
i2c-5:
interface: i2c
path: /dev/i2c-5
i2c-6:
interface: i2c
path: /dev/i2c-6
bt-serial:
interface: serial-port
path: /dev/ttyAMA0
serial0:
interface: serial-port
path: /dev/ttyS0
serial1:
interface: serial-port
path: /dev/ttyS1
serial2:
interface: serial-port
path: /dev/ttyS2
serial3:
interface: serial-port
path: /dev/ttyS3
serial4:
interface: serial-port
path: /dev/ttyS4
serial5:
interface: serial-port
path: /dev/ttyS5
serial6:
interface: serial-port
path: /dev/ttyS6
serial7:
interface: serial-port
path: /dev/ttyS7
serial8:
interface: serial-port
path: /dev/ttyS8
serial9:
interface: serial-port
path: /dev/ttyS9
spidev0:
interface: spi
path: /dev/spidev0.0
spidev1:
interface: spi
path: /dev/spidev0.1
spidev1-0:
interface: spi
path: /dev/spidev1.0
spidev1-1:
interface: spi
path: /dev/spidev1.1
spidev2-0:
interface: spi
path: /dev/spidev2.0
spidev2-1:
interface: spi
path: /dev/spidev2.1
spidev3-0:
interface: spi
path: /dev/spidev3.0
spidev3-1:
interface: spi
path: /dev/spidev3.1
spidev4-0:
interface: spi
path: /dev/spidev4.0
spidev4-1:
interface: spi
path: /dev/spidev4.1
spidev5-0:
interface: spi
path: /dev/spidev5.0
spidev5-1:
interface: spi
path: /dev/spidev5.1
spidev6-0:
interface: spi
path: /dev/spidev6.0
spidev6-1:
interface: spi
path: /dev/spidev6.1
pwm0:
interface: pwm
chip-number: 0
channel: 0
pwm1:
interface: pwm
chip-number: 0
channel: 1
```
### Relevant log output
```shell
https://launchpadlibrarian.net/725096872/buildlog_snap_ubuntu_noble_arm64_pi-24_BUILDING.txt.gz
```
### Additional context
_No response_
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| stealth/space-bunny-alpha | — | closed resolved | Fixed in merged PR #4754 (commit 712626448) and released in Snapcraft 8.2.1: core24 remote builds now install GPG/dirmngr before configuring package repositories. | |
| stealth/space-bunny-alpha | — | closed resolved | Fixed in PR #4754 (commit 712626448), released in Snapcraft 8.2.1: core24 remote builds now install gpg/dirmngr before configuring package-repositories. Reporter confirmed the pi snap builds on LP. | |
| stealth/space-bunny-alpha | — | closed resolved | Fixed by merged PR #4754: core24 builds now install gpg and dirmngr before using package-repositories. The reporter confirmed pi-24 now builds on Launchpad. | |
| qwen/qwen3.6-35b-a3b | — | — | Fixed via PR #4754. Snapcraft now ensures dirmngr and gnupg are available during the package-repositories step for core24, resolving GPG keyserver failures when adding PPAs. Builds now succeed. | |
| qwen/qwen3.6-35b-a3b | — | — | Fixed via PR #4754. The package-repositories step failed with the core24 base due to missing dirmngr in the build environment. The update resolved the dependency handling, and the reporter confirmed builds now succeed. | |
| qwen/qwen3.6-35b-a3b | — | — | Fixed via PR #4754. The package-repositories PPA setup failed on core24 Launchpad builds due to missing dirmngr and gnupg. Required tools are now installed before repository configuration, resolving the build failure. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Fixed via PR #4754. GPG dependencies like dirmngr are now installed before processing package-repositories for core24 bases. The issue is resolved and builds succeed. |
Update history
No update history recorded yet.
Related work
-
Likely Fixed By:
canonical/snapcraft#4754
(confidence 100%)
Merged fix for installing gpg and dirmngr in core24 builds.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #4754 fix: install gpg and dirmngr in core24 builds | snapcraft | merged | Merged in Snapcraft 8.2.1 via #4754 (commit 712626448), installing gpg and dirmngr in core24 remote builds before using package-repositories. | |
| #4758 fix: use local keys for package-repos in core24 | snapcraft | merged | Merged PR #4758 (commit b8ff64b89) into hotfix/8.2, making core24 package-repositories use local signing keys; fixes issue #4743 where local key assets were ignored. | |
| #4743 Local key assets are not used in package-repositories for core24 | snapcraft | closed | Fixed in merged PR #4758 (commit b8ff64b89), enabling core24 package repositories to use local signing keys instead of only a keyserver. | |
| #2051567 Using core24 fails due to change in apt sources | snapcraft (launchpad) | closed | Fixed by snapcore/snapcraft#4551, which bumped craft-providers to 1.22.0; the reporter confirmed the fix on latest/edge. | |
| #4805 `version: git` does not work in core24 | snapcraft | closed | version: git failed on core24 because git was missing. Fixed by merging PR #5149 (commit c7d11ac65), which bundles a git binary as craft.git in $SNAP/libexec/snapcraft, with new spread tests. |