[Buildroot] [git commit] package/linux-backports: switch to using the kernel-module infra

Thomas Petazzoni thomas.petazzoni at free-electrons.com
Sun Jul 26 13:41:01 UTC 2015


commit: http://git.buildroot.net/buildroot/commit/?id=e5a5a58aa7d9d60e7f03467edd3bd31a00213795
branch: http://git.buildroot.net/buildroot/commit/?id=refs/heads/master

linux-backports manually generates its autoconf.h header, which needs a
.config file.

Using a pre- or post-configure hook does not really work, because
generating that file touches the .config, and thus our .stamp files ar
enot longer properly time-ordered and running a subsequent make would
incorrectly believe it has to rebuild linux-backports.

So, even though this is not a fixup proper, we generate that file from
the _KCONFIG_FIXUP_CMDS to ensure the stampt file is created after we
touch .config.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
Cc: Petr Vorel <petr.vorel at gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
Reviewed-by: Romain Naour <romain.naour at openwide.fr>
Tested-by: Romain Naour <romain.naour at openwide.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
---
 package/linux-backports/linux-backports.mk |   48 +++++++++++++++++----------
 1 files changed, 30 insertions(+), 18 deletions(-)

diff --git a/package/linux-backports/linux-backports.mk b/package/linux-backports/linux-backports.mk
index e4ac9f4..44ac7e7 100644
--- a/package/linux-backports/linux-backports.mk
+++ b/package/linux-backports/linux-backports.mk
@@ -11,33 +11,44 @@ LINUX_BACKPORTS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/projects/backports/stab
 LINUX_BACKPORTS_LICENSE = GPLv2
 LINUX_BACKPORTS_LICENSE_FILES = COPYING
 
-LINUX_BACKPORTS_DEPENDENCIES = linux
-
-LINUX_BACKPORTS_MAKE_OPTS = \
-	$(LINUX_MAKE_FLAGS) \
-	KLIB_BUILD=$(LINUX_DIR) \
-	KLIB=$(TARGET_DIR)
-
 ifeq ($(BR2_PACKAGE_LINUX_BACKPORTS_USE_DEFCONFIG),y)
 LINUX_BACKPORTS_KCONFIG_FILE = $(LINUX_BACKPORTS_DIR)/defconfigs/$(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_DEFCONFIG))
 else ifeq ($(BR2_PACKAGE_LINUX_BACKPORTS_USE_CUSTOM_CONFIG),y)
 LINUX_BACKPORTS_KCONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_CUSTOM_CONFIG_FILE))
 endif
 
-define LINUX_BACKPORTS_BUILD_CMDS
-	$(TARGET_MAKE_ENV) $(MAKE) $(LINUX_BACKPORTS_MAKE_OPTS) -C $(@D)
-endef
-
-define LINUX_BACKPORTS_INSTALL_TARGET_CMDS
-	$(TARGET_MAKE_ENV) $(MAKE) $(LINUX_BACKPORTS_MAKE_OPTS) \
-		-C $(LINUX_DIR) M=$(@D) \
-		INSTALL_MOD_DIR=backports \
-		modules_install
-endef
-
 LINUX_BACKPORTS_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_CONFIG_FRAGMENT_FILES))
 LINUX_BACKPORTS_KCONFIG_OPTS = $(LINUX_BACKPORTS_MAKE_OPTS)
 
+# linux-backports' build system expects the config options to be present
+# in the environment, and it is so when using their custom buildsystem,
+# because they are set in the main Makefile, which then calls a second
+# Makefile.
+#
+# In our case, we do not use that first Makefile. So, we parse the
+# .config file, filter-out comment lines and put the rest as command
+# line variables.
+#
+# LINUX_BACKPORTS_MAKE_OPTS is used by the kconfig-package infra, while
+# LINUX_BACKPORTS_MODULE_MAKE_OPTS is used by the kernel-module infra.
+#
+LINUX_BACKPORTS_MAKE_OPTS = \
+	BACKPORT_DIR=$(@D) \
+	KLIB_BUILD=$(LINUX_DIR) \
+	KLIB=$(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED) \
+	INSTALL_MOD_DIR=backports \
+	`sed -r -e '/^\#/d;' $(@D)/.config`
+
+LINUX_BACKPORTS_MODULE_MAKE_OPTS = $(LINUX_BACKPORTS_MAKE_OPTS)
+
+# This file is not automatically generated by 'oldconfig' that we use in
+# the kconfig-package infrastructure. In the linux buildsystem, it is
+# generated by running silentoldconfig, but that's not the case for
+# linux-backports: it uses a hand-crafted rule to generate that file.
+define LINUX_BACKPORTS_KCONFIG_FIXUP_CMDS
+	$(MAKE) -C $(@D) $(LINUX_BACKPORTS_MAKE_OPTS) backport-include/backport/autoconf.h
+endef
+
 # Checks to give errors that the user can understand
 ifeq ($(BR_BUILDING),y)
 
@@ -55,6 +66,7 @@ endif
 
 endif # BR_BUILDING
 
+$(eval $(kernel-module))
 $(eval $(kconfig-package))
 
 # linux-backports' own .config file needs options from the kernel's own


More information about the buildroot mailing list