build: deprecate enable_kmods option
Checks
Commit Message
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
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>
> 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>
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>
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.
@@ -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.
deleted file mode 100644
@@ -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
@@ -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
@@ -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')
@@ -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: