buildtools: use Python pmdinfogen
Use the same interpreter to run pmdinfogen as for other build scripts. Adjust wrapper script accordingly and also don't suppress stderr from ar and pmdinfogen. Add configure-time check for elftools Python module for Unix hosts. Add pyelftools to CI configuration and build requirements for Linux and FreeBSD. Windows targets are not currently using pmdinfogen. Suppress ABI warnings about generated PMD information strings. Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> Acked-by: Neil Horman <nhorman@tuxdriver.com> Tested-by: Jie Zhou <jizh@microsoft.com>
This commit is contained in:
parent
6c4bf8f424
commit
f0f93a7adf
4
.github/workflows/build.yml
vendored
4
.github/workflows/build.yml
vendored
@ -91,8 +91,8 @@ jobs:
|
|||||||
run: sudo apt update
|
run: sudo apt update
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
run: sudo apt install -y ccache libnuma-dev python3-setuptools
|
run: sudo apt install -y ccache libnuma-dev python3-setuptools
|
||||||
python3-wheel python3-pip ninja-build libbsd-dev libpcap-dev
|
python3-wheel python3-pip python3-pyelftools ninja-build libbsd-dev
|
||||||
libibverbs-dev libcrypto++-dev libfdt-dev libjansson-dev
|
libpcap-dev libibverbs-dev libcrypto++-dev libfdt-dev libjansson-dev
|
||||||
- name: Install libabigail build dependencies if no cache is available
|
- name: Install libabigail build dependencies if no cache is available
|
||||||
if: env.ABI_CHECKS == 'true' && steps.libabigail-cache.outputs.cache-hit != 'true'
|
if: env.ABI_CHECKS == 'true' && steps.libabigail-cache.outputs.cache-hit != 'true'
|
||||||
run: sudo apt install -y autoconf automake libtool pkg-config libxml2-dev
|
run: sudo apt install -y autoconf automake libtool pkg-config libxml2-dev
|
||||||
|
@ -14,7 +14,7 @@ addons:
|
|||||||
apt:
|
apt:
|
||||||
update: true
|
update: true
|
||||||
packages: &required_packages
|
packages: &required_packages
|
||||||
- [libnuma-dev, python3-setuptools, python3-wheel, python3-pip, ninja-build]
|
- [libnuma-dev, python3-setuptools, python3-wheel, python3-pip, python3-pyelftools, ninja-build]
|
||||||
- [libbsd-dev, libpcap-dev, libibverbs-dev, libcrypto++-dev, libfdt-dev, libjansson-dev]
|
- [libbsd-dev, libpcap-dev, libibverbs-dev, libcrypto++-dev, libfdt-dev, libjansson-dev]
|
||||||
|
|
||||||
_aarch64_packages: &aarch64_packages
|
_aarch64_packages: &aarch64_packages
|
||||||
|
@ -4,11 +4,11 @@
|
|||||||
|
|
||||||
arfile=$1
|
arfile=$1
|
||||||
output=$2
|
output=$2
|
||||||
pmdinfogen=$3
|
shift 2
|
||||||
|
pmdinfogen=$*
|
||||||
|
|
||||||
# The generated file must not be empty if compiled in pedantic mode
|
# The generated file must not be empty if compiled in pedantic mode
|
||||||
echo 'static __attribute__((unused)) const char *generator = "'$0'";' > $output
|
echo 'static __attribute__((unused)) const char *generator = "'$0'";' > $output
|
||||||
for ofile in `ar t $arfile` ; do
|
for ofile in `ar t $arfile` ; do
|
||||||
ar p $arfile $ofile | $pmdinfogen - - >> $output 2> /dev/null
|
ar p $arfile $ofile | $pmdinfogen - - >> $output
|
||||||
done
|
done
|
||||||
exit 0
|
|
||||||
|
@ -17,3 +17,18 @@ else
|
|||||||
endif
|
endif
|
||||||
map_to_win_cmd = py3 + files('map_to_win.py')
|
map_to_win_cmd = py3 + files('map_to_win.py')
|
||||||
sphinx_wrapper = py3 + files('call-sphinx-build.py')
|
sphinx_wrapper = py3 + files('call-sphinx-build.py')
|
||||||
|
pmdinfogen = py3 + files('pmdinfogen.py')
|
||||||
|
|
||||||
|
# TODO: starting from Meson 0.51.0 use
|
||||||
|
# python3 = import('python').find_installation('python',
|
||||||
|
# modules : python3_required_modules)
|
||||||
|
python3_required_modules = []
|
||||||
|
if host_machine.system() != 'windows'
|
||||||
|
python3_required_modules = ['elftools']
|
||||||
|
endif
|
||||||
|
foreach module : python3_required_modules
|
||||||
|
script = 'import importlib.util; import sys; exit(importlib.util.find_spec("@0@") is None)'
|
||||||
|
if run_command(py3, '-c', script.format(module)).returncode() != 0
|
||||||
|
error('missing python module: @0@'.format(module))
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
|
@ -8,6 +8,10 @@
|
|||||||
[suppress_variable]
|
[suppress_variable]
|
||||||
symbol_version = INTERNAL
|
symbol_version = INTERNAL
|
||||||
|
|
||||||
|
; Ignore generated PMD information strings
|
||||||
|
[suppress_variable]
|
||||||
|
name_regexp = _pmd_info$
|
||||||
|
|
||||||
; Explicit ignore for driver-only ABI
|
; Explicit ignore for driver-only ABI
|
||||||
[suppress_type]
|
[suppress_type]
|
||||||
name = eth_dev_ops
|
name = eth_dev_ops
|
||||||
|
@ -14,10 +14,11 @@ The following FreeBSD packages are required to build DPDK:
|
|||||||
* meson
|
* meson
|
||||||
* ninja
|
* ninja
|
||||||
* pkgconf
|
* pkgconf
|
||||||
|
* py37-pyelftools
|
||||||
|
|
||||||
These can be installed using (as root)::
|
These can be installed using (as root)::
|
||||||
|
|
||||||
pkg install meson pkgconf
|
pkg install meson pkgconf py37-pyelftools
|
||||||
|
|
||||||
To compile the required kernel modules for memory management and working
|
To compile the required kernel modules for memory management and working
|
||||||
with physical NIC devices, the kernel sources for FreeBSD also
|
with physical NIC devices, the kernel sources for FreeBSD also
|
||||||
|
@ -52,6 +52,12 @@ Compilation of the DPDK
|
|||||||
* If the packaged version is below the minimum version, the latest versions
|
* If the packaged version is below the minimum version, the latest versions
|
||||||
can be installed from Python's "pip" repository: ``pip3 install meson ninja``
|
can be installed from Python's "pip" repository: ``pip3 install meson ninja``
|
||||||
|
|
||||||
|
* ``pyelftools`` (version 0.22+)
|
||||||
|
|
||||||
|
* For RHEL/Fedora systems it can be installed using ``dnf install python-pyelftools``
|
||||||
|
|
||||||
|
* For Ubuntu/Debian it can be installed using ``apt install python3-pyelftools``
|
||||||
|
|
||||||
* Library for handling NUMA (Non Uniform Memory Access).
|
* Library for handling NUMA (Non Uniform Memory Access).
|
||||||
|
|
||||||
* ``numactl-devel`` in RHEL/Fedora;
|
* ``numactl-devel`` in RHEL/Fedora;
|
||||||
|
@ -132,7 +132,7 @@ foreach subpath:subdirs
|
|||||||
command: [pmdinfo, tmp_lib.full_path(),
|
command: [pmdinfo, tmp_lib.full_path(),
|
||||||
'@OUTPUT@', pmdinfogen],
|
'@OUTPUT@', pmdinfogen],
|
||||||
output: out_filename,
|
output: out_filename,
|
||||||
depends: [pmdinfogen, tmp_lib])
|
depends: [tmp_lib])
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# now build the static driver
|
# now build the static driver
|
||||||
|
@ -45,7 +45,6 @@ subdir('buildtools')
|
|||||||
subdir('config')
|
subdir('config')
|
||||||
|
|
||||||
# build libs and drivers
|
# build libs and drivers
|
||||||
subdir('buildtools/pmdinfogen')
|
|
||||||
subdir('lib')
|
subdir('lib')
|
||||||
subdir('drivers')
|
subdir('drivers')
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user