Ver código fonte

include: calculate md5sum over sorted kernel config symbol list and incorperate it into the kernel metapackage version, make kmods depend on this specific version. The aim of this change is to invalidate kmods which are built against a different kernel config on the opkg metadata level. Manual copying and insmod of custom *.ko files, e.g. for development purpose, is still possible.

SVN-Revision: 29686
Jo-Philipp Wich 13 anos atrás
pai
commit
97af76a920
3 arquivos alterados com 7 adições e 2 exclusões
  1. 1 0
      include/kernel-defaults.mk
  2. 5 1
      include/kernel.mk
  3. 1 1
      package/kernel/Makefile

+ 1 - 0
include/kernel-defaults.mk

@@ -89,6 +89,7 @@ define Kernel/Configure/Default
 	$(call Kernel/SetInitramfs)
 	$(call Kernel/SetInitramfs)
 	-$(_SINGLE)$(MAKE) $(KERNEL_MAKEOPTS) oldconfig prepare scripts
 	-$(_SINGLE)$(MAKE) $(KERNEL_MAKEOPTS) oldconfig prepare scripts
 	rm -rf $(KERNEL_BUILD_DIR)/modules
 	rm -rf $(KERNEL_BUILD_DIR)/modules
+	$(SH_FUNC) grep '=[ym]' $(LINUX_DIR)/.config | LC_ALL=C sort | md5s > $(LINUX_DIR)/.vermagic
 endef
 endef
 
 
 define Kernel/CompileModules/Default
 define Kernel/CompileModules/Default

+ 5 - 1
include/kernel.mk

@@ -13,6 +13,7 @@ ifeq ($(DUMP),1)
   KERNEL?=<KERNEL>
   KERNEL?=<KERNEL>
   BOARD?=<BOARD>
   BOARD?=<BOARD>
   LINUX_VERSION?=<LINUX_VERSION>
   LINUX_VERSION?=<LINUX_VERSION>
+  LINUX_VERMAGIC?=<LINUX_VERMAGIC>
 else
 else
   ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
   ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
     export GCC_HONOUR_COPTS=s
     export GCC_HONOUR_COPTS=s
@@ -35,6 +36,9 @@ else
   KERNEL_BUILD_DIR ?= $(BUILD_DIR_BASE)/linux-$(BOARD)$(if $(SUBTARGET),_$(SUBTARGET))$(if $(BUILD_SUFFIX),_$(BUILD_SUFFIX))
   KERNEL_BUILD_DIR ?= $(BUILD_DIR_BASE)/linux-$(BOARD)$(if $(SUBTARGET),_$(SUBTARGET))$(if $(BUILD_SUFFIX),_$(BUILD_SUFFIX))
   LINUX_DIR ?= $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)
   LINUX_DIR ?= $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)
 
 
+  LINUX_VERMAGIC:=$(strip $(shell cat $(LINUX_DIR)/.vermagic 2>/dev/null))
+  LINUX_VERMAGIC:=$(if $(LINUX_VERMAGIC),$(LINUX_VERMAGIC),unknown)
+
   LINUX_UNAME_VERSION:=$(if $(word 3,$(subst ., ,$(KERNEL_BASE))),$(KERNEL_BASE),$(KERNEL_BASE).0)
   LINUX_UNAME_VERSION:=$(if $(word 3,$(subst ., ,$(KERNEL_BASE))),$(KERNEL_BASE),$(KERNEL_BASE).0)
   ifneq ($(findstring -rc,$(LINUX_VERSION)),)
   ifneq ($(findstring -rc,$(LINUX_VERSION)),)
     LINUX_UNAME_VERSION:=$(LINUX_UNAME_VERSION)-$(strip $(lastword $(subst -, ,$(LINUX_VERSION))))
     LINUX_UNAME_VERSION:=$(LINUX_UNAME_VERSION)-$(strip $(lastword $(subst -, ,$(LINUX_VERSION))))
@@ -130,7 +134,7 @@ define KernelPackage
     SECTION:=kernel
     SECTION:=kernel
     CATEGORY:=Kernel modules
     CATEGORY:=Kernel modules
     DESCRIPTION:=$(DESCRIPTION)
     DESCRIPTION:=$(DESCRIPTION)
-    EXTRA_DEPENDS:=kernel (=$(LINUX_VERSION)-$(LINUX_RELEASE))
+    EXTRA_DEPENDS:=kernel (=$(LINUX_VERSION)-$(LINUX_RELEASE)-$(LINUX_VERMAGIC))
     VERSION:=$(LINUX_VERSION)$(if $(PKG_VERSION),+$(PKG_VERSION))-$(if $(PKG_RELEASE),$(PKG_RELEASE),$(LINUX_RELEASE))
     VERSION:=$(LINUX_VERSION)$(if $(PKG_VERSION),+$(PKG_VERSION))-$(if $(PKG_RELEASE),$(PKG_RELEASE),$(LINUX_RELEASE))
     $(call KernelPackage/$(1))
     $(call KernelPackage/$(1))
     $(call KernelPackage/$(1)/$(BOARD))
     $(call KernelPackage/$(1)/$(BOARD))

+ 1 - 1
package/kernel/Makefile

@@ -35,7 +35,7 @@ define Package/kernel
   CATEGORY:=Kernel
   CATEGORY:=Kernel
   DEFAULT:=y
   DEFAULT:=y
   TITLE:=Virtual kernel package
   TITLE:=Virtual kernel package
-  VERSION:=$(LINUX_VERSION)-$(LINUX_RELEASE)
+  VERSION:=$(LINUX_VERSION)-$(LINUX_RELEASE)-$(LINUX_VERMAGIC)
   URL:=http://www.kernel.org/
   URL:=http://www.kernel.org/
 endef
 endef