summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>2012-01-08 15:23:11 +0000
committerjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>2012-01-08 15:23:11 +0000
commit6483a9f7391ac1844e702c8c00fc2e8a85a1caf1 (patch)
tree283cc106e88a9c1f4adde1d7f45c847b09a98c67
parent4cd49acd61e7810eca89b87971c568417cb701e7 (diff)
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. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@29686 3c298f89-4303-0410-b956-a3cf2f4a3e73
-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 5fd27ae7c..52ce03776 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 1af072d6b..c0d8ef8a2 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 13a305d7a..e094c601e 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