GNOME Bugzilla – Bug 630025
FTBFS with GTK+/GDK 3 git master
Last modified: 2011-08-29 10:12:43 UTC
The latest GTK+ 3 made a couple changes which make Empathy unable to build as long as it defines DISABLE_DEPRECATED (which it does). I believe the relevant commits are: commit e3a8e29a6c6a0852b869c8ea7cab29d83b5f0b80 Author: Javier Jardón <jjardon@gnome.org> Date: Wed Sep 15 03:06:47 2010 +0200 Add deprecation guards for gtk_widget_size_request() commit 913cdf3be750a1e74c09b20edf55a57f9a919fcc Author: Colin Walters <walters@verbum.org> Date: Wed Sep 8 13:35:51 2010 -0400 GDK: Prefix key names with KEY_ The keysyms create a lot of potential namespace conflicts for C, and are especially problematic for introspection, where we take constants into the namespace, so GDK_Display conflicts with GdkDisplay. For C application compatiblity, add gdkkeysyms-compat.h which uses the old names. Just one user in GTK+ continues to use gdkkeysyms-compat.h, which is the gtkimcontextsimple.c, since porting that requires porting more custom Perl code.
Created attachment 170562 [details] [review] Updates for building with GTK+ 3.
Created attachment 170624 [details] [review] Updates for building with GTK+ 3. A new problem popped up since I posted the last patch. A function which Empathy ignores the result of is now maked with G_GNUC_WARN_UNUSED_RESULT, so it should only break when compiling with -Werror. Relevant gtk+ commit: commit b837ef5a6d2ce003eae3dd558ac1ac9934e9d72c Author: Havoc Pennington <hp@pobox.com> Date: Sat Sep 18 18:19:27 2010 -0400 Revamp and modernize X error traps * add per-display gdk_x11_display_error_trap_push() (X11-specific because gdk_error_trap_push() probably should have been) * make gdk_error_trap_push() handle only GDK displays not displays opened without a GDK wrapper * make gdk_error_trap_pop() and gdk_x11_display_error_trap_pop() automatically sync only if needed, so manual gdk_flush() is not required * add gdk_error_trap_pop_ignored() which just asynchronously ignores errors, so never needs to sync * add G_GNUC_WARN_UNUSED_RESULT to plain pop(), because if you use plain pop() and don't need the return value, the async gdk_error_trap_pop_ignored() should be used instead. This results in lots of warnings to clean up in a later patch. The main objective here was to avoid the need to sync just to ignore an error. Now, syncing is automatic, and only happens when we need to know the error code. https://bugzilla.gnome.org/show_bug.cgi?id=629608 I can split this patch up if that would be helpful...
Please split it up one patch per API change. You may also want to rebase it on top of the branch linked in bug #630107 as it already fixes some of these issues.
I ran "jhbuild buildone glib gtk+ empathy" for gnome-3-0 moduleset
I'm working on this.
*** Bug 630685 has been marked as a duplicate of this bug. ***
Created attachment 171424 [details] [review] http://git.Collabora.co.uk/?p=user/cassidy/empathy;a=shortlog;h=refs/heads/gtk3-630025 libempathy-gtk/Makefile.am | 2 - libempathy-gtk/empathy-account-widget-irc.ui | 1 - libempathy-gtk/empathy-avatar-image.c | 2 +- libempathy-gtk/empathy-cell-renderer-activatable.c | 15 +- libempathy-gtk/empathy-cell-renderer-expander.c | 20 +- libempathy-gtk/empathy-cell-renderer-text.c | 18 +- libempathy-gtk/empathy-chat.c | 24 - libempathy-gtk/empathy-contact-dialogs.ui | 1 - libempathy-gtk/empathy-contact-list-view.c | 4 +- libempathy-gtk/empathy-contact-widget.c | 4 +- libempathy-gtk/empathy-individual-linker.c | 26 - libempathy-gtk/empathy-individual-view.c | 4 +- libempathy-gtk/empathy-individual-widget.c | 4 +- libempathy-gtk/empathy-kludge-label.c | 92 --- libempathy-gtk/empathy-kludge-label.h | 53 -- libempathy-gtk/empathy-live-search.c | 18 +- libempathy-gtk/empathy-presence-chooser.c | 4 +- libempathy-gtk/empathy-search-bar.c | 24 +- libempathy-gtk/empathy-ui-utils.c | 2 +- libempathy-gtk/empathy-video-widget.c | 22 +- src/Makefile.am | 10 +- src/empathy-about-dialog.c | 14 - src/empathy-call-window.c | 30 +- src/empathy-chat-notebook.c | 56 ++ src/empathy-chat-notebook.h | 63 ++ src/empathy-chat-window.c | 18 +- src/empathy-chat-window.h | 5 + src/empathy-debug-window.c | 4 +- src/empathy-ft-manager.c | 4 +- src/empathy-ft-manager.ui | 1 - src/empathy-main-window.c | 3 +- src/empathy-new-chatroom-dialog.ui | 1 - src/empathy-sidebar.c | 608 -------------------- src/empathy-sidebar.h | 85 --- src/empathy-status-icon.c | 2 +- src/ev-sidebar.c | 338 +++++++++++ src/ev-sidebar.h | 76 +++ 37 files changed, 631 insertions(+), 1027 deletions(-)
Using this branch, Empathy builds and works fine with GTK3 master. Danielle: what was the goal of EmpathyKludgeLabel exactly? I removed it as I think we don't need to do this kind of crappy hack any more with GTK3 but I don't know if I should set some magic property.
Created attachment 171427 [details] [review] http://git.Collabora.co.uk/?p=user/cassidy/empathy;a=shortlog;h=refs/heads/gtk3-630025 configure.ac | 112 +--- libempathy-gtk/Makefile.am | 2 - libempathy-gtk/empathy-account-widget-irc.ui | 1 - libempathy-gtk/empathy-avatar-image.c | 2 +- libempathy-gtk/empathy-cell-renderer-activatable.c | 15 +- libempathy-gtk/empathy-cell-renderer-expander.c | 20 +- libempathy-gtk/empathy-cell-renderer-text.c | 18 +- libempathy-gtk/empathy-chat.c | 24 - libempathy-gtk/empathy-contact-dialogs.ui | 1 - libempathy-gtk/empathy-contact-list-view.c | 4 +- libempathy-gtk/empathy-contact-widget.c | 4 +- libempathy-gtk/empathy-individual-linker.c | 26 - libempathy-gtk/empathy-individual-view.c | 4 +- libempathy-gtk/empathy-individual-widget.c | 4 +- libempathy-gtk/empathy-kludge-label.c | 92 --- libempathy-gtk/empathy-kludge-label.h | 53 -- libempathy-gtk/empathy-live-search.c | 18 +- libempathy-gtk/empathy-presence-chooser.c | 4 +- libempathy-gtk/empathy-search-bar.c | 24 +- libempathy-gtk/empathy-ui-utils.c | 2 +- libempathy-gtk/empathy-video-widget.c | 22 +- src/Makefile.am | 10 +- src/empathy-about-dialog.c | 14 - src/empathy-call-window.c | 39 +- src/empathy-chat-notebook.c | 56 ++ src/empathy-chat-notebook.h | 63 ++ src/empathy-chat-window.c | 18 +- src/empathy-chat-window.h | 5 + src/empathy-debug-window.c | 4 +- src/empathy-ft-manager.c | 4 +- src/empathy-ft-manager.ui | 1 - src/empathy-main-window.c | 3 +- src/empathy-new-chatroom-dialog.ui | 1 - src/empathy-sidebar.c | 608 -------------------- src/empathy-sidebar.h | 85 --- src/empathy-status-icon.c | 2 +- src/ev-sidebar.c | 338 +++++++++++ src/ev-sidebar.h | 76 +++ 38 files changed, 656 insertions(+), 1123 deletions(-)
*** Bug 623925 has been marked as a duplicate of this bug. ***
(In reply to comment #8) > Danielle: what was the goal of EmpathyKludgeLabel exactly? I removed it as I > think we don't need to do this kind of crappy hack any more with GTK3 but I > don't know if I should set some magic property. It was to enable status messages containing the right-to-left control code to appear correctly.
Ok, I guess we can live with this regression for now and fix it later (may be kinda related to bug #630632 btw). Could you please review the branch? We need it in for the 2.91.0 which is planned for Monday.
Review of attachment 171427 [details] [review]: EvSidebar seems to be missing some things EmpathySidebar has, like a popup menu that seem to list the currently available pages in it. If that's not really used in Empathy or if you think it's good to remove it anyway, the patch looks mostly fine to me, with the exception of this comment below. ::: src/empathy-chat-window.c @@ +1988,3 @@ priv->chatroom_manager = empathy_chatroom_manager_dup_singleton (NULL); + priv->notebook = empathy_chat_notebook_new (); Can't you just create a regular GtkNotebook and connect to the "create-window" signal instead of having that in a separate subclass?
(In reply to comment #13) > Review of attachment 171427 [details] [review]: > > EvSidebar seems to be missing some things EmpathySidebar has, like a popup menu > that seem to list the currently available pages in it. > If that's not really used in Empathy or if you think it's good to remove it > anyway, the patch looks mostly fine to me, with the exception of this comment > below. I think that's fine. > ::: src/empathy-chat-window.c > @@ +1988,3 @@ > priv->chatroom_manager = empathy_chatroom_manager_dup_singleton (NULL); > > + priv->notebook = empathy_chat_notebook_new (); > > Can't you just create a regular GtkNotebook and connect to the "create-window" > signal instead of having that in a separate subclass? Oh you're right, I missed this API. I dropped my commit and wrote a new one using this signal. http://git.Collabora.co.uk/?p=user/cassidy/empathy;a=shortlog;h=refs/heads/gtk3-630025
Merged to master. 2.91.0 will depends on GTK3. This problem has been fixed in the development version. The fix will be available in the next major software release. Thank you for your bug report.