← Back to issue list

`package-repositories` fail with the core24 base due to missing packages

View original Github issue

Metadata

Project
snapcraft
Number
#4740
Type
issue
State
closed
Author
Meulengracht
Labels
Created
Updated
Closed

Current evaluation

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.

Suggested action:

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
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.
qwen3.6-35b-a3b-mtp-q6 Fixed via PR #4754 by ensuring required GPG dependencies like dirmngr are installed before processing apt package repositories on core24 bases. Builds now succeed.

Update history

No update history recorded yet.

Related issues

Issue Project State Summary Similarity
#4754 fix: install gpg and dirmngr in core24 builds snapcraft merged Merged to install gpg and dirmngr in core24 builds, fixing Launchpad dependency errors. The change replicates core22 behavior after bundling failed due to hardcoded paths. Approved by reviewers and passed CI.
75%