kernel: collect module symvers for external modules (#1580)
Collect module symvers for all external modules to make them available for modpost. This fixes dependencies for most external modules. root@ffv-525400123456:/# modinfo batman-adv module: /lib/modules/4.4.153/batman-adv.ko alias: net-pf-16-proto-16-family-batadv alias: rtnl-link-batadv version: openwrt-2018.1-5 description: B.A.T.M.A.N. advanced author: Marek Lindner <mareklindner@neomailbox.ch>, Simon Wunderlich <sw@simonwunderlich.de> license: GPL depends: After: root@ffv-525400123456:/# modinfo batman-adv module: /lib/modules/4.4.153/batman-adv.ko alias: net-pf-16-proto-16-family-batadv alias: rtnl-link-batadv version: openwrt-2018.1-5 description: B.A.T.M.A.N. advanced author: Marek Lindner <mareklindner@neomailbox.ch>, Simon Wunderlich <sw@simonwunderlich.de> license: GPL depends: libcrc32c,cfg80211
This commit is contained in:
		
							parent
							
								
									d4862a0130
								
							
						
					
					
						commit
						8647b782f7
					
				| @ -0,0 +1,73 @@ | ||||
| From: Jonas Gorski <jonas.gorski@gmail.com> | ||||
| Date: Thu, 20 Jul 2017 22:34:54 +0200 | ||||
| Subject: kernel: collect module symvers for external modules | ||||
| 
 | ||||
| Collect module symvers for all external modules to make them available | ||||
| for modpost. This fixes dependencies for most external modules. | ||||
| 
 | ||||
| Example: | ||||
| 
 | ||||
| Before: | ||||
| 
 | ||||
| root@LEDE:/# modinfo mt76 | ||||
| module:         /lib/modules/4.4.74/mt76.ko | ||||
| license:        Dual BSD/GPL | ||||
| depends: | ||||
| 
 | ||||
| After: | ||||
| 
 | ||||
| root@LEDE:/# modinfo mt76 | ||||
| module:         /lib/modules/4.4.74/mt76.ko | ||||
| license:        Dual BSD/GPL | ||||
| depends:        mac80211,cfg80211 | ||||
| 
 | ||||
| Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> | ||||
| 
 | ||||
| Origin: backport, https://git.openwrt.org/?p=openwrt/openwrt.git;a=commit;h=2e496876c60cc45a06ac610e02c00ec767028b64 | ||||
| 
 | ||||
| diff --git a/include/kernel.mk b/include/kernel.mk
 | ||||
| index d8d457fe7a5d3584d8aa4e27430da84533c85ed0..10a264c9394c2b9a06801c10ae91d563adc7ee3f 100644
 | ||||
| --- a/include/kernel.mk
 | ||||
| +++ b/include/kernel.mk
 | ||||
| @@ -85,6 +85,33 @@ else
 | ||||
|    LINUX_KARCH := $(ARCH) | ||||
|  endif | ||||
|   | ||||
| +PKG_EXTMOD_SUBDIRS ?= .
 | ||||
| +
 | ||||
| +define populate_module_symvers
 | ||||
| +	@mkdir -p $(PKG_INFO_DIR)
 | ||||
| +	cat /dev/null > $(PKG_INFO_DIR)/$(PKG_NAME).symvers; \
 | ||||
| +	for subdir in $(PKG_EXTMOD_SUBDIRS); do \
 | ||||
| +		cat $(PKG_INFO_DIR)/*.symvers 2>/dev/null > $(PKG_BUILD_DIR)/$$$$subdir/Module.symvers; \
 | ||||
| +	done
 | ||||
| +endef
 | ||||
| +
 | ||||
| +define collect_module_symvers
 | ||||
| +	for subdir in $(PKG_EXTMOD_SUBDIRS); do \
 | ||||
| +		grep -F $$$$(readlink -f $(PKG_BUILD_DIR)) $(PKG_BUILD_DIR)/$$$$subdir/Module.symvers >> $(PKG_BUILD_DIR)/Module.symvers.tmp; \
 | ||||
| +	done; \
 | ||||
| +	sort -u $(PKG_BUILD_DIR)/Module.symvers.tmp > $(PKG_BUILD_DIR)/Module.symvers; \
 | ||||
| +	mv $(PKG_BUILD_DIR)/Module.symvers $(PKG_INFO_DIR)/$(PKG_NAME).symvers
 | ||||
| +endef
 | ||||
| +
 | ||||
| +define KernelPackage/hooks
 | ||||
| +  ifneq ($(PKG_NAME),kernel)
 | ||||
| +    Hooks/Compile/Pre += populate_module_symvers
 | ||||
| +    Hooks/Compile/Post += collect_module_symvers
 | ||||
| +  endif
 | ||||
| +  define KernelPackage/hooks
 | ||||
| +  endef
 | ||||
| +endef
 | ||||
| +
 | ||||
|  define KernelPackage/Defaults | ||||
|    FILES:= | ||||
|    AUTOLOAD:= | ||||
| @@ -192,6 +219,7 @@ $(call KernelPackage/$(1)/config)
 | ||||
|    endif | ||||
|   | ||||
|    $(call KernelPackage/depends) | ||||
| +  $(call KernelPackage/hooks)
 | ||||
|   | ||||
|    ifneq ($(if $(filter-out %=y %=n %=m,$(KCONFIG)),$(filter m y,$(foreach c,$(filter-out %=y %=n %=m,$(KCONFIG)),$($(c)))),.),) | ||||
|      define Package/kmod-$(1)/install | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user