Re: [PATCH v6 2/2] kbuild: rpm-pkg: Fix build with non-default MODLIB
From: Masahiro Yamada <masahiroy@kernel.org>
Date: 2023-12-11 04:34:03
Also in:
linux-kbuild, lkml
On Mon, Dec 11, 2023 at 6:09 AM Michal Suchánek [off-list ref] wrote:
On Mon, Dec 11, 2023 at 03:44:35AM +0900, Masahiro Yamada wrote:quoted
On Thu, Dec 7, 2023 at 4:48 AM Michal Suchanek [off-list ref] wrote:quoted
The default MODLIB value is composed of three variables MODLIB = $(INSTALL_MOD_PATH)$(KERNEL_MODULE_DIRECTORY)/$(KERNELRELEASE) However, the kernel.spec hadcodes the default value of $(KERNEL_MODULE_DIRECTORY), and changed value is not reflected when building the package. Pass KERNEL_MODULE_DIRECTORY to kernel.spec to fix this problem. Signed-off-by: Michal Suchanek <redacted> --- Build on top of the previous patch adding KERNEL_MODULE_DIRECTORYThe SRPM package created by 'make srcrpm-pkg' may not work if rpmbuild is executed in a different machine.That's why there is an option to override KERNEL_MODULE_DIRECTORY?
Yes. But, as I pointed out in 1/2, depmod must follow the packager's decision. 'make srcrpm-pkg' creates a SRPM on machine A. 'rpmbuild' builds it into binary RPMs on machine B. If A and B disagree about kmod.pc, depmod will fail because there is no code to force the decision made on machine A.
Thanks Michalquoted
%{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} KERNEL_MODULE_DIRECTORY=%{KERNEL_MODULE_DIRECTORY} modules_install will align with the specified install destination, but depmod will still fail. (same issue as 1/2)quoted
--- scripts/package/kernel.spec | 8 ++++---- scripts/package/mkspec | 1 + 2 files changed, 5 insertions(+), 4 deletions(-)diff --git a/scripts/package/kernel.spec b/scripts/package/kernel.spec index 3eee0143e0c5..12996ed365f8 100644 --- a/scripts/package/kernel.spec +++ b/scripts/package/kernel.spec@@ -67,7 +67,7 @@ cp $(%{make} %{makeflags} -s image_name) %{buildroot}/boot/vmlinuz-%{KERNELRELEA %{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install cp System.map %{buildroot}/boot/System.map-%{KERNELRELEASE} cp .config %{buildroot}/boot/config-%{KERNELRELEASE} -ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEASE}/build +ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}%{KERNEL_MODULE_DIRECTORY}/%{KERNELRELEASE}/build %if %{with_devel} %{make} %{makeflags} run-command KBUILD_RUN_COMMAND='${srctree}/scripts/package/install-extmod-build %{buildroot}/usr/src/kernels/%{KERNELRELEASE}' %endif@@ -98,8 +98,8 @@ fi %files %defattr (-, root, root) -/lib/modules/%{KERNELRELEASE} -%exclude /lib/modules/%{KERNELRELEASE}/build +%{KERNEL_MODULE_DIRECTORY}/%{KERNELRELEASE} +%exclude %{KERNEL_MODULE_DIRECTORY}/%{KERNELRELEASE}/build /boot/* %files headers@@ -110,5 +110,5 @@ fi %files devel %defattr (-, root, root) /usr/src/kernels/%{KERNELRELEASE} -/lib/modules/%{KERNELRELEASE}/build +%{KERNEL_MODULE_DIRECTORY}/%{KERNELRELEASE}/build %endifdiff --git a/scripts/package/mkspec b/scripts/package/mkspec index ce201bfa8377..e952fa4f2937 100755 --- a/scripts/package/mkspec +++ b/scripts/package/mkspec@@ -24,6 +24,7 @@ fi cat<<EOF %define ARCH ${ARCH} %define KERNELRELEASE ${KERNELRELEASE} +%define KERNEL_MODULE_DIRECTORY ${KERNEL_MODULE_DIRECTORY} %define pkg_release $("${srctree}/init/build-version") EOF --2.42.0-- Best Regards Masahiro Yamada
-- Best Regards Masahiro Yamada