Mailinglist Archive: yast-devel (101 mails)

< Previous Next >
Re: [yast-devel] BusyIndicator, versioning strikes back
  • From: Martin Vidner <mvidner@xxxxxxx>
  • Date: Tue, 15 Jan 2008 13:56:24 +0100
  • Message-id: <20080115125624.GA10481@xxxxxxxxxxxxxxxx>
On Mon, Jan 14, 2008 at 11:29:35AM +0100, Martin Vidner wrote:
On Thu, Jan 10, 2008 at 04:07:46PM -0000, tgoettlicher@xxxxxxxxxxxxxxxx wrote:
+ virtual YBusyIndicator * createBusyIndicator ( YWidget *
parent, const string & label, int timeout = 1000 ) = 0;

Adding a virtual method makes a library binary incompatible:
http://techbase.kde.org/index.php?title=Policies/Binary_Compatibility_Issues_With_C%2B%2B
I see that you use the implementation pointer technique in the
widget itself but we probably cannot avoid the ABI change for the
factory class.

So we have to add proper RPM dependencies. The easiest way should be
changing the soname, like this in Makefile.am:
-libpy2UI_la_LDFLAGS = -version-info 2:0
+libpy2UI_la_LDFLAGS = -version-info 3:0

What I did not realize was that the plugin loader has a
hardcoded "2" for version number (... "/libpy2" + name + ".so.2" in
core/libycp/src/pathsearch.cc). Removing the version suffix from
there is not easy, because libfoo.so is in foo-devel.rpm, unlike
libfoo.so.2.

So for the time being I will revert the SO version to 2 and use RPM
versioning instead.

--
Martin Vidner, YaST developer
http://en.opensuse.org/User:Mvidner

Kuracke oddeleni v restauraci je jako fekalni oddeleni v bazenu
--
To unsubscribe, e-mail: yast-devel+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: yast-devel+help@xxxxxxxxxxxx

< Previous Next >
References