Re: Converting libraries and plugins to use gtk3

2010-07-05 Thread Maciej Piechotka
-BEGIN PGP SIGNED MESSAGE-
Hash: RIPEMD160

On 11/06/10 14:28, Alexander Larsson wrote:
 Any library that links to gtk+, gdk or gdk-pixbuf, that switches to gtk3
 will need to have the new version be separate from and parallel
 installable with the old version.
 
 If this is not done then distributions can not ship applications still
 using gtk2 linking to the older version of the library, as this change
 is binary incompatible (and since you can't mix gtk2 and gtk3 in the
 same app).
 

I'm sorry but may I ask for interpretation of the following text? I
interpret that separate packages (as well as Gentoo developers
responsible for GNOME packages) that it applies at package-level.

However evolution-data-server developer(s)[1] thinks otherwise and
believe it is sufficient if the only libraries linking to gtk+-3.0 (like
libedataserverui-3.0.so) need the bumping and rest of packages bundled
do not.

It creates making a package harder, especially in source based
distribution as it requires splitting package by hand and to resolve
incompatibles between versions.

Additionally one file
(/usr/lib64/evolution-data-server-1.2/extensions/libecalbackendweather.so)
have 2.x version (1.2) while linking to libgtk+-x11-3.0.so.0.

Could anyone clarify (and reopen if appropriate) bug 623462[1]?

Regards

[1] https://bugzilla.gnome.org/show_bug.cgi?id=623463
-BEGIN PGP SIGNATURE-
Version: GnuPG v2.0.15 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBAwAGBQJMMg2IAAoJEJIdee2Vr4aP0CUP/0aP5KRVAjHH15Oh83M1A1vY
BDWgvx2WjaWPXD5pth5s45yQmYq29YfBPSypMj8GGJ57y0Rz5kFLZtaA31Gli11s
bOswBeoUS1cDIpLhACg95xhtAt7afFVt/F7BQ8xp2og6hP3p7KPUcgSvmRZY1B3y
IBc0xX/7PMuvHCrM2zdjFwQcszoR1tkTMQqqTeF2RA+aVLry7f1y7VasnyzrqtvM
rpt5aQxX5/fzlFO4VQeTa6qNYCajMAFyzjiknM6K1GL8B8CIoJ0h0JzhxfUH3q+V
gCFRa17SKeuRoNZKMk+8ink4vg8KID+Ouckya7gNQH6Y6PZw3h+DBio6YbY3cpR5
fIMS4QIQkEK7fpFO75T9duPdPvykjVVkLI+4omBIdcRgugifs0g6gczE3Ai4lqCY
gNr+IXau7MIclAA6Q1jJu5DEsGfEsx5p95BGWwNaFYP7oH/OorVQB5g2W0fL+8cP
StaOiknxQ1OthaTdq5C/Cc7jtNIYdA/C+hfYI/oMnfsCFKtgLMsB2lEvHL9F005p
wfEIS2Xgc5zsrvVIkFLh4IrQ1GjePfitqJfC4jsaWnJmFKp0ba2kb/wEUfruoqLa
N3MyEPKunOXeWZzpKH5b8iQ5P2xJWQNrap+a25gl+9p4ySDUvtwrmobc7b4ZfmwR
CSaJWKL63x2t2NpaGrG8
=0f0Q
-END PGP SIGNATURE-
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list


Libtool versioning made easy (was Re: Converting libraries and plugins to use gtk3

2010-06-30 Thread Behdad Esfahbod
On 06/11/2010 08:28 AM, Alexander Larsson wrote:
 * Reset the so version to 0:0:0

Those of you who've had to deal with libtool know that libtool versionin is a
PITA.  Here's a snippet to make libtool versioning (and as a result .so
versioning) automatic based on your regular major.minor.micro version number
(and assuming GNOME version conventions).

I'm copying from vte.

In your configure.ac:
===
m4_define([version_major],0)
m4_define([version_minor],25)
m4_define([version_micro],1)
m4_define([version_triplet],version_major.version_minor.version_micro)

m4_define([so_major_adjust],9) dnl Don't change!

AC_PREREQ([2.59])
AC_INIT(vte, [version_triplet],
[http://bugzilla.gnome.org/enter_bug.cgi?product=vte])

#
Libtool versioning

m4_define([lt_revision], m4_if(m4_eval(version_minor%2),1,0,version_micro))
m4_define([lt_age], m4_eval(version_minor*100+version_micro-lt_revision))
m4_define([lt_current], m4_eval(so_major_adjust+version_major+lt_age))
m4_define([lt_triplet],lt_current:lt_revision:lt_age)

LT_VERSION_INFO=lt_triplet()
AC_SUBST([LT_VERSION_INFO])
===

In your src/Makefile.am add -version-info $(LT_VERSION_INFO) to your
library's LDFLAGS.

Update the so_major_adjust number such that your so_major matches whatever
your library currently uses.  For example, vte has a major version of 0, but
so-major of 9, so we use a 9 so_major_adjust.

The nice thing about this setup is that you get the library version number in
the .so number.  For stable releases, for example, vte-0.26.5, it will result
in libvte.so.9.2600.5, and for unstable releases, for example, vte-0.25.5, it
results in libvte.so.9.2505.0.

One note though.  When I implemented this scheme in cairo first, we got one
report from some odd unix flavor that libtool had problems handling such large
version numbers.  I've been using it in vte and pango for quite some while by
now though, and have not got any such reports.

Filed bug 623238 to add this to gnome-common.

behdad
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: Libtool versioning made easy (was Re: Converting libraries and plugins to use gtk3

2010-06-30 Thread Behdad Esfahbod
On 06/30/2010 04:26 PM, Adam Jackson wrote:
 On Wed, 2010-06-30 at 15:43 -0400, Behdad Esfahbod wrote:
 
 In your src/Makefile.am add -version-info $(LT_VERSION_INFO) to your
 library's LDFLAGS.
 
 Or you could just do it directly:
 
 libX11_la_LDFLAGS = -version-number 6:3:0 -no-undefined
 
 gives you libX11.so.6.3.0.

Using straight major.minor.micro is actually a good idea too.  Maybe we should
do that.  The only difference with my scheme is that my scheme assumes that
individual releases in a devel series all add new interfaces whereas using
major.minor.micro directly assumes that no point releases adds new interfaces
(stable or not).  Both assumptions are wrong, but mine is on the safe side.
The only reason I like your proposal is that I don't think anyone makes any
assumption about minor .so version anyway...

behdad

 libtool very sensibly only really documents -version-info because, in
 this one instance, they chose to implement something so utterly
 orthogonal to any library versioning scheme ever seen in the wild as to
 be unusable, instead of their usual strategy of implementing something
 so lowest-common-denominator as to be unusable.
 
 - ajax
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: Converting libraries and plugins to use gtk3

2010-06-11 Thread Matthias Clasen
On Fri, Jun 11, 2010 at 8:28 AM, Alexander Larsson al...@redhat.com wrote:
 Any library that links to gtk+, gdk or gdk-pixbuf, that switches to gtk3
 will need to have the new version be separate from and parallel
 installable with the old version.

[ lots of good information elided ]

Wow. Alex, you just sent out the mail that I've been drafting here...

Just a few points I'd like to add:

On the GTK+ modules front, we have made major progress in the last few
days: at-spi2-atk builds modules for both, Bastien did a gtk-engines
2.90 release, and Lennart and Hiroyuki have committed dual-build
patches for libcanberra and librsvg. That means GTK3 applications
should pretty much work and look as expected, as far as loadable
modules are concerned.

Wrt. to libraries linking against GTK+, I want to point out that a
fair number of these are obsolescent, and the ABI break is a perfect
time to port from them to newer GTK+ and GLib features, e.g.

libglade - GtkBuilder
libsexy - various GTK+ features
libgnomeui - various GTK+ features
libunique - GtkApplication
libbonoboui - port to dbus, use GDBus

The GTK+ api docs contain migration hints on many of these:
http://library.gnome.org/devel/gtk/stable/migrating.html
http://library.gnome.org/devel/gio/2.25/migrating.html
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list