* [dpdk-dev] [RFC PATCH 0/3] add custom logging to DPDK meson runs
@ 2020-10-22 14:59 Bruce Richardson
2020-10-22 14:59 ` [dpdk-dev] [RFC PATCH 1/3] build: add a dpdk-specific meson log file Bruce Richardson
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Bruce Richardson @ 2020-10-22 14:59 UTC (permalink / raw)
To: dev; +Cc: Bruce Richardson
While the meson.log file in each build directory contains lots of
information, much of it is not of interest to developers, and it can be
hard to see the explicitly messages from the dpdk build files among all
the rest of the content. Futhermore, while at the end of the a
configuration run we print out the list of enable/disabled components,
this is never recorded anywhere for anyone who wants to check that build
configuration later.
This patchset attempts to solve these issues by supporting a
dpdk-meson.log file in each DPDK build folder containing the output from
the DPDK meson.build files - including the final summary information for
later checking.
Bruce Richardson (3):
build: add a dpdk-specific meson log file
build: shorten top-level build file
build: write messages to dpdk build log file
app/test/meson.build | 2 +-
buildtools/meson.build | 1 +
buildtools/write-log-entry.py | 23 +++++++++++++++++++++++
config/arm/meson.build | 2 ++
config/meson.build | 18 ++++++++++++++++++
config/x86/meson.build | 2 ++
drivers/meson.build | 8 +++++---
examples/meson.build | 1 +
lib/meson.build | 8 +++++---
meson.build | 31 ++++++++++++-------------------
10 files changed, 70 insertions(+), 26 deletions(-)
create mode 100644 buildtools/write-log-entry.py
--
2.25.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [dpdk-dev] [RFC PATCH 1/3] build: add a dpdk-specific meson log file
2020-10-22 14:59 [dpdk-dev] [RFC PATCH 0/3] add custom logging to DPDK meson runs Bruce Richardson
@ 2020-10-22 14:59 ` Bruce Richardson
2020-10-22 14:59 ` [dpdk-dev] [RFC PATCH 2/3] build: shorten top-level build file Bruce Richardson
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Bruce Richardson @ 2020-10-22 14:59 UTC (permalink / raw)
To: dev; +Cc: Bruce Richardson
While meson itself writes a log file of all the tests it runs and the
output of those, to help debug any build problems and provide more
developer information it can be helpful to have a logfile created and
controlled by the dpdk meson.build files themselves.
Since meson doesn't directly support this we need to use run_command to
implement it manually. Using a python script to do the writing of the log
makes things cross-platform, and as initial log entries we can add in the
messages about the defined internal dependencies, since these are of
developer interest only.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
buildtools/meson.build | 1 +
buildtools/write-log-entry.py | 23 +++++++++++++++++++++++
drivers/meson.build | 2 +-
lib/meson.build | 2 +-
meson.build | 8 ++++++--
5 files changed, 32 insertions(+), 4 deletions(-)
create mode 100644 buildtools/write-log-entry.py
diff --git a/buildtools/meson.build b/buildtools/meson.build
index 04808dabc..35a8f4290 100644
--- a/buildtools/meson.build
+++ b/buildtools/meson.build
@@ -17,3 +17,4 @@ else
endif
map_to_win_cmd = py3 + files('map_to_win.py')
sphinx_wrapper = py3 + files('call-sphinx-build.py')
+log = py3 + [files('write-log-entry.py'), 'dpdk-meson.log']
diff --git a/buildtools/write-log-entry.py b/buildtools/write-log-entry.py
new file mode 100644
index 000000000..6ec748a4f
--- /dev/null
+++ b/buildtools/write-log-entry.py
@@ -0,0 +1,23 @@
+#!/usr/bin/env python3
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2020 Intel Corporation
+
+from sys import argv, exit
+from time import strftime
+from os import environ
+from os.path import join as path_join
+
+if len(argv) < 2: # error if no filename
+ exit(1)
+if len(argv) < 3: # do nothing if no contents to log
+ exit(0)
+
+build_dir = environ.get('MESON_BUILD_ROOT', '.')
+filename = path_join(build_dir, argv[1])
+
+# append dates to headings
+if argv[2].startswith('===='):
+ argv.append(strftime('@@ %Y-%m-%d %X'))
+
+with open(filename, 'a') as log:
+ print(" ".join(argv[2:]), file=log)
diff --git a/drivers/meson.build b/drivers/meson.build
index a5a6fed06..c008abd4a 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -228,7 +228,7 @@ 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(
+ run_command(log, 'drivers/@0@: Defining dependency "@1@"'.format(
drv_path, dependency_name))
endif # build
endforeach
diff --git a/lib/meson.build b/lib/meson.build
index dd55b5cb5..2715c0f66 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -200,7 +200,7 @@ foreach l:libraries
set_variable('shared_rte_' + name, shared_dep)
set_variable('static_rte_' + name, static_dep)
- message('lib/@0@: Defining dependency "@1@"'.format(
+ run_command(log, 'lib/@0@: Defining dependency "@1@"'.format(
dir_name, name))
endif # if build
endforeach
diff --git a/meson.build b/meson.build
index 61d9a4f5f..ab950a2ce 100644
--- a/meson.build
+++ b/meson.build
@@ -11,6 +11,11 @@ project('DPDK', 'C',
meson_version: '>= 0.47.1'
)
+# get tool paths and scripts
+subdir('buildtools')
+
+run_command(log, '======= Starting meson =======')
+
# set up some global vars for compiler, platform, configuration, etc.
cc = meson.get_compiler('c')
dpdk_conf = configuration_data()
@@ -40,8 +45,7 @@ global_inc = include_directories('.', 'config',
'lib/librte_eal/@0@/include'.format(arch_subdir),
)
-# do configuration and get tool paths
-subdir('buildtools')
+# do main build config
subdir('config')
# build libs and drivers
--
2.25.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [dpdk-dev] [RFC PATCH 2/3] build: shorten top-level build file
2020-10-22 14:59 [dpdk-dev] [RFC PATCH 0/3] add custom logging to DPDK meson runs Bruce Richardson
2020-10-22 14:59 ` [dpdk-dev] [RFC PATCH 1/3] build: add a dpdk-specific meson log file Bruce Richardson
@ 2020-10-22 14:59 ` Bruce Richardson
2020-10-22 14:59 ` [dpdk-dev] [RFC PATCH 3/3] build: write messages to dpdk build log file Bruce Richardson
2021-09-15 16:23 ` [dpdk-dev] [RFC PATCH 0/3] add custom logging to DPDK meson runs Bruce Richardson
3 siblings, 0 replies; 6+ messages in thread
From: Bruce Richardson @ 2020-10-22 14:59 UTC (permalink / raw)
To: dev; +Cc: Bruce Richardson
Move some basic configuration settings out of the top-level meson.build
file to the "config/meson.build" file, so as to keep the top-level file as
clear and as short as possible.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
config/meson.build | 18 ++++++++++++++++++
meson.build | 17 -----------------
2 files changed, 18 insertions(+), 17 deletions(-)
diff --git a/config/meson.build b/config/meson.build
index 258b01d06..10643fdeb 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -14,6 +14,24 @@ foreach env:supported_exec_envs
set_variable('is_' + env, exec_env == env)
endforeach
+# set the basic ISA
+if host_machine.cpu_family().startswith('x86')
+ arch_subdir = 'x86'
+elif host_machine.cpu_family().startswith('arm') or host_machine.cpu_family().startswith('aarch')
+ arch_subdir = 'arm'
+elif host_machine.cpu_family().startswith('ppc')
+ arch_subdir = 'ppc'
+endif
+
+# configure the build, and make sure configs here and in root folder are
+# able to be included in any file. We also store a global array of include dirs
+# for passing to pmdinfogen scripts
+global_inc = include_directories('.', '..',
+ '../lib/librte_eal/include',
+ '../lib/librte_eal/@0@/include'.format(host_machine.system()),
+ '../lib/librte_eal/@0@/include'.format(arch_subdir),
+)
+
# MS linker requires special treatment.
# TODO: use cc.get_linker_id() with Meson >= 0.54
is_ms_linker = is_windows and (cc.get_id() == 'clang')
diff --git a/meson.build b/meson.build
index ab950a2ce..8333d264f 100644
--- a/meson.build
+++ b/meson.build
@@ -28,23 +28,6 @@ dpdk_libs_disabled = []
dpdk_drvs_disabled = []
abi_version_file = files('ABI_VERSION')
-if host_machine.cpu_family().startswith('x86')
- arch_subdir = 'x86'
-elif host_machine.cpu_family().startswith('arm') or host_machine.cpu_family().startswith('aarch')
- arch_subdir = 'arm'
-elif host_machine.cpu_family().startswith('ppc')
- arch_subdir = 'ppc'
-endif
-
-# configure the build, and make sure configs here and in config folder are
-# able to be included in any file. We also store a global array of include dirs
-# for passing to pmdinfogen scripts
-global_inc = include_directories('.', 'config',
- 'lib/librte_eal/include',
- 'lib/librte_eal/@0@/include'.format(host_machine.system()),
- 'lib/librte_eal/@0@/include'.format(arch_subdir),
-)
-
# do main build config
subdir('config')
--
2.25.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [dpdk-dev] [RFC PATCH 3/3] build: write messages to dpdk build log file
2020-10-22 14:59 [dpdk-dev] [RFC PATCH 0/3] add custom logging to DPDK meson runs Bruce Richardson
2020-10-22 14:59 ` [dpdk-dev] [RFC PATCH 1/3] build: add a dpdk-specific meson log file Bruce Richardson
2020-10-22 14:59 ` [dpdk-dev] [RFC PATCH 2/3] build: shorten top-level build file Bruce Richardson
@ 2020-10-22 14:59 ` Bruce Richardson
2021-09-15 16:23 ` [dpdk-dev] [RFC PATCH 0/3] add custom logging to DPDK meson runs Bruce Richardson
3 siblings, 0 replies; 6+ messages in thread
From: Bruce Richardson @ 2020-10-22 14:59 UTC (permalink / raw)
To: dev; +Cc: Bruce Richardson
Add additional info into the DPDK-specific logs by copying or replacing all
"message()" calls with writes to the log file, making the build
configuration, including lists of enabled/disabled drivers etc. available
after the meson run has completed.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
app/test/meson.build | 2 +-
config/arm/meson.build | 2 ++
config/x86/meson.build | 2 ++
drivers/meson.build | 6 ++++--
examples/meson.build | 1 +
lib/meson.build | 5 +++--
meson.build | 6 ++++++
7 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/app/test/meson.build b/app/test/meson.build
index 8bfb02890..b2d90cfd8 100644
--- a/app/test/meson.build
+++ b/app/test/meson.build
@@ -439,7 +439,7 @@ dpdk_test = executable('dpdk-test',
install: true)
has_hugepage = run_command('has-hugepage.sh').stdout().strip() != '0'
-message('hugepage availability: @0@'.format(has_hugepage))
+run_command(log, 'hugepage availability: @0@'.format(has_hugepage))
# some perf tests (eg: memcpy perf autotest)take very long
# to complete, so timeout to 10 minutes
diff --git a/config/arm/meson.build b/config/arm/meson.build
index b49203fa8..31ac79480 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -182,6 +182,7 @@ else
endforeach
message('Implementer : ' + machine[0])
+ run_command(log, 'config/arm/meson.build: Implementer = ' + machine[0])
foreach flag: machine[1]
if flag.length() > 0
dpdk_conf.set(flag[0], flag[1])
@@ -205,6 +206,7 @@ else
endforeach
endif
message(machine_args)
+run_command(log, 'config/arm/meson.build: machine_args = ', machine_args)
if (cc.get_define('__ARM_NEON', args: machine_args) != '' or
cc.get_define('__aarch64__', args: machine_args) != '')
diff --git a/config/x86/meson.build b/config/x86/meson.build
index 31bfa63b1..0008717b8 100644
--- a/config/x86/meson.build
+++ b/config/x86/meson.build
@@ -13,6 +13,8 @@ endif
# we require SSE4.2 for DPDK
if cc.get_define('__SSE4_2__', args: machine_args) == ''
message('SSE 4.2 not enabled by default, explicitly enabling')
+ run_command(log, 'config/x86/meson.build:',
+ 'SSE 4.2 not enabled by default, explicitly enabling')
machine_args += '-msse4'
endif
diff --git a/drivers/meson.build b/drivers/meson.build
index c008abd4a..fd925114e 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -90,8 +90,10 @@ foreach subpath:subdirs
if not is_variable('shared_rte_' + d)
build = false
reason = 'Missing internal dependency, "@0@"'.format(d)
- message('Disabling @1@ [@2@]: missing internal dependency "@0@"'
- .format(d, name, 'drivers/' + drv_path))
+ log_msg = 'Disabling @1@ [@2@]: missing internal dependency "@0@"'.format(
+ d, name, 'drivers/' + drv_path)
+ message(log_msg)
+ run_command(log, log_msg)
else
shared_deps += [get_variable('shared_rte_' + d)]
static_deps += [get_variable('static_rte_' + d)]
diff --git a/examples/meson.build b/examples/meson.build
index 414ec55cc..8f9922cad 100644
--- a/examples/meson.build
+++ b/examples/meson.build
@@ -105,5 +105,6 @@ foreach example: examples
error('Cannot build requested example "' + name + '"')
else
message('Skipping example "' + name + '"')
+ run_command(log, 'Skipping example "' + name + '"')
endif
endforeach
diff --git a/lib/meson.build b/lib/meson.build
index 2715c0f66..aac07eb50 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -112,8 +112,9 @@ foreach l:libraries
static_dep = shared_dep
else
if is_windows and use_function_versioning
- message('@0@: Function versioning is not supported by Windows.'
- .format(name))
+ log_msg = '@0@: Function versioning is not supported by Windows.'.format(name)
+ message(log_msg)
+ run_command(log, log_msg)
endif
if use_function_versioning
diff --git a/meson.build b/meson.build
index 8333d264f..a587579f3 100644
--- a/meson.build
+++ b/meson.build
@@ -15,6 +15,8 @@ project('DPDK', 'C',
subdir('buildtools')
run_command(log, '======= Starting meson =======')
+run_command(log, 'Meson version', meson.version())
+run_command(log, 'DPDK version', meson.project_version())
# set up some global vars for compiler, platform, configuration, etc.
cc = meson.get_compiler('c')
@@ -76,6 +78,7 @@ foreach lib:enabled_libs
endif
endforeach
message(output_message + '\n')
+run_command(log, output_message)
output_message = '\n===============\nDrivers Enabled\n===============\n'
foreach class:dpdk_driver_classes
@@ -92,6 +95,7 @@ foreach class:dpdk_driver_classes
endforeach
endforeach
message(output_message + '\n')
+run_command(log, output_message)
output_message = '\n=================\nContent Skipped\n=================\n'
output_message += '\nlibs:\n\t'
@@ -105,3 +109,5 @@ foreach drv:dpdk_drvs_disabled
output_message += drv + ':\t' + reason + '\n\t'
endforeach
message(output_message + '\n')
+run_command(log, output_message)
+run_command(log, 'Meson done\n')
--
2.25.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-dev] [RFC PATCH 0/3] add custom logging to DPDK meson runs
2020-10-22 14:59 [dpdk-dev] [RFC PATCH 0/3] add custom logging to DPDK meson runs Bruce Richardson
` (2 preceding siblings ...)
2020-10-22 14:59 ` [dpdk-dev] [RFC PATCH 3/3] build: write messages to dpdk build log file Bruce Richardson
@ 2021-09-15 16:23 ` Bruce Richardson
2021-09-17 13:36 ` Bruce Richardson
3 siblings, 1 reply; 6+ messages in thread
From: Bruce Richardson @ 2021-09-15 16:23 UTC (permalink / raw)
To: dev
On Thu, Oct 22, 2020 at 03:59:41PM +0100, Bruce Richardson wrote:
> While the meson.log file in each build directory contains lots of
> information, much of it is not of interest to developers, and it can be
> hard to see the explicitly messages from the dpdk build files among all
> the rest of the content. Futhermore, while at the end of the a
> configuration run we print out the list of enable/disabled components,
> this is never recorded anywhere for anyone who wants to check that build
> configuration later.
>
> This patchset attempts to solve these issues by supporting a
> dpdk-meson.log file in each DPDK build folder containing the output from
> the DPDK meson.build files - including the final summary information for
> later checking.
>
> Bruce Richardson (3):
> build: add a dpdk-specific meson log file
> build: shorten top-level build file
> build: write messages to dpdk build log file
>
Ping on this old RFC set.
From lack of interest, I'd suggest we drop this set from patchwork as
"Rejected", but if others do thing it's worth pursuing I can investigate
doing a v2, to update to latest codebase.
/Bruce
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-dev] [RFC PATCH 0/3] add custom logging to DPDK meson runs
2021-09-15 16:23 ` [dpdk-dev] [RFC PATCH 0/3] add custom logging to DPDK meson runs Bruce Richardson
@ 2021-09-17 13:36 ` Bruce Richardson
0 siblings, 0 replies; 6+ messages in thread
From: Bruce Richardson @ 2021-09-17 13:36 UTC (permalink / raw)
To: dev
On Wed, Sep 15, 2021 at 05:23:24PM +0100, Bruce Richardson wrote:
> On Thu, Oct 22, 2020 at 03:59:41PM +0100, Bruce Richardson wrote:
> > While the meson.log file in each build directory contains lots of
> > information, much of it is not of interest to developers, and it can be
> > hard to see the explicitly messages from the dpdk build files among all
> > the rest of the content. Futhermore, while at the end of the a
> > configuration run we print out the list of enable/disabled components,
> > this is never recorded anywhere for anyone who wants to check that build
> > configuration later.
> >
> > This patchset attempts to solve these issues by supporting a
> > dpdk-meson.log file in each DPDK build folder containing the output from
> > the DPDK meson.build files - including the final summary information for
> > later checking.
> >
> > Bruce Richardson (3):
> > build: add a dpdk-specific meson log file
> > build: shorten top-level build file
> > build: write messages to dpdk build log file
> >
> Ping on this old RFC set.
>
> From lack of interest, I'd suggest we drop this set from patchwork as
> "Rejected", but if others do thing it's worth pursuing I can investigate
> doing a v2, to update to latest codebase.
>
No further feedback received. Marking as rejected to avoid filling up
patchwork.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-09-17 13:36 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-22 14:59 [dpdk-dev] [RFC PATCH 0/3] add custom logging to DPDK meson runs Bruce Richardson
2020-10-22 14:59 ` [dpdk-dev] [RFC PATCH 1/3] build: add a dpdk-specific meson log file Bruce Richardson
2020-10-22 14:59 ` [dpdk-dev] [RFC PATCH 2/3] build: shorten top-level build file Bruce Richardson
2020-10-22 14:59 ` [dpdk-dev] [RFC PATCH 3/3] build: write messages to dpdk build log file Bruce Richardson
2021-09-15 16:23 ` [dpdk-dev] [RFC PATCH 0/3] add custom logging to DPDK meson runs Bruce Richardson
2021-09-17 13:36 ` Bruce Richardson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).