Public libraries are linked with private library libedbus-private.so
Public versioned libraries from /usr/lib64/ are linked with a private library from /usr/lib64/evolution-data-server:
[user@rosa2019 ~]$ for i in /usr/lib64/*so* ; do if ldd $i | grep /usr/lib64/evolution-data-server ; then echo $i ; fi; done
libedbus-private.so => /usr/lib64/evolution-data-server/libedbus-private.so (0x00007fa27cda8000)
/usr/lib64/libebackend-1.2.so.10
libedbus-private.so => /usr/lib64/evolution-data-server/libedbus-private.so (0x00007f2a073c4000)
/usr/lib64/libebackend-1.2.so.10.0.0
libedbus-private.so => /usr/lib64/evolution-data-server/libedbus-private.so (0x00007f984a900000)
/usr/lib64/libebook-1.2.so.20
libedbus-private.so => /usr/lib64/evolution-data-server/libedbus-private.so (0x00007f8444e6c000)
/usr/lib64/libebook-1.2.so.20.1.3
libedbus-private.so => /usr/lib64/evolution-data-server/libedbus-private.so (0x00007f6f269f5000)
/usr/lib64/libebook-contacts-1.2.so.3
libedbus-private.so => /usr/lib64/evolution-data-server/libedbus-private.so (0x00007fd62233e000)
/usr/lib64/libebook-contacts-1.2.so.3.0.0
libedbus-private.so => /usr/lib64/evolution-data-server/libedbus-private.so (0x00007ffa1a376000)
/usr/lib64/libecal-2.0.so.1
libedbus-private.so => /usr/lib64/evolution-data-server/libedbus-private.so (0x00007f2bf0814000)
/usr/lib64/libecal-2.0.so.1.0.0
libedbus-private.so => /usr/lib64/evolution-data-server/libedbus-private.so (0x00007f5b47742000)
/usr/lib64/libedata-book-1.2.so.26
libedbus-private.so => /usr/lib64/evolution-data-server/libedbus-private.so (0x00007f32600fb000)
/usr/lib64/libedata-book-1.2.so.26.0.0
libedbus-private.so => /usr/lib64/evolution-data-server/libedbus-private.so (0x00007fdbd8516000)
/usr/lib64/libedata-cal-2.0.so.1
libedbus-private.so => /usr/lib64/evolution-data-server/libedbus-private.so (0x00007f9f0ccf5000)
/usr/lib64/libedata-cal-2.0.so.1.0.0
libedbus-private.so => /usr/lib64/evolution-data-server/libedbus-private.so (0x00007f50c3f04000)
/usr/lib64/libedataserver-1.2.so.26
libedbus-private.so => /usr/lib64/evolution-data-server/libedbus-private.so (0x00007f76bb8ff000)
/usr/lib64/libedataserver-1.2.so.26.0.0
libedbus-private.so => /usr/lib64/evolution-data-server/libedbus-private.so (0x00007f40d8d35000)
/usr/lib64/libedataserverui-1.2.so.3
libedbus-private.so => /usr/lib64/evolution-data-server/libedbus-private.so (0x00007f038a8ce000)
/usr/lib64/libedataserverui-1.2.so.3.0.0
libedbus-private.so => /usr/lib64/evolution-data-server/libedbus-private.so (0x00007f6ee66ac000)
/usr/lib64/libfolks-eds.so.25
libedbus-private.so => /usr/lib64/evolution-data-server/libedbus-private.so (0x00007ffaf3bd9000)
/usr/lib64/libfolks-eds.so.25.21.0
The problem is only with libedbus-private.so
.
This breaks packaging each public library to a separate subpackaged named after its soname in ROSA Linux. I mean, for exanple, now /usr/lib64/libebackend-1.2.so.10
is packaged as lib64ebackend1.2_10
according to policy (http://wiki.rosalab.ru/en/index.php/Libraries_policy). It allows multiple versions of a library to coexist when library is updated and not all packages are rebuild or when a newer library is installed from an external repository. Debian uses a similar approach.
RPM spec is here: https://abf.io/import/evolution-data-server
The problem is that I am trying to use GDM in XFCE, GDM requires gnome-session and gnome-shell for its greeter (screen where user and session is chosen), gnome-shell is linked against libraries from evolution-data-server, it is OK, its public libraries are separate package and can be installed easily, but they are linked with a private library libedbus-private.so which is not in a separate subpackage because it does not make sense to package private libraries separately, and so the whole evolution-data-server is pulled as a dependency into XFCE where it is not needed at all.
libedbus-private.s is the only private library with which public ones are linked, I think the best solution is to make it be a public and versioned library.