[PATCH v2] deb to snap: recurse down to find the real kernel image package, and chek its version

Paolo Pisati paolo.pisati at canonical.com
Wed Nov 15 16:46:14 UTC 2017


Signed-off-by: Paolo Pisati <paolo.pisati at canonical.com>
---
 Makefile | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index dad3156..409bbc3 100644
--- a/Makefile
+++ b/Makefile
@@ -8,9 +8,12 @@ ifeq "$(strip $(KERNEL))" ""
 $(error KERNEL package name is missing, abort)
 endif
 
+ABI := $(shell echo $(SNAPCRAFT_PROJECT_VERSION) | cut -f1-3 -d".")
+
 # rewriting variables passed from the outside environment doesn't work in LP,
 # so use KERNELDEB as a temporary local variable to hold the kernel pkg name
 KERNELDEB := $(KERNEL)
+KERNELPRE := linux-image-$(ABI)
 
 # linux-pc-image is a meta package used to indicate either
 # linux-signed-image-generic or linux-image-generic, depending on the building
@@ -18,6 +21,7 @@ KERNELDEB := $(KERNEL)
 ifneq (,$(findstring linux-pc-image,$(KERNELDEB)))
 ifneq (,$(findstring amd64,$(DPKG_ARCH)))
 KERNELDEB := $(subst linux-pc-image,linux-signed-image-generic,$(KERNELDEB))
+KERNELPRE := linux-signed-image-$(ABI)
 else ifneq (,$(findstring i386,$(DPKG_ARCH)))
 KERNELDEB := $(subst linux-pc-image,linux-image-generic,$(KERNELDEB))
 else
@@ -44,6 +48,7 @@ Pin-Priority: 700
 endef
 export APTPREF
 
+versioncheck: KIMGDEB = $(shell chroot chroot apt-cache depends $(KERNELDEB) | awk '/$(KERNELPRE)/ {print $$2}')
 install : KVERS = $(shell ls -1 chroot/boot/vmlinuz-*| tail -1 |sed 's/^.*vmlinuz-//;s/.efi.signed$$//')
 
 all:
@@ -68,7 +73,7 @@ all:
 	umount chroot/sys
 	umount chroot/proc
 
-install:
+install: versioncheck
 	mkdir -p $(DESTDIR)/lib $(DESTDIR)/meta $(DESTDIR)/firmware $(DESTDIR)/modules
 	if [ -f chroot/boot/vmlinu?-*.signed ]; then \
 	  mv chroot/boot/vmlinu?-*.signed $(DESTDIR)/kernel.img; \
@@ -115,3 +120,16 @@ install:
 	cd $(DESTDIR); ln -s kernel.img vmlinuz-$(KVERS)
 	cd $(DESTDIR); ln -s kernel.img vmlinuz
 	cd $(DESTDIR); ln -s initrd.img initrd.img-$(KVERS)
+
+versioncheck:
+	{ \
+	set -e; \
+	echo $(KIMGDEB); \
+	KIMGVER="$$(dpkg --root=chroot -l | awk '/$(KIMGDEB)/ {print $$3}')"; \
+	echo $$KIMGVER; \
+	[ ! $$KIMGVER ] && echo "Unable to extract KIMGVER, exit" && exit 1; \
+	if [ $$KIMGVER != $(SNAPCRAFT_PROJECT_VERSION) ]; then \
+	  echo "Version mismatch:\nInstalled: $$KIMGVER Requested: $(SNAPCRAFT_PROJECT_VERSION)"; \
+	  exit 1; \
+	fi; \
+	}
-- 
2.7.4





More information about the kernel-team mailing list