GNOME Bugzilla – Bug 612484
Does not compile with -DGSEAL_ENABLED
Last modified: 2010-08-24 13:14:46 UTC
This module does not build with -DGSEAL_ENABLED. See http://live.gnome.org/GnomeGoals/UseGseal . Note that maybe this report cannot be fixed yet, as GTK+ still misses some accessor functions (see bug 588389, bug 597610) needed for sealing. Also see http://live.gnome.org/GTK%2B/3.0/PendingSealings for current status. The jhbuild output posted here of course only lists the very first error when trying to compile. vte.c: In function ‘_vte_invalidate_cells’: vte.c:351: error: ‘GtkObject’ has no member named ‘flags’ vte.c:351: error: ‘GtkObject’ has no member named ‘flags’ vte.c:428: error: ‘GtkWidget’ has no member named ‘window’ vte.c: In function ‘_vte_invalidate_all’: vte.c:468: error: ‘GtkObject’ has no member named ‘flags’ vte.c:468: error: ‘GtkObject’ has no member named ‘flags’ vte.c:481: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c:482: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c:492: error: ‘GtkWidget’ has no member named ‘window’ vte.c: In function ‘_vte_invalidate_cell’: vte.c:649: error: ‘GtkObject’ has no member named ‘flags’ vte.c:649: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘_vte_invalidate_cursor_once’: vte.c:702: error: ‘GtkObject’ has no member named ‘flags’ vte.c:702: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘vte_terminal_set_cursor_from_regex_match’: vte.c:1155: error: ‘GtkObject’ has no member named ‘flags’ vte.c:1174: error: ‘GtkWidget’ has no member named ‘window’ vte.c: In function ‘vte_terminal_emit_adjustment_changed’: vte.c:1992: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:1993: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:1997: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:2005: error: ‘GtkAdjustment’ has no member named ‘upper’ vte.c:2006: error: ‘GtkAdjustment’ has no member named ‘upper’ vte.c:2010: error: ‘GtkAdjustment’ has no member named ‘upper’ vte.c:2026: error: ‘GtkAdjustment’ has no member named ‘value’ vte.c:2033: error: ‘GtkAdjustment’ has no member named ‘value’ vte.c: In function ‘_vte_terminal_adjust_adjustments_full’: vte.c:2098: error: ‘GtkAdjustment’ has no member named ‘step_increment’ vte.c:2099: error: ‘GtkAdjustment’ has no member named ‘step_increment’ vte.c:2103: error: ‘GtkAdjustment’ has no member named ‘step_increment’ vte.c:2109: error: ‘GtkAdjustment’ has no member named ‘page_size’ vte.c:2110: error: ‘GtkAdjustment’ has no member named ‘page_size’ vte.c:2114: error: ‘GtkAdjustment’ has no member named ‘page_size’ vte.c:2120: error: ‘GtkAdjustment’ has no member named ‘page_increment’ vte.c:2121: error: ‘GtkAdjustment’ has no member named ‘page_increment’ vte.c:2126: error: ‘GtkAdjustment’ has no member named ‘page_increment’ vte.c: In function ‘vte_terminal_scroll_lines’: vte.c:2147: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:2147: error: ‘GtkAdjustment’ has no member named ‘upper’ vte.c:2147: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:2147: error: ‘GtkAdjustment’ has no member named ‘upper’ vte.c:2147: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:2147: error: ‘GtkAdjustment’ has no member named ‘upper’ vte.c:2147: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:2147: error: ‘GtkAdjustment’ has no member named ‘upper’ vte.c:2147: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:2147: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c: In function ‘_vte_terminal_set_pointer_visible’: vte.c:2390: error: ‘GtkObject’ has no member named ‘flags’ vte.c:2397: error: ‘GtkWidget’ has no member named ‘window’ vte.c:2407: error: ‘GtkWidget’ has no member named ‘window’ vte.c:2412: error: ‘GtkWidget’ has no member named ‘window’ vte.c: In function ‘vte_terminal_set_color_internal’: vte.c:2454: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘vte_terminal_im_reset’: vte.c:3578: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘vte_terminal_process_incoming’: vte.c:4030: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘_vte_terminal_visible_beep’: vte.c:4662: error: ‘GtkObject’ has no member named ‘flags’ vte.c:4665: error: ‘GtkWidget’ has no member named ‘window’ vte.c:4666: error: ‘GtkWidget’ has no member named ‘style’ vte.c:4666: error: ‘GtkWidget’ has no member named ‘state’ vte.c:4669: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c:4669: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c: In function ‘vte_terminal_key_press’: vte.c:4849: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘vte_terminal_key_release’: vte.c:5164: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘vte_terminal_match_hilite’: vte.c:5712: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c:5713: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c: In function ‘vte_terminal_autoscroll’: vte.c:6774: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:6774: error: ‘GtkAdjustment’ has no member named ‘upper’ vte.c:6774: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:6774: error: ‘GtkAdjustment’ has no member named ‘upper’ vte.c:6774: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:6774: error: ‘GtkAdjustment’ has no member named ‘upper’ vte.c:6774: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:6774: error: ‘GtkAdjustment’ has no member named ‘upper’ vte.c:6774: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:6774: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:6788: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:6788: error: ‘GtkAdjustment’ has no member named ‘upper’ vte.c:6788: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:6788: error: ‘GtkAdjustment’ has no member named ‘upper’ vte.c:6788: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:6788: error: ‘GtkAdjustment’ has no member named ‘upper’ vte.c:6788: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:6788: error: ‘GtkAdjustment’ has no member named ‘upper’ vte.c:6788: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:6788: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c: In function ‘vte_terminal_motion_notify’: vte.c:6856: error: ‘GtkObject’ has no member named ‘flags’ vte.c:6856: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘vte_terminal_button_press’: vte.c:6963: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘vte_terminal_focus_in’: vte.c:7147: error: ‘GtkObject’ has no member named ‘flags’ vte.c:7153: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘vte_terminal_focus_out’: vte.c:7174: error: ‘GtkObject’ has no member named ‘flags’ vte.c:7179: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘vte_terminal_enter’: vte.c:7207: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘vte_terminal_leave’: vte.c:7224: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘vte_terminal_apply_metrics’: vte.c:7335: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘vte_terminal_set_font_full_internal’: vte.c:7416: error: ‘GtkWidget’ has no member named ‘style’ vte.c:7456: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘vte_terminal_handle_scroll’: vte.c:7634: error: ‘GtkAdjustment’ has no member named ‘value’ vte.c:7639: error: ‘GtkObject’ has no member named ‘flags’ vte.c:7639: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘vte_terminal_init’: vte.c:7895: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘vte_terminal_size_allocate’: vte.c:8094: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c:8095: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c:8096: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c:8099: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c:8134: error: ‘GtkObject’ has no member named ‘flags’ vte.c:8135: error: ‘GtkWidget’ has no member named ‘window’ vte.c: In function ‘vte_terminal_unrealize’: vte.c:8218: error: ‘GtkObject’ has no member named ‘flags’ vte.c:8223: error: ‘GtkWidget’ has no member named ‘window’ vte.c:8225: error: ‘GtkWidget’ has no member named ‘style’ vte.c:8227: error: ‘GtkWidget’ has no member named ‘window’ vte.c:8228: error: ‘GtkWidget’ has no member named ‘window’ vte.c:8229: error: ‘GtkWidget’ has no member named ‘window’ vte.c:8253: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘vte_terminal_realize’: vte.c:8519: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c:8520: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c:8521: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c:8522: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c:8544: error: ‘GtkWidget’ has no member named ‘window’ vte.c:8548: error: ‘GtkWidget’ has no member named ‘window’ vte.c:8551: error: ‘GtkObject’ has no member named ‘flags’ vte.c:8577: error: ‘GtkWidget’ has no member named ‘window’ vte.c:8612: error: ‘GtkWidget’ has no member named ‘style’ vte.c:8612: error: ‘GtkWidget’ has no member named ‘style’ vte.c:8612: error: ‘GtkWidget’ has no member named ‘window’ vte.c: In function ‘vte_terminal_paint_area’: vte.c:10360: error: ‘GtkObject’ has no member named ‘flags’ vte.c:10370: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c:10379: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c: In function ‘vte_terminal_paint_cursor’: vte.c:10427: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘vte_terminal_paint’: vte.c:10631: error: ‘GtkWidget’ has no member named ‘window’ vte.c:10655: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c:10662: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c:10663: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c: In function ‘vte_terminal_expose’: vte.c:10712: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c:10713: error: ‘GtkWidget’ has no member named ‘allocation’ vte.c: In function ‘vte_terminal_scroll’: vte.c:10779: error: ‘GtkAdjustment’ has no member named ‘page_increment’ vte.c:10779: error: ‘GtkAdjustment’ has no member named ‘page_increment’ vte.c:10825: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:10825: error: ‘GtkAdjustment’ has no member named ‘upper’ vte.c:10825: error: ‘GtkAdjustment’ has no member named ‘page_size’ vte.c:10825: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:10825: error: ‘GtkAdjustment’ has no member named ‘upper’ vte.c:10825: error: ‘GtkAdjustment’ has no member named ‘page_size’ vte.c:10825: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:10825: error: ‘GtkAdjustment’ has no member named ‘upper’ vte.c:10825: error: ‘GtkAdjustment’ has no member named ‘page_size’ vte.c:10825: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:10825: error: ‘GtkAdjustment’ has no member named ‘upper’ vte.c:10825: error: ‘GtkAdjustment’ has no member named ‘page_size’ vte.c:10825: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c:10825: error: ‘GtkAdjustment’ has no member named ‘lower’ vte.c: In function ‘vte_terminal_im_append_menuitems’: vte.c:12456: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘vte_terminal_background_update’: vte.c:12470: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘vte_terminal_set_cursor_blinks_internal’: vte.c:12841: error: ‘GtkObject’ has no member named ‘flags’ vte.c:12842: error: ‘GtkObject’ has no member named ‘flags’ vte.c: In function ‘vte_terminal_emit_pending_signals’: vte.c:13938: error: ‘GtkWidget’ has no member named ‘window’ vte.c:13939: error: ‘GtkWidget’ has no member named ‘window’ vte.c:13950: error: ‘GtkWidget’ has no member named ‘window’ vte.c:13951: error: ‘GtkWidget’ has no member named ‘window’ vte.c: In function ‘update_regions’: vte.c:14071: error: ‘GtkObject’ has no member named ‘flags’ vte.c:14071: error: ‘GtkObject’ has no member named ‘flags’ vte.c:14097: error: ‘GtkWidget’ has no member named ‘window’ vte.c:14098: error: ‘GtkWidget’ has no member named ‘window’ make[3]: *** [libvte_la-vte.lo] Error 1 make[3]: Leaving directory `/home/andre/svn-gnome/vte/src' make[2]: *** [all] Error 2
Currently configure.in says GTK_REQUIRED=2.14.0 What is an acceptable recent version to base a partial patch on? What should be using #if GTK_CHECK_VERSION (2, x, y) ?
First, I'd hate to raise the gtk req just so we can use accessors. It's fine to raise if using a new *feature*, but this isn't. I would suggest to not use any #if GTK_CHECK_VERSION checks in the code itself at all, but just to always use the new accessor. Then add a gtk-compat.h header that #defines these new accessors to the old direct accesses if the gtk version doesn't provide them. That's how I handled this in e.g. gnome-games. Also, in case the new accessor is called multiple times in one function, I'd suggest to introduce a new local variable holding the result, and use that. (Since the real new accessors introduce type check overhead.)
Created attachment 162341 [details] [review] 0001-use-accessors-for-gtk-objects.patch This is a partial fix. This patch only fixes the interactions with GTK+ but does not allow VTE to build as internally, vte tries to access sealed (deprecated) fields.
Minor correction, it will allow it to build, but, not with -DDISABLE_DEPRECATED.
+ * This is free software; you can redistribute it and/or modify it under the + * terms of the GNU General Purpose License as published by the Free Software + * Foundation; either version 2 of the license, or (at your option) any later + * version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Seems to be some licence confusion here; there's no "General Purpose License"; 2nd paragraph says GPL while third says LGPL. For vte, this file needs to be LGPL2.1+. The GtkAdjustment handling needs special consideration, since using the accessors instead of setting the fields directly and then using value_changed might introduce different behaviour and/or double signal emissions. (I think there's gtk discussions on this ongoing.) Can you separate these changes out into a separate commit? (should be easy using "git add -p").
(In reply to comment #5) > + * This is free software; you can redistribute it and/or modify it under the > + * terms of the GNU General Purpose License as published by the Free Software > + * Foundation; either version 2 of the license, or (at your option) any later > + * version. > + * > + * This program is distributed in the hope that it will be useful, but WITHOUT > + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for > + * more details. > + * > + * You should have received a copy of the GNU Library General Public License > + * along with this program; if not, write to the Free Software Foundation, > + * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. > > Seems to be some licence confusion here; there's no "General Purpose License"; > 2nd paragraph says GPL while third says LGPL. For vte, this file needs to be > LGPL2.1+. Copy and paste is hard :-p. Hopefully its correct this time (copy-and-pasted it from vte.h). > The GtkAdjustment handling needs special consideration, since using the > accessors instead of setting the fields directly and then using value_changed > might introduce different behaviour and/or double signal emissions. (I think > there's gtk discussions on this ongoing.) Can you separate these changes out > into a separate commit? (should be easy using "git add -p"). Ive split it into two patches, the second one simply is for the gtk_adjustment_set_*, everything else remains in the first patch. If I understand your comment correctly, the issue is simply on the set, but the gets should be fine.
Created attachment 162347 [details] [review] 0001-use-accessors-for-gtk-object.patch
Created attachment 162348 [details] [review] 0002-use-accesors-for-setting-adjustment-values.patch
Created attachment 162353 [details] [review] 0001-use-accessors-for-gtk-objects.patch *sigh* The change broke the vte test app. It works again with this version of the patch.
ping - can this soon get a review/commit please?
ChPe, any chance you can review / commit these?
*** Bug 621442 has been marked as a duplicate of this bug. ***
*** Bug 621489 has been marked as a duplicate of this bug. ***
Ping? This is holding back a gnome-color-manager release. Thanks.
Someone needs to take the time to thoroughly review the patch. BTW: g-c-m appears to be using vte conditionally only, so it's not a blocker. (And the pc name will be "vte-2.90", not "vte3", in your configure.ac.)
(In reply to comment #15) > BTW: g-c-m appears to be using vte conditionally only, so it's not a blocker. > (And the pc name will be "vte-2.90", not "vte3", in your configure.ac.) Sure, I added that quick hack so I could continue working on GCM. If you try to use GCM without VTE, it'll crash and burn.
Richard, can you attach your vte patch?
Created attachment 163953 [details] [review] simple patch Sure, here you go.
I'm confused. Is the simple patch enough? Why is Saleem's patch much more involved then?
The simple patch gets things compiling with GTK3. The other patch is the better patch as it fixes all the GSEAL issues too. Given the choice, I would go for Saleem's patch.
@Behdad: The Richard patch simply replaces deprecated functions. You need the Saleem patch to use accessor functions instead direct access to class structure, because they will to be removed soon.
(In reply to comment #15) > Someone needs to take the time to thoroughly review the patch. Does somebody have time for reviewing it this week? We'd like to ship GNOME 2.31.4 with gtk+ 2.90 (and hence with all GSeal issues fixed).
This blocks anjuta releases for gtk+-3.0. I assumed having a --with-gtk=3.0 configure switch would mean that this would work.
Sorry, for spamming: Why is the .pc file called vte-2.90 and not vte-3.0? Will this change before the final release?
Created attachment 165156 [details] [review] additional patch There is quite a bit more to be done on top of the first two patches to make vte actually compile against current GTK+ with GSEAL.
(In reply to comment #15) > Someone needs to take the time to thoroughly review the patch. > > BTW: g-c-m appears to be using vte conditionally only, so it's not a blocker. > (And the pc name will be "vte-2.90", not "vte3", in your configure.ac.) I took a look through the patches in the bug and added compat macros for the cairo_region_t changes in gtk+ 3.0 as well. vte now builds against 2.0 and 3.0 here. Most of this is mechanical changes, the only two subtleties were 1) Use freeze/thaw notify around setting adjustment limits so we only send out one change. 2) Set terminal->pvt->screen->scroll_delta = v before gtk_adjustment_set_value() so it has the right value when the signal fires (in vte_terminal_emit_adjustment_changed()). 3) cairo region doesn't have a gdk_region_get_rectangles() equivalent, but we can emulate it using cairo_region_num_rectangles() and cairo_region_get_rectangle(). The rest is essentiall just a sed script.
I was told that both Christian and Behdad currently do not have time to review these extensive patches; if someone "trustworthy" does a thorough review, the patches will be approved for commit, though. Volunteers? :-P
(In reply to comment #27) > I was told that both Christian and Behdad currently do not have time to review > these extensive patches; if someone "trustworthy" does a thorough review, the > patches will be approved for commit, though. > > Volunteers? :-P The patches have been sitting around long enough and they're trivial enough that they don't need to much review to begin with. I reviewed and added the missing pieces and committed the result.
Thanks. My vte git checkout compiles fine now with -DGSEAL_ENABLE in CFLAGS. Can we close this bug report as FIXED?
Thanks krh.