On 2022/10/19 下午2:55, Thomas Monjalon wrote:
18/10/2022 12:52, Zhangfei Gao:
On 2022/10/18 下午6:07, Zhangfei Gao wrote:
Hi, Akhil

On 2022/10/17 下午3:02, Akhil Goyal wrote:
Hi everyone,

We have a new crypto PMD submitted on ML
(http://patches.dpdk.org/project/dpdk/cover/20221008083747.6559-1-zhangfei....@linaro.org/)

This PMD is dependent on an external library which needs to be cross
compiled for ARM on x86.

It mandatorily need “numactl” also cross-compiled and instead of
using pkg-config of libnuma, it need the library and headers to be
copied manually to aarch toolchain.

And if that is also done, it is not generating pkg-config which DPDK
can use to compile the PMD.

Thanks for the guidance

We are trying to provide pkgconfig file for uadk libs
https://github.com/Linaro/uadk/pull/513

And have fixed the x86 local build.
https://github.com/Linaro/uadk/pull/512
Under this git pull, I have verified building and installing dpdk on
x86 with this diff to switch to pkg-config

diff --git a/drivers/crypto/uadk/meson.build
b/drivers/crypto/uadk/meson.build
index dda6c6b257..f6fae0a239 100644
--- a/drivers/crypto/uadk/meson.build
+++ b/drivers/crypto/uadk/meson.build
@@ -8,18 +8,12 @@ if not is_linux
      subdir_done()
  endif

-if arch_subdir != 'arm' or not dpdk_conf.get('RTE_ARCH_64')
-    build = false
-    reason = 'only supported on aarch64'
-    subdir_done()
-endif
-
  sources = files(
          'uadk_crypto_pmd.c',
  )

  deps += 'bus_vdev'
-dep = cc.find_library('libwd_crypto', required: false)
+dep = dependency('libwd_crypto', required: false, method: 'pkg-config')
  if not dep.found()
         build = false
         reason = 'missing dependency, "libwd_crypto"'
@@ -27,7 +21,7 @@ else
         ext_deps += dep
  endif

-dep = cc.find_library('libwd', required: false)
+dep = dependency('libwd', required: false, method: 'pkg-config')
  if not dep.found()
         build = false
         reason = 'missing dependency, "libwd"'


One uncertainty is numa,  "Requires: numa",
This requires numa.pc has to be installed, so numa only can be
installed from source code (make install).
While apt-get install libnuma-dev does not install numa.pc, so system
can not search numa.
So do we have to build numa from source code?
By the way.

When trying to use +Libs.Private: -lnuma,
I found Even remove building uadk, the dpdk fails if no numa.pc, though
apt-get insall libnuma-dev

/usr/bin/ld: lib/librte_eal.so.23.0: version node not found for symbol
numa_run_on_node_mask@@libnuma_1.2
/usr/bin/ld: failed to set dynamic section sizes: bad value
collect2: error: ld returned 1 exit status
[2813/3314] Compiling C object
'drivers/a715181@@tmp_rte_event_cnxk@sta/event_cnxk_tx_cn10k_tx_112_127_seg.c.o'.
ninja: build stopped: subcommand failed.
libnuma is a general requirement of DPDK.
numa.pc should be installed by the NUMA package.
Maybe a problem with your distribution.

It looks it is the numa source code issue.

Only if we do not install numa by source code,
apt-get install libnuma-dev always works.

But if install numa from source code once via make install,
apt-get seems not workable anymore, same on x86 or arm.
It only install symbol (libnuma.so), but no real library (libnuma.so.1.0.0)

$ sudo apt-get install libnuma-dev
$ numactl
numactl: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
$ ll /usr/lib/aarch64-linux-gnu/libnuma*
-rw-r--r-- 1 root root 77642 Sep 8 2018 /usr/lib/aarch64-linux-gnu/libnuma.a
lrwxrwxrwx 1 root root 16 Sep 8 2018 /usr/lib/aarch64-linux-gnu/libnuma.so -> libnuma.so.1.0.0

More details, https://github.com/Linaro/uadk/issues/515

But never mind, will set numa as private, then both case can work, so will ignore this issue first.

+Libs.Private: -lnuma

Thanks





Reply via email to