Michal Kubecek píše v Po 16. 05. 2016 v 14:48 +0200:
I'm trying to submit an upgrade of Firebird RDBMS to version 3.0 and I encountered an issue with other packages depending on its libraries, namely libreoffice.
Firebird 2.5 provided two libraries with the same API: libfbclient and libfbembed. The libfbclient library allows to connect to a firebird server (local or remote) via TCP while libfbembed allows a direct access to a database stored in a local file (also called embedded server mode). LibreOffice and some other software use the "embedded server" library to store data in a local database file as a smarter alternative to e.g. sqlite. In openSUSE, we have three devel packages: firebird-devel (with common files, including all header files) libfbclient2-devel (libfbclient.so and fbclient.pc) and libfbembed-devel (libfbembed.so and fbembed.pc).
With version 3.0, both access modes are now provided by a single library, libfbclient. I added Provides and Obsoletes for both libfbclient2-devel (the "2" was an old mistake) and libfbembed-devel but that doesn't really help. First, a package linking against -lfbembed won't be really satisfied by libfbclient-devel package. Second, this doesn't resolve build dependency on pkgconfig(fbembed) which libreoffice uses (and an explicit "Provides: pkgconfig(fbembed)" won't help even if it works).
One idea is to provide a fbembed.pc file with Libs and Cflags copied from fbclient.pc so that any package using pkgconfig would still build. But that doesn't seem to be a clean solution.
It would be nice if one could say "require either libfbclient-devel
= 3 or libfbembed-devel" but I don't think it's possible.
Any other ideas? Or is it something that needs to be sorted out in packages depending on libfbembed?
This is something that should be sorted out by the packages using libfbembed. Really you can do nasty stuff like symlink all the stuff and create new fake .pc file. But it would still work only in SUSE/openSUSE. What we should do is put new firebird to staging project and report bugs against all the packages that are failing and release firebird at the point it actually works with the stuff that we found. Cheers Tom