PVA Algos DEB Package incorrect architecture

DRIVE OS Version: 7.0.3

Issue Description: pva-algos-lib-2.7.0-aarch64-linux-1.0.4.deb provided through NGC has incorrect control file.

# dpkg -i /data/pva-algos-lib-2.7.0-aarch64-linux-1.0.4.deb
dpkg: error processing archive /data/pva-algos-lib-2.7.0-aarch64-linux-1.0.4.deb (--install):
 package architecture (amd64) does not match system (arm64)
Errors were encountered while processing:
 /data/pva-algos-lib-2.7.0-aarch64-linux-1.0.4.deb

I repacked the deb and modified the control file to say arm64. It installs fine now. I also verified that libraries and sample binary in the package was for aarch64.

Also noted that the package name in the control file was set to cupva-algos-gen2-l4t and has a couple spelling errors.

Architecture: amd64
Description: Compute Unified Programable Vision Accellerator SDK
Homepage: https://www.nvidia.com
Maintainer: CUPVA Support <cupva-support@nvidia.com>
Package: cupva-algos-gen2-l4t
Priority: optional
Section: devel
Version: 2.7.0
Installed-Size: 132284

Dear @ewu2 ,
Let me check and get back to you.

I can reproduce the issue. I will intimate the concern team. Thanks for bringing up this issue.

Dear @ewu2 ,
PVA debian has to be installed on host and compile the sample and copy neccessary libs and binaries to target.

root@7.0.3.0-0010-linux-nsr:/home/nvidia# sudo dpkg -i pva-algos-lib-2.9.1-aarch64-linux-1.0.5.deb
Selecting previously unselected package cupva-algos-gen2-l4t.
(Reading database ... 60686 files and directories currently installed.)
Preparing to unpack pva-algos-lib-2.9.1-aarch64-linux-1.0.5.deb ...
=== End User License Agreement ===
[NVIDIA AUTOMOTIVE SOFTWARE LICENSE AGREEMENT FOR DEVELOPMENT

IMPORTANT NOTICE � PLEASE READ AND AGREE BEFORE USING THE SOFTWARE.
.
.
.

===================================
Do you accept the EULA? (y/N): y
Unpacking cupva-algos-gen2-l4t (2.9.1) ...
Setting up cupva-algos-gen2-l4t (2.9.1) ...

root@7.0.3.0-0010-linux-nsr:/home/nvidia# cd /opt/nvidia/pva_cv_lib/
root@7.0.3.0-0010-linux-nsr:/opt/nvidia/pva_cv_lib/lib/# cp /drive/drive-linux/lib-target/libnvplayfair.so /opt/nvidia/pva_cv_lib/lib/aarch64-linux/
root@7.0.3.0-0010-linux-nsr:/opt/nvidia/pva_cv_lib# make
aarch64-linux-gnu-g++ -march=armv8-a -Iinclude/cupva-algos -Iinclude/cupva-sdk -Isrc -o pva_algos_test_exec main.o src/profiler.o src/pva_algo_brute_force_matcher_test.o src/pva_algo_convert_format_test.o src/pva_algo_convolution_2d_gaussian_test.o src/pva_algo_detector_test.o src/pva_algo_fast9_detector_test.o src/pva_algo_find_contours_test.o src/pva_algo_image_filter_test.o src/pva_algo_image_processor_test.o src/pva_algo_image_pyramid_test.o src/pva_algo_mog_background_subtractor_test.o src/pva_algo_morph_test.o src/pva_algo_mov_obj_detector.o src/pva_algo_object_detector_test.o src/pva_algo_orb_test.o src/pva_algo_remap_test.o src/pva_algo_tracker_pipeline.o src/pva_algo_tracker_test.o libutils.a -Llib/aarch64-linux  -lpvaalgos -lm -lnvplayfair -Wl,--unresolved-symbols=ignore-all -Wl,-gc-s

Given this package includes binary and source, it seems better to distribute a binary package for the target and a src package separately so it’s more clear. Or if the intention is that we must build from source, then only release the source package for cross compiling. Why have an amd64 package containing arm64 compiled library plus source code that must be installed on amd64? Is there official documentation somewhere for this?

Looks like what you’re compiling are some tests and no the library itself which is not what we were looking for anyway.

Here’s the library file in the package and it’s aarch64:

# file libpvaalgos.so.1.0.4
libpvaalgos.so.1.0.4: ELF 64-bit LSB shared object, ARM aarch64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=4c732e2ed52599668af630a38eab499430245c45, not stripped