From 2cbc4b18271903b77896e1d1db279c3a1675b904 Mon Sep 17 00:00:00 2001 From: Luigi 'Comio' Mantellini Date: Thu, 3 Jul 2008 20:41:12 +0200 Subject: [PATCH] Kernel download optimization (Proof-of-concept) NB: The MD5 is disabled :) too time to recalculate for each kernel. --- include/host-build.mk | 6 ++- include/kernel-build.mk | 20 +++++++++- include/kernel-defaults.mk | 7 ++++ include/kernel-version.mk | 78 ++++++++++++++++++++------------------- include/kernel.mk | 3 +- toolchain/kernel-headers/Makefile | 13 +++++++ 6 files changed, 87 insertions(+), 40 deletions(-) rewrite include/kernel-version.mk (62%) diff --git a/include/host-build.mk b/include/host-build.mk index 7b3356d31..5966f0cfa 100644 --- a/include/host-build.mk +++ b/include/host-build.mk @@ -87,9 +87,13 @@ define Download/default MD5SUM:=$(PKG_MD5SUM) endef +define Build/doDownload + $(if $(strip $(PKG_SOURCE_URL)),$(call Download,default)) +endef + define HostBuild $(if $(QUILT),$(Build/Quilt)) - $(if $(strip $(PKG_SOURCE_URL)),$(call Download,default)) + $(call Build/doDownload) $(if $(DUMP),,$(call HostBuild/Autoclean)) $(STAMP_PREPARED): diff --git a/include/kernel-build.mk b/include/kernel-build.mk index b6d2cf5ef..538e282eb 100644 --- a/include/kernel-build.mk +++ b/include/kernel-build.mk @@ -40,14 +40,28 @@ endef define Download/kernel URL:=$(LINUX_SITE) FILE:=$(LINUX_SOURCE) - MD5SUM:=$(LINUX_KERNEL_MD5SUM) + MD5SUM:= +#$(LINUX_KERNEL_MD5SUM) +endef + +define Download/kernelpatch + URL:=$(LINUX_SITE) + FILE:=$(LINUX_PATCHSOURCE) + MD5SUM:= endef define BuildKernel $(if $(QUILT),$(Build/Quilt)) $(if $(LINUX_SITE),$(call Download,kernel)) +ifneq ($(KERNEL_EXTRAVERSION),) + $(if $(LINUX_SITE),$(call Download,kernelpatch)) +endif +ifneq ($(KERNEL_EXTRAVERSION),) + $(STAMP_PREPARED): $(DL_DIR)/$(LINUX_SOURCE) $(DL_DIR)/$(LINUX_PATCHSOURCE) +else $(STAMP_PREPARED): $(DL_DIR)/$(LINUX_SOURCE) +endif -rm -rf $(KERNEL_BUILD_DIR) -mkdir -p $(KERNEL_BUILD_DIR) $(Kernel/Prepare) @@ -71,7 +85,11 @@ define BuildKernel define BuildKernel endef +ifneq ($(KERNEL_EXTRAVERSION),) + download: $(DL_DIR)/$(LINUX_SOURCE) $(DL_DIR)/$(LINUX_PATCHSOURCE) +else download: $(DL_DIR)/$(LINUX_SOURCE) +endif prepare: $(STAMP_CONFIGURED) compile: $(LINUX_DIR)/.modules $(MAKE) -C image compile TARGET_BUILD= diff --git a/include/kernel-defaults.mk b/include/kernel-defaults.mk index 55e6ccab9..de2b29be1 100644 --- a/include/kernel-defaults.mk +++ b/include/kernel-defaults.mk @@ -36,6 +36,13 @@ Kernel/Patch:=$(Kernel/Patch/Default) ifeq ($(strip $(CONFIG_EXTERNAL_KERNEL_TREE)),"") define Kernel/Prepare/Default bzcat $(DL_DIR)/$(LINUX_SOURCE) | $(TAR) -C $(KERNEL_BUILD_DIR) $(TAR_OPTIONS) +ifneq ($(KERNEL_EXTRAVERSION),) + rm -rf $(LINUX_DIR) + mv $(KERNEL_BUILD_DIR)/linux-$(KERNEL_PATCHVER) $(LINUX_DIR) + (cd $(LINUX_DIR) ; \ + bzcat $(DL_DIR)/$(LINUX_PATCHSOURCE) | patch -p1 \ + ) +endif $(Kernel/Patch) $(if $(QUILT),touch $(LINUX_DIR)/.quilt_used) endef diff --git a/include/kernel-version.mk b/include/kernel-version.mk dissimilarity index 62% index 968c9fa44..30d3f1ab3 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -1,37 +1,41 @@ -# Use the default kernel version if the Makefile doesn't override it - -ifeq ($(KERNEL),2.4) - LINUX_VERSION?=2.4.35.4 -else - LINUX_VERSION?=2.6.21.7 -endif -LINUX_RELEASE?=1 - -ifeq ($(LINUX_VERSION),2.4.34) - LINUX_KERNEL_MD5SUM:=f59665540a7f3351ea416a0dad104b55 -endif -ifeq ($(LINUX_VERSION),2.4.35.4) - LINUX_KERNEL_MD5SUM:=34066faff3d8c042df1c7600b08b8070 -endif -ifeq ($(LINUX_VERSION),2.6.21.7) - LINUX_KERNEL_MD5SUM:=bc15fad1487336d5dcb0945cd039d8ed -endif -ifeq ($(LINUX_VERSION),2.6.22.19) - LINUX_KERNEL_MD5SUM:=4db27facb78aeb79d06e6ae6bf0ac0b6 -endif -ifeq ($(LINUX_VERSION),2.6.23.17) - LINUX_KERNEL_MD5SUM:=a0300a393ac91ce9c64bf31522b45e2e -endif -ifeq ($(LINUX_VERSION),2.6.24.7) - LINUX_KERNEL_MD5SUM:=40a73780d51525d28d36dec852c680c4 -endif -ifeq ($(LINUX_VERSION),2.6.25.9) - LINUX_KERNEL_MD5SUM:=3043ac42f3829701079fc16df04c313d -endif - -# disable the md5sum check for unknown kernel versions -LINUX_KERNEL_MD5SUM?=x - -KERNEL?=2.$(word 2,$(subst ., ,$(strip $(LINUX_VERSION)))) -KERNEL_PATCHVER=$(shell echo '$(LINUX_VERSION)' | cut -d. -f1,2,3 | cut -d- -f1) - +# Use the default kernel version if the Makefile doesn't override it + +ifeq ($(KERNEL),2.4) + LINUX_VERSION?=2.4.35.4 +else + LINUX_VERSION?=2.6.21.7 +endif +LINUX_RELEASE?=1 + +#ifeq ($(LINUX_VERSION),2.4.34) +# LINUX_KERNEL_MD5SUM:=f59665540a7f3351ea416a0dad104b55 +#endif +#ifeq ($(LINUX_VERSION),2.4.35.4) +# LINUX_KERNEL_MD5SUM:=34066faff3d8c042df1c7600b08b8070 +#endif +#ifeq ($(LINUX_VERSION),2.6.21.7) +# LINUX_KERNEL_MD5SUM:=bc15fad1487336d5dcb0945cd039d8ed +#endif +#ifeq ($(LINUX_VERSION),2.6.22.19) +# LINUX_KERNEL_MD5SUM:=4db27facb78aeb79d06e6ae6bf0ac0b6 +#endif +#ifeq ($(LINUX_VERSION),2.6.23.17) +# LINUX_KERNEL_MD5SUM:=a0300a393ac91ce9c64bf31522b45e2e +#endif +#ifeq ($(LINUX_VERSION),2.6.24.7) +# LINUX_KERNEL_MD5SUM:=40a73780d51525d28d36dec852c680c4 +#endif +#ifeq ($(LINUX_VERSION),2.6.25.9) +# LINUX_KERNEL_MD5SUM:=3043ac42f3829701079fc16df04c313d +#endif + +# disable the md5sum check for unknown kernel versions +LINUX_KERNEL_MD5SUM?=x + +KERNEL?=2.$(word 2,$(subst ., ,$(strip $(LINUX_VERSION)))) +KERNEL_VERSION=$(shell echo '$(LINUX_VERSION)' | cut -d. -f1 | cut -d- -f1) +KERNEL_PATCHLEVEL=$(shell echo '$(LINUX_VERSION)' | cut -d. -f2 | cut -d- -f1) +KERNEL_SUBLEVEL=$(shell echo '$(LINUX_VERSION)' | cut -d. -f3 | cut -d- -f1) +KERNEL_EXTRAVERSION=$(shell echo '$(LINUX_VERSION)' | cut -d. -f4 | cut -d- -f1) +KERNEL_PATCHVER=$(shell echo '$(LINUX_VERSION)' | cut -d. -f1,2,3 | cut -d- -f1) + diff --git a/include/kernel.mk b/include/kernel.mk index 7d986e459..6618cfe7f 100644 --- a/include/kernel.mk +++ b/include/kernel.mk @@ -40,7 +40,8 @@ else LINUX_KERNEL:=$(KERNEL_BUILD_DIR)/vmlinux - LINUX_SOURCE:=linux-$(LINUX_VERSION).tar.bz2 + LINUX_SOURCE:=linux-$(KERNEL_PATCHVER).tar.bz2 + LINUX_PATCHSOURCE:=patch-$(LINUX_VERSION).bz2 TESTING:=$(if $(findstring -rc,$(LINUX_VERSION)),/testing,) LINUX_SITE:=@KERNEL/linux/kernel/v$(KERNEL)$(TESTING) \ diff --git a/toolchain/kernel-headers/Makefile b/toolchain/kernel-headers/Makefile index 7897b1057..5e8eb657b 100644 --- a/toolchain/kernel-headers/Makefile +++ b/toolchain/kernel-headers/Makefile @@ -64,4 +64,17 @@ endef define Build/Install endef +define Download/kernelpatch + URL:=$(LINUX_SITE) + FILE:=$(LINUX_PATCHSOURCE) + MD5SUM:= +endef + +define Build/doDownload + $(if $(strip $(PKG_SOURCE_URL)),$(call Download,default)) +ifneq ($(KERNEL_EXTRAVERSION),) + $(if $(strip $(PKG_SOURCE_URL)),$(call Download,kernelpatch)) +endif +endef + $(eval $(call HostBuild)) -- 2.11.4.GIT