Thank you for digging through the release notes Martin. Then we know that this effectively sets stop for this hack on Debian and probably soon also on Ubuntu and others. I feel a little embarrassed for not knowing this. I do most my work with Debian 9 as a base so it totally went under my radar

I did some more investigating. With no /usr/lib64/libcuda.so in place my Resolve Studio 16.1b3 hangs on "Loading Waveform Monitor" with this in the log:
- Code: Select all
[0x7f849c1dc700] | DVIP | INFO | 2019-10-05 08:48:36,907 | Unable to load libcuda from /usr/lib64/libcuda.so
...
[0x7f849b848700] | DVIP | INFO | 2019-10-05 08:48:36,933 | Unable to load libcuda from /usr/lib64/libcuda.so
Two times it fails to load libcuda.co and eventually grinds to a halt. 16.0 have the same in the logs and does eventually startup but things like the Fusion tab is unusable.
It looks like there are three direct references to /usr/lib64:
- Code: Select all
$ strings /opt/resolve/bin/resolve | grep "/usr/lib64"
/usr/lib64/libDaVinciPanelAPI.so
/usr/lib64/libcuda.so
/usr/lib64/ImageMagick-7.0.8//config-Q16/
The panel API, libcuda and for some reason a specific version of ImageMagick.
If the first two strings are the constants used for dynamically loading the libraries (and I really think that is the case) then the full path should not be needed. If these two constants are changed I believe Resolve will load the libraries properly on all platforms.
- Code: Select all
"/usr/lib64/libDaVinciPanelAPI.so" --> "libDaVinciPanelAPI.so"
"/usr/lib64/libcuda.so" --> "libcuda.so"
So please Resolve devs, can you have a look at this? If you for some reason need these full paths for some special use case then perhaps keep it but make a fallback in case of a load fail that simply tries to load again with just the library name?
There is a similar case for viewing the PDF manual from the Help menu where Resolve depends on /usr/bin/evince. Using xdg-open would be a better choice and that is actually what is used when opening the URLs in the same menu so the proper functionality is in place but not used.