After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 630025 - FTBFS with GTK+/GDK 3 git master
FTBFS with GTK+/GDK 3 git master
Status: RESOLVED FIXED
Product: empathy
Classification: Core
Component: General
unspecified
Other Linux
: Normal normal
: ---
Assigned To: empathy-maint
empathy-maint
: 623925 630685 (view as bug list)
Depends on: 630107 630685
Blocks: 621339 626507
 
 
Reported: 2010-09-18 22:22 UTC by Evan Nemerson
Modified: 2011-08-29 10:12 UTC
See Also:
GNOME target: 3.0
GNOME version: ---


Attachments
Updates for building with GTK+ 3. (16.88 KB, patch)
2010-09-18 22:24 UTC, Evan Nemerson
none Details | Review
Updates for building with GTK+ 3. (17.02 KB, patch)
2010-09-20 03:38 UTC, Evan Nemerson
rejected Details | Review
http://git.Collabora.co.uk/?p=user/cassidy/empathy;a=shortlog;h=refs/heads/gtk3-630025 (75.36 KB, patch)
2010-09-30 13:32 UTC, Guillaume Desmottes
none Details | Review
http://git.Collabora.co.uk/?p=user/cassidy/empathy;a=shortlog;h=refs/heads/gtk3-630025 (82.61 KB, patch)
2010-09-30 14:18 UTC, Guillaume Desmottes
reviewed Details | Review

Description Evan Nemerson 2010-09-18 22:22:21 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.
Comment 1 Evan Nemerson 2010-09-18 22:24:05 UTC
Created attachment 170562 [details] [review]
Updates for building with GTK+ 3.
Comment 2 Evan Nemerson 2010-09-20 03:38:16 UTC
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...
Comment 3 Guillaume Desmottes 2010-09-20 09:37:56 UTC
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.
Comment 4 André Klapper 2010-09-28 19:18:10 UTC
I ran "jhbuild buildone glib gtk+ empathy" for gnome-3-0 moduleset
Comment 5 Guillaume Desmottes 2010-09-29 13:15:47 UTC
I'm working on this.
Comment 6 Guillaume Desmottes 2010-09-29 15:35:58 UTC
*** Bug 630685 has been marked as a duplicate of this bug. ***
Comment 7 Guillaume Desmottes 2010-09-30 13:32:19 UTC
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(-)
Comment 8 Guillaume Desmottes 2010-09-30 13:35:23 UTC
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.
Comment 9 Guillaume Desmottes 2010-09-30 14:18:22 UTC
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(-)
Comment 10 Guillaume Desmottes 2010-09-30 14:19:17 UTC
*** Bug 623925 has been marked as a duplicate of this bug. ***
Comment 11 Danielle Madeley 2010-09-30 22:13:57 UTC
(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.
Comment 12 Guillaume Desmottes 2010-10-01 08:55:05 UTC
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.
Comment 13 Cosimo Cecchi 2010-10-04 08:18:23 UTC
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?
Comment 14 Guillaume Desmottes 2010-10-04 08:51:50 UTC
(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
Comment 15 Guillaume Desmottes 2010-10-04 09:15:59 UTC
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.