From c676934e88034d7ca523729713a0257c0c7b1930 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 20 Mar 2015 01:34:02 +0100 Subject: [PATCH] build: don't enable all kernel modules in the general OpenWrt .config With this change, there are two OpenWrt config files: one for the packages actually used by Gluon, and one with all kernel modules enabled (like it was since we removed the static kernel configs). The config with all kernel modules is only used to generate the kernel configuration (so it is compatible with the upstream kernel). This should bring the build times back to what they were before the static configs were removed. --- Makefile | 19 +++++++++++++++---- include/Makefile.target | 15 ++++++++++++++- include/config | 2 -- include/gluon.mk | 2 ++ 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index ba07ae00..4999ff1e 100644 --- a/Makefile +++ b/Makefile @@ -183,6 +183,9 @@ gluon-tools: FORCE +$(GLUONMAKE_EARLY) tools/sed/install +$(GLUONMAKE_EARLY) package/lua/host/install +scripts/config/conf: + @$(_SINGLE)$(SUBMAKE) -s -C scripts/config conf CC="$(HOSTCC_WRAPPER)" + prepare-tmpinfo: FORCE mkdir -p tmp/info $(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f include/scan.mk SCAN_TARGET="packageinfo" SCAN_DIR="package" SCAN_NAME="package" SCAN_DEPS="$(TOPDIR)/include/package*.mk $(TOPDIR)/overlay/*/*.mk" SCAN_EXTRA="" @@ -191,7 +194,9 @@ prepare-tmpinfo: FORCE f=tmp/.$${type}info; t=tmp/.config-$${type}.in; \ [ "$$t" -nt "$$f" ] || ./scripts/metadata.pl $${type}_config "$$f" > "$$t" || { rm -f "$$t"; echo "Failed to build $$t"; false; break; }; \ done + [ tmp/.config-feeds.in -nt tmp/.packagefeeds ] || ./scripts/feeds feed_config > tmp/.config-feeds.in ./scripts/metadata.pl package_mk tmp/.packageinfo > tmp/.packagedeps || { rm -f tmp/.packagedeps; false; } + ./scripts/metadata.pl package_feeds tmp/.packageinfo > tmp/.packagefeeds || { rm -f tmp/.packagefeeds; false; } touch $(TOPDIR)/tmp/.build feeds: FORCE @@ -201,7 +206,7 @@ feeds: FORCE . $(GLUONDIR)/modules && for feed in $$GLUON_FEEDS; do ln -s ../../../packages/$$feed $(TOPDIR)/package/feeds/$$feed; done +$(GLUONMAKE_EARLY) prepare-tmpinfo -config: FORCE +config: scripts/config/conf FORCE +$(GLUONMAKE) prepare-tmpinfo ( \ cat $(GLUONDIR)/include/config $(GLUONDIR)/targets/$(GLUON_TARGET)/config; \ @@ -209,8 +214,15 @@ config: FORCE | sed -e 's/ /\n/g'; \ echo '$(patsubst %,CONFIG_GLUON_LANG_%=y,$(GLUON_LANGS))' \ | sed -e 's/ /\n/g'; \ - ) > .config - +$(NO_TRACE_MAKE) defconfig OPENWRT_BUILD=0 + ) > $(BOARD_BUILDDIR)/config.tmp + scripts/config/conf --defconfig=$(BOARD_BUILDDIR)/config.tmp Config.in + mv .config $(BOARD_BUILDDIR)/config + + echo 'CONFIG_ALL_KMODS=y' >> $(BOARD_BUILDDIR)/config.tmp + scripts/config/conf --defconfig=$(BOARD_BUILDDIR)/config.tmp Config.in + mv .config $(BOARD_BUILDDIR)/config-allmods + + cp $(BOARD_BUILDDIR)/config .config prepare-target: FORCE rm $(GLUON_OPENWRTDIR)/tmp || true @@ -299,7 +311,6 @@ PROFILE_BUILDDIR = $(BOARD_BUILDDIR)/$(PROFILE) PROFILE_KDIR = $(PROFILE_BUILDDIR)/kernel BIN_DIR = $(PROFILE_BUILDDIR)/images -TMP_DIR = $(PROFILE_BUILDDIR)/tmp TARGET_DIR = $(PROFILE_BUILDDIR)/root PREPARED_RELEASE = $$(cat $(gluon_prepared_stamp)) diff --git a/include/Makefile.target b/include/Makefile.target index f2b898da..19370e52 100644 --- a/include/Makefile.target +++ b/include/Makefile.target @@ -1,5 +1,18 @@ +# code adjusted from openwrt/include/kernel-defaults.mk + override define Kernel/Configure - $(call Kernel/Configure/Default) + $(LINUX_CONF_CMD) > $(LINUX_DIR)/.config.target +# copy CONFIG_KERNEL_* settings over to .config.target + awk '/^(#[[:space:]]+)?CONFIG_KERNEL/{sub("CONFIG_KERNEL_","CONFIG_");print}' $(BOARD_BUILDDIR)/config-allmods >> $(LINUX_DIR)/.config.target + echo "# CONFIG_KALLSYMS_EXTRA_PASS is not set" >> $(LINUX_DIR)/.config.target + echo "# CONFIG_KALLSYMS_ALL is not set" >> $(LINUX_DIR)/.config.target + echo "# CONFIG_KALLSYMS_UNCOMPRESSED is not set" >> $(LINUX_DIR)/.config.target + echo "# CONFIG_KPROBES is not set" >> $(LINUX_DIR)/.config.target + $(SCRIPT_DIR)/metadata.pl kconfig $(TMP_DIR)/.packageinfo $(BOARD_BUILDDIR)/config-allmods > $(LINUX_DIR)/.config.override + $(SCRIPT_DIR)/kconfig.pl 'm+' '+' $(LINUX_DIR)/.config.target /dev/null $(LINUX_DIR)/.config.override > $(LINUX_DIR)/.config + $(call Kernel/SetNoInitramfs) + rm -rf $(KERNEL_BUILD_DIR)/modules + $(_SINGLE) [ -d $(LINUX_DIR)/user_headers ] || $(MAKE) $(KERNEL_MAKEOPTS) INSTALL_HDR_PATH=$(LINUX_DIR)/user_headers headers_install cp $(GLUONDIR)/targets/$(GLUON_TARGET)/vermagic $(LINUX_DIR)/.vermagic endef diff --git a/include/config b/include/config index 8a74d047..ac754391 100644 --- a/include/config +++ b/include/config @@ -1,5 +1,3 @@ -CONFIG_ALL_KMODS=y - CONFIG_IMAGEOPT=y # CONFIG_PER_FEED_REPO is not set diff --git a/include/gluon.mk b/include/gluon.mk index e0c6b49b..88db6f42 100644 --- a/include/gluon.mk +++ b/include/gluon.mk @@ -14,6 +14,8 @@ export GLUONDIR GLUON_SITEDIR GLUON_SITE_CONFIG GLUON_IMAGEDIR GLUON_BUILDDIR BOARD_BUILDDIR = $(GLUON_BUILDDIR)/$(GLUON_TARGET) BOARD_KDIR = $(BOARD_BUILDDIR)/kernel +export BOARD_BUILDDIR + GLUON_OPENWRTDIR = $(BOARD_BUILDDIR)/openwrt