Missing DeepStream headers in default docker image from NGC


I am trying to setup Docker for building custom DeepStream plugin and application. However, default nvcr.io/nvidia/deepstream:4.0.2-19.12-devel docker image provided at NGC (NVIDIA GPU Cloud) doesn’t have any headers under /opt/nvidia/deepstream/deepstream-4.0/, there are only binaries. Should n’t there be all the stuff available via normal DeepStream download? May be they are placed under different directory?

According to description provided at https://ngc.nvidia.com/catalog/containers/nvidia:deepstream it seems that everything should be there in the image:

Starting with DeepStream 4.0.1 release, different container variants are being released for x86 with T4 GPU platforms to cater to different user needs… :

  • Development : The DeepStream development container further extends the samples container by including the build toolchains, development libraries and packages necessary for building deepstream reference applications from within the container. …

Looks like a mistake during image build. Could you please shed some lite on the issue?

It’s in /root in the 4.0 image. In the 5.0 it’s in the usual spot in /opt but you may want to chmod -R o-w the folder as part of your build process since samples and sources are world writable.

It would certainly be nice if they added DeepStream to their online apt repositories. That and/or a .pc or .cmake to avoid the header/lib hunting game.

Thank you for the reply!

It would also be nice if they just was consistent, I don’t see any reason to place these files not under /opt/…

I’d prefer /usr, personally. I get that deepstream is an add on software package and there is some justification to put it in opt, but really, nobody else does it and it breaks a ton of stuff. At least there should be a .pc or .cmake. Otherwise about the only things that build and run are the samples, and only in those specific locations, and only because their Makefiles specify the full paths manually. This is fragile, imo, and it makes my build config uglier than it needs to be.

I love Nvidia stuff, DeepStream in particular, but I’d rather seem more effort put in the packaging and distrobution. I shouldn’t have to click through stuff to download deepstream. It makes it impossible to dl it in a Dockerfile, extract, and delete the archive. Othewise I have to COPY it which adds to the image size. Ideally, I’d love for it to be apt installable as it is on Tegra (a++ to the Tegra version). Likewise the python bindings could be in a wheel or otherwise installable with pip. As you say, it’s inconsistent, not just with it’s own package across distobution methods, but with other Nvidia products that are installed in /usr and have pkg-config files.