← Back to team overview

maria-developers team mailing list archive

Re: libmysqlclient.so and Fedora-specific symbol versioning

 

Hi, Honza!

On Jan 07, Honza Horak wrote:
> 
> I'm writing this as a maintainer of MariaDB package in Fedora and RHEL. 
> I've got some complaints about libmysqlclient symbols versioning in 
> Fedora and future RHEL-7:
> https://bugzilla.redhat.com/show_bug.cgi?id=1045013
> 
> Simply put, the issue there is that RPMs (both made by MariaDB upstream 
> or Fedora community) uses different symbol versioning than it is used in 
> other distributions (deb packages, binary tar balls) or by other MySQL 
> providers (Oracle, Percona).
> 
> Fedora does it because it used to be done that way before and it was not 
> changed at a time upstream changed that, since Fedora started to handle 
> symbols list on its own. MariaDB upstream adopted Fedora's behavior as a 
> resolution of the bug:
> https://mariadb.atlassian.net/browse/MDEV-3923
> 
> As a result, we have different versioning only based on packaging format 
> now, which seems to be a problem. So, I'd like to propose to sync this 
> gap between "RPM-based packages" and "rest of the world" in the future 
> Fedora/RHEL releases, which basically means I'd like to ask:
> In case Fedora 21 and RHEL-7 adopt non-versioned symbols in 
> libmysqlclient, would MariaDB upstream be able to do the same in RPMs 
> for these releases?

Yes. Unless users start filing compatibility bugs after this change and
then we'll need to figure something out.

> There is also second difference between RPM and non-RPM builds, which
> is that only limited subset of symbols (those that are documented as
> API) is exported in the client library in Fedora RPMs. This is because
> we believe exporting all symbols is wrong thing. Regarding this issue,
> we'd like to keep the limited set of symbols in RPMs, so, the only
> change I'm proposing to change versioning of these symbols (as
> described above).
> 
> Primarily, I'd like to hear what MariaDB upstream's position on that
> is, if the sync can happen, but any ideas will be welcome.

I believe, Fedora's way is the correct one. Symbols that weren't changed
from libmysqlclient.so.16 should have libmysqlclient_16 version, new or
modified symbols should have libmysqlclient_18 version. This way old
applications that only use libmysqlclient_16.* symbols will continue
working just fine.

What is the point of versioning if all symbols have the same version -
if the version cannot be used to distinguish symbols, one can as well
use no version at all.

But anyway, we've started to use Fedora versioning script for
compatibility reasons. If Fedora will start to version symbols
differently, we'll follow.

Regards,
Sergei



Follow ups

References