summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2012-01-08 15:23:11 +0000
committerJo-Philipp Wich <jow@openwrt.org>2012-01-08 15:23:11 +0000
commit97af76a92047a9034cd394e08c715949eea68837 (patch)
treebcc402400fe3b940c1eca1c4b18176fe382866ee
parent2d17b67c28e8b1279b53c09881259cd819336fab (diff)
downloadmaster-31e0f0ae-97af76a92047a9034cd394e08c715949eea68837.tar.gz
master-31e0f0ae-97af76a92047a9034cd394e08c715949eea68837.tar.bz2
master-31e0f0ae-97af76a92047a9034cd394e08c715949eea68837.zip
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
-rw-r--r--include/kernel-defaults.mk1
-rw-r--r--include/kernel.mk6
-rw-r--r--package/kernel/Makefile2
3 files changed, 7 insertions, 2 deletions
diff --git a/include/kernel-defaults.mk b/include/kernel-defaults.mk
index 5fd27ae7cd..52ce03776c 100644
--- a/include/kernel-defaults.mk
+++ b/include/kernel-defaults.mk
@@ -89,6 +89,7 @@ define Kernel/Configure/Default
$(call Kernel/SetInitramfs)
-$(_SINGLE)$(MAKE) $(KERNEL_MAKEOPTS) oldconfig prepare scripts
rm -rf $(KERNEL_BUILD_DIR)/modules
+ $(SH_FUNC) grep '=[ym]' $(LINUX_DIR)/.config | LC_ALL=C sort | md5s > $(LINUX_DIR)/.vermagic
endef
define Kernel/CompileModules/Default
diff --git a/include/kernel.mk b/include/kernel.mk
index 1af072d6bb..c0d8ef8a23 100644
--- a/include/kernel.mk
+++ b/include/kernel.mk
@@ -13,6 +13,7 @@ ifeq ($(DUMP),1)
KERNEL?=<KERNEL>
BOARD?=<BOARD>
LINUX_VERSION?=<LINUX_VERSION>
+ LINUX_VERMAGIC?=<LINUX_VERMAGIC>
else
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
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))
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)
ifneq ($(findstring -rc,$(LINUX_VERSION)),)
LINUX_UNAME_VERSION:=$(LINUX_UNAME_VERSION)-$(strip $(lastword $(subst -, ,$(LINUX_VERSION))))
@@ -130,7 +134,7 @@ define KernelPackage
SECTION:=kernel
CATEGORY:=Kernel modules
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))
$(call KernelPackage/$(1))
$(call KernelPackage/$(1)/$(BOARD))
diff --git a/package/kernel/Makefile b/package/kernel/Makefile
index 13a305d7a1..e094c601ef 100644
--- a/package/kernel/Makefile
+++ b/package/kernel/Makefile
@@ -35,7 +35,7 @@ define Package/kernel
CATEGORY:=Kernel
DEFAULT:=y
TITLE:=Virtual kernel package
- VERSION:=$(LINUX_VERSION)-$(LINUX_RELEASE)
+ VERSION:=$(LINUX_VERSION)-$(LINUX_RELEASE)-$(LINUX_VERMAGIC)
URL:=http://www.kernel.org/
endef