build: deprecate enable_kmods option

Message ID 20230810131809.493973-1-bruce.richardson@intel.com (mailing list archive)
State Accepted, archived
Delegated to: David Marchand
Headers
Series build: deprecate enable_kmods option |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/intel-Functional success Functional PASS
ci/github-robot: build success github build: passed
ci/iol-compile-arm64-testing success Testing PASS
ci/iol-unit-arm64-testing success Testing PASS
ci/iol-unit-amd64-testing success Testing PASS
ci/iol-sample-apps-testing success Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-compile-amd64-testing success Testing PASS

Commit Message

Bruce Richardson Aug. 10, 2023, 1:18 p.m. UTC
  With the removal of the kni kernel driver, there are no longer any
Linux kernel modules in our repository, leaving only modules for FreeBSD
present. Since:

* BSD has no issues with out-of-tree modules and
* There are no in-tree equivalents for those modules in BSD

there is no point in building for BSD without those modules.

Therefore, we can remove the enable_kmods option, always building the
kmods for BSD.

We can also remove the infrastructure for Linux kmods too, since use of
out-of-tree modules for Linux is not something the DPDK project wants to
pursue in future.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 doc/guides/rel_notes/deprecation.rst |   7 ++
 kernel/linux/meson.build             | 103 ---------------------------
 kernel/meson.build                   |   4 +-
 meson.build                          |   6 +-
 meson_options.txt                    |   4 +-
 5 files changed, 14 insertions(+), 110 deletions(-)
 delete mode 100644 kernel/linux/meson.build
  

Comments

Stephen Hemminger Aug. 10, 2023, 3:03 p.m. UTC | #1
On Thu, 10 Aug 2023 14:18:09 +0100
Bruce Richardson <bruce.richardson@intel.com> wrote:

> With the removal of the kni kernel driver, there are no longer any
> Linux kernel modules in our repository, leaving only modules for FreeBSD
> present. Since:
> 
> * BSD has no issues with out-of-tree modules and
> * There are no in-tree equivalents for those modules in BSD
> 
> there is no point in building for BSD without those modules.
> 
> Therefore, we can remove the enable_kmods option, always building the
> kmods for BSD.
> 
> We can also remove the infrastructure for Linux kmods too, since use of
> out-of-tree modules for Linux is not something the DPDK project wants to
> pursue in future.
> 
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>

Acked-by: Stephen Hemminger <stephen@networkplumber.org>
  
Morten Brørup Aug. 10, 2023, 3:44 p.m. UTC | #2
> From: Bruce Richardson [mailto:bruce.richardson@intel.com]
> Sent: Thursday, 10 August 2023 15.18
> 
> With the removal of the kni kernel driver, there are no longer any
> Linux kernel modules in our repository, leaving only modules for FreeBSD
> present. Since:
> 
> * BSD has no issues with out-of-tree modules and
> * There are no in-tree equivalents for those modules in BSD
> 
> there is no point in building for BSD without those modules.
> 
> Therefore, we can remove the enable_kmods option, always building the
> kmods for BSD.
> 
> We can also remove the infrastructure for Linux kmods too, since use of
> out-of-tree modules for Linux is not something the DPDK project wants to
> pursue in future.
> 
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> ---

Acked-by: Morten Brørup <mb@smartsharesystems.com>
  
Thomas Monjalon Aug. 29, 2023, 9:30 a.m. UTC | #3
jeudi 10 août 2023, Bruce Richardson:
> With the removal of the kni kernel driver, there are no longer any
> Linux kernel modules in our repository, leaving only modules for FreeBSD
> present. Since:
> 
> * BSD has no issues with out-of-tree modules and
> * There are no in-tree equivalents for those modules in BSD
> 
> there is no point in building for BSD without those modules.
> 
> Therefore, we can remove the enable_kmods option, always building the
> kmods for BSD.
> 
> We can also remove the infrastructure for Linux kmods too, since use of
> out-of-tree modules for Linux is not something the DPDK project wants to
> pursue in future.
> 
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>

Acked-by: Thomas Monjalon <thomas@monjalon.net>
  
David Marchand Oct. 6, 2023, 9:53 a.m. UTC | #4
On Thu, Aug 10, 2023 at 3:29 PM Bruce Richardson
<bruce.richardson@intel.com> wrote:
>
> With the removal of the kni kernel driver, there are no longer any
> Linux kernel modules in our repository, leaving only modules for FreeBSD
> present. Since:
>
> * BSD has no issues with out-of-tree modules and
> * There are no in-tree equivalents for those modules in BSD
>
> there is no point in building for BSD without those modules.
>
> Therefore, we can remove the enable_kmods option, always building the
> kmods for BSD.
>
> We can also remove the infrastructure for Linux kmods too, since use of
> out-of-tree modules for Linux is not something the DPDK project wants to
> pursue in future.
>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
> Acked-by: Morten Brørup <mb@smartsharesystems.com>
> Acked-by: Thomas Monjalon <thomas@monjalon.net>

Acked-by: David Marchand <david.marchand@redhat.com>

Applied, thanks Bruce.
  

Patch

diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index 317875c505..d5d04ff8d7 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -21,6 +21,13 @@  Deprecation Notices
   won't be possible anymore through the use of the ``disable_libs`` build option.
   A new build option for deprecated libraries will be introduced instead.
 
+* build: The ``enable_kmods`` option is deprecated and will be removed in a future release.
+  Setting/clearing the option has no impact on the build.
+  Instead, kernel modules will be always built for OS's where out-of-tree kernel modules
+  are required for DPDK operation.
+  Currently, this means that modules will only be build for FreeBSD.
+  No modules are shipped with DPDK for either Linux or Windows.
+
 * kvargs: The function ``rte_kvargs_process`` will get a new parameter
   for returning key match count. It will ease handling of no-match case.
 
diff --git a/kernel/linux/meson.build b/kernel/linux/meson.build
deleted file mode 100644
index 8d47074621..0000000000
--- a/kernel/linux/meson.build
+++ /dev/null
@@ -1,103 +0,0 @@ 
-# SPDX-License-Identifier: BSD-3-Clause
-# Copyright(c) 2018 Intel Corporation
-
-subdirs = []
-
-kernel_build_dir = get_option('kernel_dir')
-kernel_source_dir = get_option('kernel_dir')
-kernel_install_dir = ''
-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()
-    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
-
-    # test running make in kernel directory, using "make kernelversion"
-    make_returncode = run_command('make', '-sC', kernel_build_dir,
-            'kernelversion', check: true).returncode()
-    if make_returncode != 0
-        # backward compatibility:
-        # the headers could still be in the 'build' subdir
-        if not kernel_build_dir.endswith('build') and not kernel_build_dir.endswith('build/')
-            kernel_build_dir = join_paths(kernel_build_dir, 'build')
-            make_returncode = run_command('make', '-sC', kernel_build_dir,
-                    'kernelversion', check: true).returncode()
-        endif
-    endif
-
-    if make_returncode != 0
-        error('Cannot compile kernel modules as requested - are kernel headers installed?')
-    endif
-
-    # DO ACTUAL MODULE BUILDING
-    foreach d:subdirs
-        subdir(d)
-    endforeach
-
-    subdir_done()
-endif
-
-# cross build
-# if we are cross-compiling we need kernel_build_dir specified
-if kernel_build_dir == ''
-    error('Need "kernel_dir" option for kmod compilation when cross-compiling')
-endif
-cross_compiler = find_program('c').path()
-if cross_compiler.endswith('gcc')
-    cross_prefix = run_command([py3, '-c', 'print("' + cross_compiler + '"[:-3])'],
-            check: true).stdout().strip()
-elif cross_compiler.endswith('clang')
-    cross_prefix = ''
-    found_target = false
-    # search for '-target' and use the arg that follows
-    # (i.e. the value of '-target') as cross_prefix
-    foreach cross_c_arg : meson.get_cross_property('c_args')
-        if found_target and cross_prefix == ''
-            cross_prefix = cross_c_arg
-        endif
-        if cross_c_arg == '-target'
-            found_target = true
-        endif
-    endforeach
-    if cross_prefix == ''
-        error('Did not find -target and its value in c_args in input cross-file.')
-    endif
-    linker = 'lld'
-    foreach cross_c_link_arg : meson.get_cross_property('c_link_args')
-        if cross_c_link_arg.startswith('-fuse-ld')
-            linker = cross_c_link_arg.split('=')[1]
-        endif
-    endforeach
-    cross_args += ['CC=@0@'.format(cross_compiler), 'LD=ld.@0@'.format(linker)]
-else
-    error('Unsupported cross compiler: @0@'.format(cross_compiler))
-endif
-
-cross_arch = host_machine.cpu_family()
-if host_machine.cpu_family() == 'aarch64'
-    cross_arch = 'arm64'
-endif
-
-cross_args += ['ARCH=@0@'.format(cross_arch),
-        'CROSS_COMPILE=@0@'.format(cross_prefix)]
-
-# DO ACTUAL MODULE BUILDING
-foreach d:subdirs
-    subdir(d)
-endforeach
diff --git a/kernel/meson.build b/kernel/meson.build
index b247e2df42..417735b010 100644
--- a/kernel/meson.build
+++ b/kernel/meson.build
@@ -1,4 +1,6 @@ 
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-subdir(exec_env)
+if is_freebsd
+    subdir(exec_env)
+endif
diff --git a/meson.build b/meson.build
index 70b54f0c98..edfdc7f276 100644
--- a/meson.build
+++ b/meson.build
@@ -94,10 +94,8 @@  install_subdir('examples',
         install_dir: get_option('datadir') + '/dpdk',
         exclude_files: ex_file_excludes)
 
-# build kernel modules if enabled
-if get_option('enable_kmods')
-    subdir('kernel')
-endif
+# build kernel modules
+subdir('kernel')
 
 # check header includes if requested
 if get_option('check_includes')
diff --git a/meson_options.txt b/meson_options.txt
index 621e1ca9ba..f830856158 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -22,8 +22,8 @@  option('enable_drivers', type: 'string', value: '', description:
        'Comma-separated list of drivers to build. If unspecified, build all drivers.')
 option('enable_driver_sdk', type: 'boolean', value: false, description:
        'Install headers to build drivers.')
-option('enable_kmods', type: 'boolean', value: false, description:
-       'build kernel modules')
+option('enable_kmods', type: 'boolean', value: true, description:
+       '[Deprecated - will be removed in future release] build kernel modules')
 option('examples', type: 'string', value: '', description:
        'Comma-separated list of examples to build by default')
 option('ibverbs_link', type: 'combo', choices : ['static', 'shared', 'dlopen'], value: 'shared', description: