[RFC,1/3] build: add a dpdk-specific meson log file
Checks
Commit Message
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
@@ -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']
new file mode 100644
@@ -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)
@@ -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
@@ -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
@@ -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