From 7853bb804273eb18faaf5b54cd82c11c066978bc Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Mon, 5 Jul 2010 17:52:51 -0400 Subject: [PATCH] Work around g-ir-scanner problem with Gdk.Rectangle g-ir-scanner is currently buggy and confuses the Gdk.Rectangle alias with MetaRectangle. Since this is moderately hard to fix in gobject-introspection and the fix would conflict with in-progress changes, work around by doing a 'sed job' on the generated Meta.gir. https://bugzilla.gnome.org/show_bug.cgi?id=623639 --- configure.in | 3 +++ src/Makefile.am | 6 +++++- src/fix-meta-rectangle.py | 21 +++++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100755 src/fix-meta-rectangle.py diff --git a/configure.in b/configure.in index 4f40ebbda..02d903571 100644 --- a/configure.in +++ b/configure.in @@ -534,6 +534,9 @@ if test "x$GCC" = "xyes"; then CFLAGS="$CFLAGS -Wall -Werror -ansi" fi +# For fix-meta-rectangle.py +AM_PATH_PYTHON([2.5]) + # Use gnome-doc-utils: GNOME_DOC_INIT([0.8.0]) diff --git a/src/Makefile.am b/src/Makefile.am index c95723682..cac967692 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -223,7 +223,10 @@ Meta-$(api_version).gir: $(G_IR_SCANNER) mutter $(libmutterinclude_HEADERS) $(mu $(filter %.c,$(mutter_SOURCES)) \ $(libmutterinclude_base_headers) \ $(INCLUDES) \ - -o $$pwd/$@ + -o $$pwd/$@.tmp && \ + $(PYTHON) $(srcdir)/fix-meta-rectangle.py $$pwd/$@.tmp $$pwd/$@.tmp2 && \ + rm $$pwd/$@.tmp && \ + mv $$pwd/$@.tmp2 $$pwd/$@ Meta-$(api_version).typelib: $(G_IR_COMPILER) Meta-$(api_version).gir $(AM_V_GEN) LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}. $(G_IR_COMPILER) Meta-$(api_version).gir -o $@ @@ -300,6 +303,7 @@ EXTRA_DIST=$(desktopfiles_files) \ $(desktopfiles_in_files) \ $(wmproperties_in_files) \ $(schema_in_files) \ + fix-meta-rectangle.py \ libmutter-private.pc.in \ mutter-plugins.pc.in \ mutter-enum-types.h.in \ diff --git a/src/fix-meta-rectangle.py b/src/fix-meta-rectangle.py new file mode 100755 index 000000000..7304bae26 --- /dev/null +++ b/src/fix-meta-rectangle.py @@ -0,0 +1,21 @@ +#!/usr/bin/python +import re +import sys + +# gobject-introspection currently has a bug where an alias like +# 'typedef GdkRectangle cairo_rect_int_t' is stored un-namespaced, +# so it is taken to apply to all *Rectangle types. Fixing this +# requires a significant rework of g-ir-scanner, so for the moment +# we fix up the output using this script. +# +# https://bugzilla.gnome.org/show_bug.cgi?id=622609 + +GDK_RECTANGLE = re.compile(r'Gdk\.Rectangle') +META_RECTANGLE = re.compile(r'MetaRectangle') + +i = open(sys.argv[1], 'r') +o = open(sys.argv[2], 'w') +for line in i: + if GDK_RECTANGLE.search(line) and META_RECTANGLE.search(line): + line = re.sub('Gdk.Rectangle', 'Rectangle', line) + o.write(line)