Open darix opened 2 months ago
It's done on purpose.
As SOVERSION defaults to VERSION, the libraries are already versioned.
If any external user only ever (directly) links to libOpenImageDenoise.so.2, and the APIs/ABIs of the core and device libraries are not exported, this is a reasonable setup.
(If this is the case, it may be a good idea to still set the SOVERSION = ${PROJECT_VERSION} explicitly, and add a corresponding comment noting the core library is not exported and does not fall under stable ABI guarantees).
@StefanBruens it adds a bit of fun with our shared library policy as it then wants us to use 2_2_2 as suffix for the shared library package. my devel package now has the above patch in to make them all .so.2 so rpmlint shuts up. if we remove the patch we need to decide how to handle those other libraries. subpackages with hard equal requires or rpmlintrc and leaving them in one package.
The _core
and _device_*
libraries aren't exported and don't have a stable ABI. The version of these must match the version of the main library.
@StefanBruens package here: https://build.opensuse.org/package/show/home:darix:branches:graphics/OpenImageDenoise
the device_cpu library is later loaded via dlopen()
? i do not see it linked.
@StefanBruens it adds a bit of fun with our shared library policy as it then wants us to use 2_2_2 as suffix for the shared library package. my devel package now has the above patch in to make them all .so.2 so rpmlint shuts up. if we remove the patch we need to decide how to handle those other libraries. subpackages with hard equal requires or rpmlintrc and leaving them in one package.
Just move them to subpackages - according to the build log, libOpenImageDenoise.so.2 links to libOpenImageDenoise_core.so.2.2.2 at build time. I.e. the subpackage dependency should be picked up by the automatic dependency generator without any further fiddling.
just wondering if that is done on purpose or if there is a patch missing like