Trying to use dpkg-shlibdeps to determine dependencies for building a package, but it can't find dependencies of some multimedia libs

There doesn’t seem to be anything in /var/lib/dpkg for libnvbufsurface, libnvbufsurftransform or libv4l2 which would enable dpkg-shlibdeps to correctly identify all the dependencies needed by the executable.

oliver@Jetson-Dev:~/emu-server-linux$ dpkg-shlibdeps -v usr/local/bin/emu-server --ignore-missing-info -O
dpkg-shlibdeps: debug: >> Scanning usr/local/bin/emu-server (for Depends field)
dpkg-shlibdeps: debug: Library libasound.so.2 found in /lib/aarch64-linux-gnu/libasound.so.2
dpkg-shlibdeps: debug: Library libasound.so.2 found in /usr/lib/aarch64-linux-gnu/libasound.so.2
dpkg-shlibdeps: debug: Library libavahi-client.so.3 found in /lib/aarch64-linux-gnu/libavahi-client.so.3
dpkg-shlibdeps: debug: Library libavahi-client.so.3 found in /usr/lib/aarch64-linux-gnu/libavahi-client.so.3
dpkg-shlibdeps: debug: Library libavahi-common.so.3 found in /lib/aarch64-linux-gnu/libavahi-common.so.3
dpkg-shlibdeps: debug: Library libavahi-common.so.3 found in /usr/lib/aarch64-linux-gnu/libavahi-common.so.3
dpkg-shlibdeps: debug: Library libavcodec.so.58 found in /lib/aarch64-linux-gnu/libavcodec.so.58
dpkg-shlibdeps: debug: Library libavcodec.so.58 found in /usr/lib/aarch64-linux-gnu/libavcodec.so.58
dpkg-shlibdeps: debug: Library libavutil.so.56 found in /lib/aarch64-linux-gnu/libavutil.so.56
dpkg-shlibdeps: debug: Library libavutil.so.56 found in /usr/lib/aarch64-linux-gnu/libavutil.so.56
dpkg-shlibdeps: debug: Library libudev.so.1 found in /lib/aarch64-linux-gnu/libudev.so.1
dpkg-shlibdeps: debug: Library libudev.so.1 found in /usr/lib/aarch64-linux-gnu/libudev.so.1
dpkg-shlibdeps: debug: Library libuuid.so.1 found in /lib/aarch64-linux-gnu/libuuid.so.1
dpkg-shlibdeps: debug: Library libuuid.so.1 found in /usr/lib/aarch64-linux-gnu/libuuid.so.1
dpkg-shlibdeps: debug: Library libnvbufsurface.so.1.0.0 found in /usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurface.so.1.0.0
dpkg-shlibdeps: debug: Library libnvbufsurftransform.so.1.0.0 found in /usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurftransform.so.1.0.0
dpkg-shlibdeps: debug: Library libv4l2.so.0 found in /lib/aarch64-linux-gnu/libv4l2.so.0
dpkg-shlibdeps: debug: Library libv4l2.so.0 found in /usr/lib/aarch64-linux-gnu/libv4l2.so.0
dpkg-shlibdeps: debug: Library libv4l2.so.0 found in /usr/lib/aarch64-linux-gnu/nvidia/libv4l2.so.0
dpkg-shlibdeps: debug: Library libstdc++.so.6 found in /lib/aarch64-linux-gnu/libstdc++.so.6
dpkg-shlibdeps: debug: Library libstdc++.so.6 found in /usr/lib/aarch64-linux-gnu/libstdc++.so.6
dpkg-shlibdeps: debug: Library libm.so.6 found in /lib/aarch64-linux-gnu/libm.so.6
dpkg-shlibdeps: debug: Library libm.so.6 found in /usr/lib/aarch64-linux-gnu/libm.so.6
dpkg-shlibdeps: debug: Library libgcc_s.so.1 found in /lib/aarch64-linux-gnu/libgcc_s.so.1
dpkg-shlibdeps: debug: Library libgcc_s.so.1 found in /usr/lib/aarch64-linux-gnu/libgcc_s.so.1
dpkg-shlibdeps: debug: Library libc.so.6 found in /lib/aarch64-linux-gnu/libc.so.6
dpkg-shlibdeps: debug: Library libc.so.6 found in /usr/lib/aarch64-linux-gnu/libc.so.6
dpkg-shlibdeps: debug: Library ld-linux-aarch64.so.1 found in /lib/ld-linux-aarch64.so.1
dpkg-shlibdeps: debug: Library ld-linux-aarch64.so.1 found in /usr/lib/ld-linux-aarch64.so.1
dpkg-shlibdeps: debug: Library ld-linux-aarch64.so.1 found in /lib/aarch64-linux-gnu/ld-linux-aarch64.so.1
dpkg-shlibdeps: debug: Library ld-linux-aarch64.so.1 found in /usr/lib/aarch64-linux-gnu/ld-linux-aarch64.so.1
dpkg-shlibdeps: debug: Using symbols file /var/lib/dpkg/info/libasound2:arm64.symbols for libasound.so.2
dpkg-shlibdeps: debug: Using symbols file /var/lib/dpkg/info/libavahi-client3:arm64.symbols for libavahi-client.so.3
dpkg-shlibdeps: debug: Using symbols file /var/lib/dpkg/info/libavahi-common3:arm64.symbols for libavahi-common.so.3
dpkg-shlibdeps: debug: Using symbols file /var/lib/dpkg/info/libavcodec58:arm64.symbols for libavcodec.so.58
dpkg-shlibdeps: debug: Using symbols file /var/lib/dpkg/info/libavutil56:arm64.symbols for libavutil.so.56
dpkg-shlibdeps: debug: Using symbols file /var/lib/dpkg/info/libudev1:arm64.symbols for libudev.so.1
dpkg-shlibdeps: debug: Using symbols file /var/lib/dpkg/info/libuuid1:arm64.symbols for libuuid.so.1
dpkg-shlibdeps: debug: Using shlibs+objdump for libnvbufsurface.so.1.0.0 (file /usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurface.so.1.0.0)
dpkg-shlibdeps: debug:  Looking up shlibs dependency of libnvbufsurface.so.1.0.0 provided by 'nvidia-l4t-multimedia-utils'
dpkg-shlibdeps: debug:  Found nothing
dpkg-shlibdeps: debug: No shlibs+objdump info available, trying next package for /usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurface.so.1.0.0
dpkg-shlibdeps: debug: Using shlibs+objdump for libnvbufsurftransform.so.1.0.0 (file /usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurftransform.so.1.0.0)
dpkg-shlibdeps: debug:  Looking up shlibs dependency of libnvbufsurftransform.so.1.0.0 provided by 'nvidia-l4t-multimedia'
dpkg-shlibdeps: debug:  Found nothing
dpkg-shlibdeps: debug: No shlibs+objdump info available, trying next package for /usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurftransform.so.1.0.0
dpkg-shlibdeps: debug: Using shlibs+objdump for libv4l2.so.0 (file /lib/aarch64-linux-gnu/libv4l2.so.0)
dpkg-shlibdeps: debug:  Looking up shlibs dependency of libv4l2.so.0 provided by 'nvidia-l4t-multimedia'
dpkg-shlibdeps: debug:  Found nothing
dpkg-shlibdeps: debug: No shlibs+objdump info available, trying next package for /lib/aarch64-linux-gnu/libv4l2.so.0
dpkg-shlibdeps: debug: Using symbols file /var/lib/dpkg/info/libv4l-0:arm64.symbols for libv4l2.so.0
dpkg-shlibdeps: debug: Using symbols file /var/lib/dpkg/info/libstdc++6:arm64.symbols for libstdc++.so.6
dpkg-shlibdeps: debug: Using symbols file /var/lib/dpkg/info/libc6:arm64.symbols for libm.so.6
dpkg-shlibdeps: debug: Using symbols file /var/lib/dpkg/info/libgcc-s1:arm64.symbols for libgcc_s.so.1
dpkg-shlibdeps: debug: Using symbols file /var/lib/dpkg/info/libc6:arm64.symbols for libc.so.6
dpkg-shlibdeps: debug: Using symbols file /var/lib/dpkg/info/libc6:arm64.symbols for ld-linux-aarch64.so.1
dpkg-shlibdeps: warning: binaries to analyse should already be installed in their package's directory
dpkg-shlibdeps: debug: Updating dependencies of libasound.so.2 with build-dependencies
dpkg-shlibdeps: debug:  No minimal version found in libasound2-dev build-dependency
dpkg-shlibdeps: debug: Updating dependencies of libavahi-client.so.3 with build-dependencies
dpkg-shlibdeps: debug:  No minimal version found in libavahi-client-dev build-dependency
dpkg-shlibdeps: debug: Updating dependencies of libavahi-common.so.3 with build-dependencies
dpkg-shlibdeps: debug:  No minimal version found in libavahi-common-dev build-dependency
dpkg-shlibdeps: debug: Updating dependencies of libavcodec.so.58 with build-dependencies
dpkg-shlibdeps: debug:  No minimal version found in libavcodec-dev build-dependency
dpkg-shlibdeps: debug: Updating dependencies of libavutil.so.56 with build-dependencies
dpkg-shlibdeps: debug:  No minimal version found in libavutil-dev build-dependency
dpkg-shlibdeps: debug: Updating dependencies of libudev.so.1 with build-dependencies
dpkg-shlibdeps: debug:  No minimal version found in libudev-dev build-dependency
dpkg-shlibdeps: debug: Updating dependencies of libuuid.so.1 with build-dependencies
dpkg-shlibdeps: debug:  No minimal version found in uuid-dev build-dependency
dpkg-shlibdeps: debug: Updating dependencies of libv4l2.so.0 with build-dependencies
dpkg-shlibdeps: debug:  No minimal version found in libv4l-dev build-dependency
shlibs:Depends=libasound2 (>= 1.0.16), libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libavcodec58 (>= 7:4.4), libavutil56 (>= 7:4.4), libc6 (>= 2.34), libgcc-s1 (>= 3.0), libstdc++6 (>= 11), libudev1 (>= 183), libuuid1 (>= 2.16), libv4l-0 (>= 0.5.0)
oliver@Jetson-Dev:~/emu-server-linux$ 

hello oviano,

may I know what’s the real use-case, which package you would like to install?
please also share your environment setups, and also the L4T release version for reference,
i.e. $ cat /etc/nv_tegra_release

So I want to test out my application on a handful of Jetson devices, so on one of the devices I am using dpkg-deb to create a .deb package file, following some tutorials I found. The idea is I can then copy this to the other devices, run dpkg -I to install it and sudo apt install -f to install the dependencies.

So ideally the package file would also install include information about the required dependencies, so before building it I am running dpkg-shlibdeps on the binary as shown above. I can then paste the shlibs:Depends= line into the DEBIAN/control file prior to running dpkg-deb to create the package.

This mostly works with the exception of the three libraries shown the output above (libnvbufsurface, libnvbufsurftransform libv4l2) which are part of nvidia-l4t-multimedia and nvidia-l4t-multimedia-utils.

For these libraries it seems unable to calculate the dependencies of these libraries because it cannot find the associated symbols/shlist files that exists for the other libraries in /var/lib/dpkg/info.

I am asking if these files are available somewhere or have been accidentally missed out or something.

The results of cat /etc/nv_tegra_release is:

# R36 (release), REVISION: 2.0, GCID: 34956989, BOARD: generic, EABI: aarch64, DATE: Thu Nov 30 19:03:58 UTC 2023
# KERNEL_VARIANT: oot
TARGET_USERSPACE_LIB_DIR=nvidia
TARGET_USERSPACE_LIB_DIR_PATH=usr/lib/aarch64-linux-gnu/nvidia

The device is a reComputer J401 Carrier Board with a Jetson Orin NX 8GB installed onto it.

It’s flashed with Ubuntu 22.04/JP6 DP.

hello oviano,

please refer to developer guide to customize your RootFS for confirmation. Root File System.

That page describes how to create a custom rootfs presumably for flashing to the other devices.

That’s not what I require or was asking; I want to use the regular package install mechanism to install my test app on the pre-flashed devices.

Actually it basically works, I was just hoping that I could get the dependencies perfect, hence the Q.

hello oviano,

it’s from MMAPI package, which is available via APT server. (i.e. $ sudo apt install nvidia-l4t-jetson-multimedia-api) it has dependency of Jetpack release version (i.e. /etc/nv_tegra_release)

hence..
you should delivery deb package across two targets based-on the same JP release version.