[mutter] Work around g-ir-scanner problem with Gdk.Rectangle



commit 7853bb804273eb18faaf5b54cd82c11c066978bc
Author: Owen W. Taylor <otaylor fishsoup net>
Date:   Mon Jul 5 17:52:51 2010 -0400

    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 deletions(-)
---
diff --git a/configure.in b/configure.in
index 4f40ebb..02d9035 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 c957236..cac9676 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 0000000..7304bae
--- /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)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]