When building the kernel modules, try to get the kernel
version from the kernel sources first. This fixes the
kernel modules installation directory if the target kernel
version differs from the host kernel version, like for
CI build or when packaging for linux distributions.

Signed-off-by: Ferdinand Thiessen <r...@fthiessen.de>
---
 kernel/linux/meson.build | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/kernel/linux/meson.build b/kernel/linux/meson.build
index d8fb20c1c3..78f28ffb0c 100644
--- a/kernel/linux/meson.build
+++ b/kernel/linux/meson.build
@@ -10,17 +10,23 @@ install = not meson.is_cross_build()
 cross_args = []
 
 if not meson.is_cross_build()
-    # native build
-    kernel_version = run_command('uname', '-r', check: true).stdout().strip()
+    # native target build
+    kernel_version = run_command('uname', '-r').stdout().strip()
+    if kernel_source_dir != ''
+        # Try kernel release from sources first
+        r = run_command('make', '-s', '-C', kernel_source_dir, 
'kernelrelease', check: false)
+        if r.returncode() == 0
+            kernel_version = r.stdout().strip()
+        endif
+    else
+        # use default path for native builds
+        kernel_source_dir = '/lib/modules/' + kernel_version + '/source'
+    endif
     kernel_install_dir = '/lib/modules/' + kernel_version + '/extra/dpdk'
     if kernel_build_dir == ''
         # use default path for native builds
         kernel_build_dir = '/lib/modules/' + kernel_version + '/build'
     endif
-    if kernel_source_dir == ''
-        # use default path for native builds
-        kernel_source_dir = '/lib/modules/' + kernel_version + '/source'
-    endif
 
     # test running make in kernel directory, using "make kernelversion"
     make_returncode = run_command('make', '-sC', kernel_build_dir,
-- 
2.35.1

Reply via email to