mirror of
https://git.launchpad.net/livecd-rootfs
synced 2025-02-23 03:11:12 +00:00
Address snap base regression after snap-tool removal
With the removal of snap-tool failures are seen in image builds that do not have the 'core' snap included by the seed. This is the case for the minimized subproject of the ubuntu-cpc project where lxd/core is removed. In that subproject, any binary hook which adds a snap that is based on 'core' will not add 'core' and fail 'snap debug validate-seed'. snap-tool included the following logic in the 'snap-tool info' when determining snap bases: # Have "base" initialized to something meaningful. if self.is_core_snap(): snap_data["snap"]["base"] = "" elif snap_data["snap"].get("base") is None: snap_data["snap"]["base"] = "core" The snap store does not return a base if the base is core which makes this necessary. This patch looks for the base in 'snap info' output and if none is found (and the snap is not snapd or core) it assumes the base is 'core' and installs it. This restores the behavior lost in the migration from snap-tool to snap cli.
This commit is contained in:
parent
bc3e962ee8
commit
d214127b9f
6
debian/changelog
vendored
6
debian/changelog
vendored
@ -1,3 +1,9 @@
|
||||
livecd-rootfs (2.647) focal; urgency=medium
|
||||
|
||||
* Address snap base regression after snap-tool removal
|
||||
|
||||
-- Robert C Jennings <robert.jennings@canonical.com> Tue, 25 Feb 2020 16:15:48 -0600
|
||||
|
||||
livecd-rootfs (2.646) focal; urgency=medium
|
||||
|
||||
* Pass --verbose to `snap info` so that it includes the base.
|
||||
|
@ -482,12 +482,16 @@ _snap_preseed() {
|
||||
return
|
||||
fi
|
||||
|
||||
# Pre-seed snap's base
|
||||
case $SNAP_NAME in
|
||||
snapd)
|
||||
# snapd is self-contained, ignore base
|
||||
;;
|
||||
core|core[0-9][0-9])
|
||||
# core and core## are self-contained, ignore base
|
||||
;;
|
||||
*)
|
||||
# Determine if and what core snap is needed
|
||||
# Determine which core snap is needed
|
||||
local snap_info
|
||||
|
||||
snap_info=$(snap info --verbose "${SNAP_NAME}")
|
||||
@ -499,11 +503,10 @@ _snap_preseed() {
|
||||
|
||||
local core_snap=$(echo "$snap_info" | grep '^base:' | awk '{print $2}')
|
||||
|
||||
# If $core_snap is not the empty string then SNAP itself is not a core
|
||||
# snap and we must additionally seed the core snap.
|
||||
if [ -n "$core_snap" ]; then
|
||||
_snap_preseed $CHROOT_ROOT $core_snap stable
|
||||
fi
|
||||
# If snap info does not list a base use 'core'
|
||||
core_snap=${core_snap:-core}
|
||||
|
||||
_snap_preseed $CHROOT_ROOT $core_snap stable
|
||||
;;
|
||||
esac
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user