* [dpdk-dev] [PATCH 1/3] build: enable a developer mode setting
2021-02-25 15:29 [dpdk-dev] [PATCH 0/3] Add developer mode to DPDK build Bruce Richardson
@ 2021-02-25 15:29 ` Bruce Richardson
2021-02-25 15:29 ` [dpdk-dev] [PATCH 2/3] build: hide debug messages in non-developer mode Bruce Richardson
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Bruce Richardson @ 2021-02-25 15:29 UTC (permalink / raw)
To: dev; +Cc: thomas, david.marchand, Bruce Richardson
To allow support for additional build checks and tests only really
relevant for developers, we add support for a developer mode option to
DPDK. The default, "auto", value for this enables developer mode if a
".git" folder is found at the root of the source tree - as was the case
with the previous "make" build system. There is also support for
explicitly enabling or disabling this option using "meson configure" if
so desired.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
doc/guides/contributing/coding_style.rst | 8 ++++++++
meson.build | 14 ++++++++++++++
meson_options.txt | 2 ++
3 files changed, 24 insertions(+)
diff --git a/doc/guides/contributing/coding_style.rst b/doc/guides/contributing/coding_style.rst
index 734d1901b2..fdcd21861d 100644
--- a/doc/guides/contributing/coding_style.rst
+++ b/doc/guides/contributing/coding_style.rst
@@ -798,6 +798,14 @@ Integrating with the Build System
DPDK is built using the tools ``meson`` and ``ninja``.
+.. note::
+
+ In order to catch possible issues as soon as possible,
+ it is recommended that developers build DPDK in "developer mode" to enable additional checks.
+ By default, this mode is enabled if the build is being done from a git checkout,
+ but the mode can be manually enabled/disabled using the
+ ``developer_mode`` meson configuration option.
+
Therefore all new component additions should include a ``meson.build`` file,
and should be added to the component lists in the ``meson.build`` files in the
relevant top-level directory:
diff --git a/meson.build b/meson.build
index fcc4d4c900..8906b5e0b5 100644
--- a/meson.build
+++ b/meson.build
@@ -11,6 +11,20 @@ project('DPDK', 'C',
meson_version: '>= 0.47.1'
)
+# check for developer mode
+developer_mode = false
+if get_option('developer_mode').auto()
+ if meson.version().version_compare('>=0.53') # fs module available
+ fs = import('fs')
+ developer_mode = fs.is_dir('.git')
+ endif
+else
+ developer_mode = get_option('developer_mode').enabled()
+endif
+if developer_mode
+ message('## Building in Developer Mode ##')
+endif
+
# set up some global vars for compiler, platform, configuration, etc.
cc = meson.get_compiler('c')
dpdk_conf = configuration_data()
diff --git a/meson_options.txt b/meson_options.txt
index 6eff62e47d..fe0f9ed501 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -2,6 +2,8 @@
option('check_includes', type: 'boolean', value: false,
description: 'build "chkincs" to verify each header file can compile alone')
+option('developer_mode', type: 'feature',
+ description: 'turn on additional build checks relevant for DPDK developers')
option('disable_drivers', type: 'string', value: '',
description: 'Comma-separated list of drivers to explicitly disable.')
option('drivers_install_subdir', type: 'string', value: 'dpdk/pmds-<VERSION>',
--
2.27.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [dpdk-dev] [PATCH 2/3] build: hide debug messages in non-developer mode
2021-02-25 15:29 [dpdk-dev] [PATCH 0/3] Add developer mode to DPDK build Bruce Richardson
2021-02-25 15:29 ` [dpdk-dev] [PATCH 1/3] build: enable a developer mode setting Bruce Richardson
@ 2021-02-25 15:29 ` Bruce Richardson
2021-02-25 15:29 ` [dpdk-dev] [PATCH 3/3] build: limit symbol checks to developer mode Bruce Richardson
2021-02-25 19:50 ` [dpdk-dev] [PATCH 0/3] Add developer mode to DPDK build Thomas Monjalon
3 siblings, 0 replies; 6+ messages in thread
From: Bruce Richardson @ 2021-02-25 15:29 UTC (permalink / raw)
To: dev; +Cc: thomas, david.marchand, Bruce Richardson
The messages about what components have what dependency names, and
information about function versioning not being supported on windows are
only of interest to developers, so hide them when building in
non-developer mode.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/meson.build | 6 ++++--
lib/meson.build | 10 ++++++----
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/drivers/meson.build b/drivers/meson.build
index fdf76120ac..b26051c21c 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -208,8 +208,10 @@ foreach subpath:subdirs
set_variable('shared_@0@'.format(lib_name), shared_dep)
set_variable('static_@0@'.format(lib_name), static_dep)
dependency_name = ''.join(lib_name.split('rte_'))
- message('drivers/@0@: Defining dependency "@1@"'.format(
- drv_path, dependency_name))
+ if developer_mode
+ message('drivers/@0@: Defining dependency "@1@"'.format(
+ drv_path, dependency_name))
+ endif
endif # build
endforeach
diff --git a/lib/meson.build b/lib/meson.build
index 7712aa4977..b378050299 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -115,9 +115,9 @@ foreach l:libraries
shared_dep = declare_dependency(include_directories: includes)
static_dep = shared_dep
else
- if is_windows and use_function_versioning
+ if is_windows and use_function_versioning and developer_mode
message('@0@: Function versioning is not supported by Windows.'
- .format(name))
+ .format(name))
endif
if use_function_versioning
@@ -206,7 +206,9 @@ foreach l:libraries
set_variable('shared_rte_' + name, shared_dep)
set_variable('static_rte_' + name, static_dep)
- message('lib/@0@: Defining dependency "@1@"'.format(
- dir_name, name))
+ if developer_mode
+ message('lib/@0@: Defining dependency "@1@"'.format(
+ dir_name, name))
+ endif
endif # if build
endforeach
--
2.27.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [dpdk-dev] [PATCH 3/3] build: limit symbol checks to developer mode
2021-02-25 15:29 [dpdk-dev] [PATCH 0/3] Add developer mode to DPDK build Bruce Richardson
2021-02-25 15:29 ` [dpdk-dev] [PATCH 1/3] build: enable a developer mode setting Bruce Richardson
2021-02-25 15:29 ` [dpdk-dev] [PATCH 2/3] build: hide debug messages in non-developer mode Bruce Richardson
@ 2021-02-25 15:29 ` Bruce Richardson
2021-02-25 19:50 ` [dpdk-dev] [PATCH 0/3] Add developer mode to DPDK build Thomas Monjalon
3 siblings, 0 replies; 6+ messages in thread
From: Bruce Richardson @ 2021-02-25 15:29 UTC (permalink / raw)
To: dev; +Cc: thomas, david.marchand, Bruce Richardson
The checking of symbols within each library and driver is only of
interest to developers, so limit to developer mode only.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/meson.build | 20 +++++++++++---------
lib/meson.build | 2 +-
2 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/drivers/meson.build b/drivers/meson.build
index b26051c21c..54af1f132f 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -170,15 +170,17 @@ foreach subpath:subdirs
endif
else
lk_args = ['-Wl,--version-script=' + version_map]
- # on unix systems check the output of the
- # check-symbols.sh script, using it as a
- # dependency of the .so build
- lk_deps += custom_target(lib_name + '.sym_chk',
- command: [check_symbols,
- version_map, '@INPUT@'],
- capture: true,
- input: static_lib,
- output: lib_name + '.sym_chk')
+ if developer_mode
+ # on unix systems check the output of the
+ # check-symbols.sh script, using it as a
+ # dependency of the .so build
+ lk_deps += custom_target(lib_name + '.sym_chk',
+ command: [check_symbols,
+ version_map, '@INPUT@'],
+ capture: true,
+ input: static_lib,
+ output: lib_name + '.sym_chk')
+ endif
endif
shared_lib = shared_library(lib_name,
diff --git a/lib/meson.build b/lib/meson.build
index b378050299..d003ad3dfe 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -173,7 +173,7 @@ foreach l:libraries
endif
lk_deps = [version_map, def_file, mingw_map]
- if not is_windows
+ if developer_mode and not is_windows
# on unix systems check the output of the
# check-symbols.sh script, using it as a
# dependency of the .so build
--
2.27.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-dev] [PATCH 0/3] Add developer mode to DPDK build
2021-02-25 15:29 [dpdk-dev] [PATCH 0/3] Add developer mode to DPDK build Bruce Richardson
` (2 preceding siblings ...)
2021-02-25 15:29 ` [dpdk-dev] [PATCH 3/3] build: limit symbol checks to developer mode Bruce Richardson
@ 2021-02-25 19:50 ` Thomas Monjalon
2021-04-09 17:05 ` Thomas Monjalon
3 siblings, 1 reply; 6+ messages in thread
From: Thomas Monjalon @ 2021-02-25 19:50 UTC (permalink / raw)
To: Bruce Richardson; +Cc: dev, david.marchand
25/02/2021 16:29, Bruce Richardson:
> To allow more flexibility in enabling additional build checks to DPDK build
> process, we can add a developer mode option to the build. With this option
> enabled, extra checks of interest to DPDK developers rather than users can be
> done on the code, without having to worry about possible user impacts. The new
> option can be manually enabled or disabled by using meson configure, but by
> default is set to "auto" which means it is enabled if building from a git repo.
>
> Once the developer mode is added in the first patch, the other patches of this
> series turn off a number of previous features for non-developer builds, since
> those features would only be of interest to DPDK devs.
>
> Bruce Richardson (3):
> build: enable a developer mode setting
> build: hide debug messages in non-developer mode
> build: limit symbol checks to developer mode
Thanks for the quick patches.
I like the idea.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-dev] [PATCH 0/3] Add developer mode to DPDK build
2021-02-25 19:50 ` [dpdk-dev] [PATCH 0/3] Add developer mode to DPDK build Thomas Monjalon
@ 2021-04-09 17:05 ` Thomas Monjalon
0 siblings, 0 replies; 6+ messages in thread
From: Thomas Monjalon @ 2021-04-09 17:05 UTC (permalink / raw)
To: Bruce Richardson; +Cc: dev, david.marchand
25/02/2021 20:50, Thomas Monjalon:
> 25/02/2021 16:29, Bruce Richardson:
> > To allow more flexibility in enabling additional build checks to DPDK build
> > process, we can add a developer mode option to the build. With this option
> > enabled, extra checks of interest to DPDK developers rather than users can be
> > done on the code, without having to worry about possible user impacts. The new
> > option can be manually enabled or disabled by using meson configure, but by
> > default is set to "auto" which means it is enabled if building from a git repo.
> >
> > Once the developer mode is added in the first patch, the other patches of this
> > series turn off a number of previous features for non-developer builds, since
> > those features would only be of interest to DPDK devs.
> >
> > Bruce Richardson (3):
> > build: enable a developer mode setting
> > build: hide debug messages in non-developer mode
> > build: limit symbol checks to developer mode
>
> Thanks for the quick patches.
> I like the idea.
There was no comment and I found no issue.
Applied, thanks
^ permalink raw reply [flat|nested] 6+ messages in thread