[openwrt/openwrt] build: fix regression for kernels < 5.10

LEDE Commits lede-commits at lists.infradead.org
Tue May 25 10:46:21 PDT 2021


aparcar pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/54070a1f5cf355e908425d4a5787bb05bee22f25

commit 54070a1f5cf355e908425d4a5787bb05bee22f25
Author: Sebastian Kemper <sebastian_ml at gmx.net>
AuthorDate: Tue Apr 13 14:22:20 2021 +0200

    build: fix regression for kernels < 5.10
    
    This fixes a regression introduced with commit
    5ed1e5140a80558ab47fd70410ae3242bed5becf ("build: build kernel image
    before building modules/packages").
    
    Before this commit the make target would always include "modules",
    resulting in a MODPOST and a complete Module.symvers file. Since this
    commit a MODPOST of the kernel modules is not guaranteed for kernels <
    5.10. This results in some broken SDKs in which external packages that
    depend on exported symbols from kernel modules fail to compile.
    
    Adding "modules" back to the calls to the CompileImage defines fixes the
    regression. For kernels > 5.10 this is not needed, but it doesn't cause
    any harm either.
    
    Tested with kernels 5.4.x and 5.10.x.
    
    Signed-off-by: Sebastian Kemper <sebastian_ml at gmx.net>
---
 include/kernel-defaults.mk | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/include/kernel-defaults.mk b/include/kernel-defaults.mk
index e71746f651..f2864d6a10 100644
--- a/include/kernel-defaults.mk
+++ b/include/kernel-defaults.mk
@@ -149,12 +149,17 @@ define Kernel/CopyImage
 	}
 endef
 
+# Always add "modules" so a proper Module.symvers file is written that
+# also contains symbols from the kernel modules. Without these symbols
+# external packages that depend on exported symbols from kernel modules
+# will fail to build.
 define Kernel/CompileImage/Default
 	rm -f $(TARGET_DIR)/init
-	+$(KERNEL_MAKE) $(KERNEL_MAKEOPTS_IMAGE) $(if $(KERNELNAME),$(KERNELNAME),all)
+	+$(KERNEL_MAKE) $(KERNEL_MAKEOPTS_IMAGE) $(if $(KERNELNAME),$(KERNELNAME),all) modules
 	$(call Kernel/CopyImage)
 endef
 
+# Here as well, always add "modules", see comment above.
 ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
 define Kernel/CompileImage/Initramfs
 	$(call Kernel/Configure/Initramfs)
@@ -175,7 +180,7 @@ endif
 # ?	$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_LZ4),)
 	$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_ZSTD),$(STAGING_DIR_HOST)/bin/zstd -T0 -f -o $(KERNEL_BUILD_DIR)/initrd.cpio.zstd $(KERNEL_BUILD_DIR)/initrd.cpio)
 endif
-	+$(KERNEL_MAKE) $(KERNEL_MAKEOPTS_IMAGE) $(if $(KERNELNAME),$(KERNELNAME),all)
+	+$(KERNEL_MAKE) $(KERNEL_MAKEOPTS_IMAGE) $(if $(KERNELNAME),$(KERNELNAME),all) modules
 	$(call Kernel/CopyImage,-initramfs)
 endef
 else



More information about the lede-commits mailing list