Mailinglist Archive: opensuse-packaging (202 mails)

< Previous Next >
[opensuse-packaging] Build failures because of GNOME 3, and how to fix them
Hi all,

GNOME 3 should reach Factory soon as it got pushed this morning. Since
that's a big change, it will likely have some impact in terms of build
failures, and create some new ones in Factory. Here are the common cases
that should help you fix those issues. If you hit something else, don't
hesitate to ask the GNOME team for help.


Common causes for build failures
================================

a) Some devel packages got renamed

Because we have both gtk2 and gtk3 versions of some libraries, some
devel packages have been renamed. For example, what used to be
gtksourceview-devel in 11.4 is now gtksourceview2-devel. Same for
libunique-devel (now libunique1-devel), libwnck-devel (now
libwnck2-devel), and more.

The solution here is to move to pkgconfig() BuildRequires: the devel
package renaming won't have an impact anymore. This is available
since openSUSE 11.3, if I'm not mistaken.

For instance, instead of using
BuildRequires: gtksourceview-devel
you would use:
BuildRequires: pkgconfig(gtksourceview-2.0)

gtksourceview-2.0 is the basename (without the .pc extension) of the
pkg-config file provided by the library.

b) configure fails, complaining about a library that cannot be found

It's obviously hard to know what the exact issue is, but it's
possible that you were relying on the fact that one of your
BuildRequires was requiring a package that should have been in your
BuildRequires (a direct dependency of your package). So it was
working before, but that was a bit lucky.

The solution here is to explicitly list all the build dependencies as
BuildRequires, instead of relying on another package to bring them
in (unless some well-known cases, like glibc-devel, or the
glib2-devel/pkgconfig(glib-2.0) when you have GTK+ as BuildRequires,
etc.)

c) NetworkManager API changed

With the move to NetworkManager 0.9, some API got changed. I'm not
aware of any good guideline on how to fix this; I'd advise to check
upstream in git/svn if there's a fix for this. Else, ping us. But
that shouldn't affect too many packages, hopefully.

d) libnotify API changed

A few functions were removed, and an argument to
notify_notification_new() was removed.

The solution for this issue is not too hard. The first thing to do is
to check upstream if a fix got committed already. Else, a patch can
be easily written. An example can be found at:

https://build.opensuse.org/stage/package/view_file?file=tsclient-libnotify07.patch&package=tsclient&project=GNOME%3AApps

e) Package tries to build a gnome-panel applet

Because of the port to GTK+ 3 and D-Bus, the libpanel-applet API has
changed, and some porting is needed. This is not a trivial task,
although it's definitely doable. It's unclear to me how many packages
outside of GNOME:Apps/GNOME:Factory are affected.

Note that it can affect some python apps that need the gnomeapplet
module (which isn't built anymore).

There are several solutions:
+ look what upstream did in git/svn, and:
- if they removed it, just stop building the applet
- if they ported it, take the patch and apply it
+ if nothing is done, ping me so I know how many packages are
affected. I might invest time in writing a compatibility layer if
it turns out to be needed.


Thanks,

Vincent

--
Les gens heureux ne sont pas pressés.
--
To unsubscribe, e-mail: opensuse-packaging+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse-packaging+help@xxxxxxxxxxxx

< Previous Next >