Re: [dpdk-dev] [PATCH] eal: fix detection of static or shared DPDK builds
From: Bruce Richardson <hidden>
Date: 2021-02-09 12:50:01
On Mon, Feb 08, 2021 at 04:33:19PM +0000, Bruce Richardson wrote:
When checking the loading of EAL shared lib to see if we have a shared
DPDK build, we only want to include part of the ABI version in the check
rather than the whole thing. For example, with ABI version 21.1 for DPDK
release 21.02, the linker links the binary against librte_eal.so.21,
without the ".1".
To avoid any further brittleness in this area, we can check for multiple
versions when doing the check, since just about any version of EAL implies
a shared build. Therefore we check for presence of librte_eal.so with full
ABI_VERSION extension, and then repeatedly remove the end part of the
filename after the last dot, checking each time. For example (debug log
output for static build):
EAL: Checking presence of .so 'librte_eal.so.21.1'
EAL: Checking presence of .so 'librte_eal.so.21'
EAL: Checking presence of .so 'librte_eal.so'
EAL: Detected static linkage of DPDK
Fixes: 7781950f4d38 ("eal: fix shared lib mode detection")
Cc: tredaelli@redhat.com
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <redacted>
---I saw this issue with OVS, where I was getting weird failures about ports not being bound (in case of physical ports) or not being created (in case of virtio ports), when using a shared build. Since it's potentially serious, I'd appreciate if someone can reproduce the issue and verify the fix so we can consider it for 21.02 inclusion. To demonstrate this with regular DPDK, do a usual build of DPDK and then do "ninja install" to install system-wide. Then build an example app, e.g. l2fwd, using "make" from the examples/l2fwd directory. Running the example normally, e.g. ./build/l2fwd -c F00, leads to no drivers being loaded or ports being found. Adding "-d /path/to/drivers" e.g. "/usr/local/lib/x86_64-linux-gnu/dpdk/pmds-21.1" on my system works as expected. This shows the driver loading is not correct. After applying this patch and re-running "ninja install", l2fwd should run the same with and without the "-d" flag. /Bruce