File xulrunner19.patch of Package python-gnome-extras

diff -uprN gnome-python-extras-2.25.3.orig/configure.ac gnome-python-extras-2.25.3/configure.ac
--- gnome-python-extras-2.25.3.orig/configure.ac	2009-04-30 13:52:57.000000000 +0200
+++ gnome-python-extras-2.25.3/configure.ac	2009-04-30 13:53:05.000000000 +0200
@@ -18,7 +18,7 @@ m4_define(gnome_python_required_version,
 m4_define(gtkhtml2_required_version,          2.3.1)
 m4_define(mozilla_required_version,           1.2b)
 m4_define(firefox_required_version,           1.0)
-m4_define(xulrunner_required_version,         1.8)
+m4_define(xulrunner_required_version,         1.9)
 m4_define(libgda_required_version,            3.99.11)
 m4_define(gksu_required_version,              1.2.5)
 m4_define(gksu2_required_version,             2.0.4)
@@ -38,6 +38,8 @@ AC_DEFINE(GNOME_PYTHON_EXTRAS_MINOR_VERS
 AC_DEFINE(GNOME_PYTHON_EXTRAS_MICRO_VERSION, gnome_python_extras_micro_version,
                                             [Gnome-Python-Extras macro version])
 
+AC_PROG_CXX
+
 dnl AC_ARG_BINDING(NAME, DEFAULT [, MODULENAME])
 AC_DEFUN([AC_ARG_BINDING],
 [AC_ARG_ENABLE([$1],
@@ -237,58 +239,81 @@ AC_ARG_WITH(gtkmozembed, AS_HELP_STRING(
 if "$build_gtkmozembed"; then
 if test $mozpackage = any ; then
 
-PKG_CHECK_MODULES(GTKMOZEMBED, [xulrunner-gtkmozembed >= xulrunner_required_version
-                                gtk+-2.0              >= gtk_required_version],
-  [build_gtkmozembed=true; mozpackage=xulrunner],
+PKG_CHECK_MODULES(GTKMOZEMBED, [libxul-embedding >= xulrunner_required_version
+                                nspr             >= 4.7
+                                gtk+-2.0         >= gtk_required_version],
+  [build_gtkmozembed=true; mozpackage=xulrunner; 
+   GTKMOZEMBED_CODEGEN_DEFINES="-DHAVE_XUL19"; mozpkgconfig=libxul-embedding],
   [
 PKG_CHECK_MODULES(GTKMOZEMBED, [firefox-gtkmozembed >= firefox_required_version
                                 gtk+-2.0            >= gtk_required_version],
-  [build_gtkmozembed=true; mozpackage=firefox],
+  [build_gtkmozembed=true; mozpackage=firefox; mozpkgconfig=$mozpackage-gtkmozembed],
   [
 PKG_CHECK_MODULES(GTKMOZEMBED, [mozilla-gtkmozembed >= mozilla_required_version
                                 gtk+-2.0            >= gtk_required_version],
-  [build_gtkmozembed=true; mozpackage=mozilla],
+  [build_gtkmozembed=true; mozpackage=mozilla; mozpkgconfig=$mozpackage-gtkmozembed],
   build_gtkmozembed=false)
   ])
   ])
 
 else
 
+GTKMOZEMBED_CODEGEN_DEFINES=""
 case $mozpackage in
-     xulrunner) mozpackage_required_version=xulrunner_required_version ;;
-     firefox) mozpackage_required_version=firefox_required_version ;;
-     mozilla)
-         mozpackage_required_version=mozilla_required_version
-         AC_MSG_CHECKING([for extra gtkmozembed code generation flags])
-         PKG_CHECK_MODULES(XUL19, mozilla-gtkmozembed >= 0.21 gtk+-2.0,
-                           GTKMOZEMBED_CODEGEN_DEFINES="-DHAVE_XUL19",
-                           GTKMOZEMBED_CODEGEN_DEFINES="")
-         AC_MSG_RESULT([$GTKMOZEMBED_CODEGEN_DEFINES])
-         ;;
+     xulrunner) 
+         mozpackage_required_version=xulrunner_required_version
+         GTKMOZEMBED_CODEGEN_DEFINES="-DHAVE_XUL19"
+	 mozpkgconfig=libxul-embedding
+	 ;;
+     firefox) mozpackage_required_version=firefox_required_version; mozpkgconfig=$mozpackage-gtkmozembed ;;
+     mozilla) mozpackage_required_version=mozilla_required_version; mozpkgconfig=$mozpackage-gtkmozembed ;;
      *) AC_MSG_ERROR([--with-gtkmozembed argument must be either 'mozilla', 'firefox', or 'xulrunner'])
 esac
 AC_SUBST(GTKMOZEMBED_CODEGEN_DEFINES)
 
-PKG_CHECK_MODULES(GTKMOZEMBED, [$mozpackage-gtkmozembed >= $mozpackage_required_version,
-                                gtk+-2.0                >= gtk_required_version],
+PKG_CHECK_MODULES(GTKMOZEMBED, [$mozpkgconfig>= $mozpackage_required_version,
+                                gtk+-2.0     >= gtk_required_version],
   build_gtkmozembed=true,
   build_gtkmozembed=false)
 
 fi
 
 AM_CONDITIONAL(BUILD_GTKMOZEMBED, $build_gtkmozembed)
-if test -n "$export_dynamic"; then
-  GTKMOZEMBED_LIBS=`echo $GTKMOZEMBED_LIBS | sed -e "s/$export_dynamic//"`
-fi
-MOZILLA_HOME="`$PKG_CONFIG --variable=libdir $mozpackage-gtkmozembed`"
-if test -z "$MOZILLA_HOME"; then
-   MOZILLA_HOME="`$PKG_CONFIG --variable=sdkdir $mozpackage-gtkmozembed`/lib"
-fi
-AC_SUBST(MOZILLA_HOME)
+if test $mozpackage = xulrunner; then
+  GTKMOZEMBED_CFLAGS="$(pkg-config --cflags --define-variable=includetype=unstable libxul-embedding gtk+-2.0 nspr)"
+else
+  MOZILLA_HOME="`$PKG_CONFIG --variable=libdir $mozpackage-gtkmozembed`"
+  if test -z "$MOZILLA_HOME"; then
+    MOZILLA_HOME="`$PKG_CONFIG --variable=sdkdir $mozpackage-gtkmozembed`/lib"
+  fi
+  AC_SUBST(MOZILLA_HOME)
+fi # $mozpackage = xulrunner
 
 fi # if build_gtkmozembed
 
 AM_CONDITIONAL(BUILD_GTKMOZEMBED, $build_gtkmozembed)
+
+AC_LANG_PUSH(C++)
+_SAVE_CPPFLAGS=$CPPFLAGS
+_SAVE_CXXFLAGS=$CXXFLAGS
+CXXFLAGS=$GTKMOZEMBED_CFLAGS
+CPPFLAGS=
+AC_COMPILE_IFELSE([AC_LANG_SOURCE(
+[[#ifndef XPCOM_GLUE
+#error "no xpcom glue"
+#endif]])],
+[have_xpcom_glue=yes], [have_xpcom_glue=yes]
+)
+CPPFLAGS=$_SAVE_CPPFLAGS
+CXXFLAGS=$_SAVE_CXXFLAGS
+AC_LANG_POP(C++)
+
+AM_CONDITIONAL(HAVE_XPCOM_GLUE, [test $have_xpcom_glue=yes])
+if test "$have_xpcom_glue" = "yes"; then
+  AC_DEFINE(HAVE_XPCOM_GLUE, 1,
+    [Define to 1 if libxpcomglue is being used.])
+fi
+
 if test -n "$export_dynamic"; then
   GTKMOZEMBED_LIBS=`echo $GTKMOZEMBED_LIBS | sed -e "s/$export_dynamic//"`
 fi
diff -uprN gnome-python-extras-2.25.3.orig/gtkmozembed/gtkmozembedmodule.c gnome-python-extras-2.25.3/gtkmozembed/gtkmozembedmodule.c
--- gnome-python-extras-2.25.3.orig/gtkmozembed/gtkmozembedmodule.c	2009-04-30 13:52:57.000000000 +0200
+++ gnome-python-extras-2.25.3/gtkmozembed/gtkmozembedmodule.c	1970-01-01 01:00:00.000000000 +0100
@@ -1,29 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/* include this first, before NO_IMPORT_PYGOBJECT is defined */
-#include <pygobject.h>
-
-void pygtkmozembed_register_classes (PyObject *d);
-void pygtkmozembed_add_constants(PyObject *module, const gchar *strip_prefix);
-
-extern PyMethodDef pygtkmozembed_functions[];
-
-DL_EXPORT(void)
-initgtkmozembed(void)
-{
-    PyObject *m, *d;
-
-    init_pygobject ();
-
-    m = Py_InitModule ("gtkmozembed", pygtkmozembed_functions);
-    d = PyModule_GetDict (m);
-
-    pygtkmozembed_register_classes (d);
-    pygtkmozembed_add_constants(m, "GTK_MOZ_EMBED_");
-
-    if (PyErr_Occurred ()) {
-        Py_FatalError ("can't initialise module gtkmozembed");
-    }
-}
diff -uprN gnome-python-extras-2.25.3.orig/gtkmozembed/gtkmozembedmodule.cpp gnome-python-extras-2.25.3/gtkmozembed/gtkmozembedmodule.cpp
--- gnome-python-extras-2.25.3.orig/gtkmozembed/gtkmozembedmodule.cpp	1970-01-01 01:00:00.000000000 +0100
+++ gnome-python-extras-2.25.3/gtkmozembed/gtkmozembedmodule.cpp	2009-04-30 13:55:23.000000000 +0200
@@ -0,0 +1,72 @@
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/* include this first, before NO_IMPORT_PYGOBJECT is defined */
+#include <pygobject.h>
+#include <pygtk/pygtk.h>
+
+#ifdef XPCOM_GLUE
+#include "gtkmozembed_glue.cpp"
+#endif
+
+G_BEGIN_DECLS
+void initgtkmozembed(void);
+void pygtkmozembed_add_constants(PyObject *module, const gchar *strip_prefix);
+void pygtkmozembed_register_classes (PyObject *d);
+G_END_DECLS
+
+extern PyMethodDef pygtkmozembed_functions[];
+
+void
+initgtkmozembed(void)
+{
+    PyObject *m, *d;
+    int argc = 0;
+
+    init_pygobject ();
+
+#ifdef XPCOM_GLUE
+    static const GREVersionRange greVersion = {
+      "1.9b", PR_TRUE,
+      "1.9.*", PR_TRUE
+    };
+    char xpcomLocation[4096];
+    nsresult rv = GRE_GetGREPathWithProperties(&greVersion, 1, nsnull, 0, xpcomLocation, 4096);
+    if (NS_FAILED(rv)) {
+      printf("GRE_GetGREPathWithProperties failed\n");
+      return;
+    }
+
+    // Startup the XPCOM Glue that links us up with XPCOM.
+    XPCOMGlueStartup(xpcomLocation);
+    if (NS_FAILED(rv)) {
+      printf("XPCOMGlueStartup failed\n");
+      return;
+    }
+
+    rv = GTKEmbedGlueStartup();
+    if (NS_FAILED(rv)) {printf("location: %s \n", xpcomLocation);
+      printf("GTKEmbedGlueStartup failed\n");
+      return;
+    }
+
+    //gtk_moz_embed_set_comp_path(xpcomLocation);
+
+    char *lastSlash = strrchr(xpcomLocation, '/');
+    if (lastSlash)
+      *lastSlash = '\0';
+
+    gtk_moz_embed_set_path(xpcomLocation);
+#endif
+
+    m = Py_InitModule ("gtkmozembed", pygtkmozembed_functions);
+    d = PyModule_GetDict (m);
+
+    pygtkmozembed_add_constants(m, "GTK_MOZ_EMBED_");
+    pygtkmozembed_register_classes (d);
+
+    if (PyErr_Occurred ()) {
+        Py_FatalError ("can't initialise module gtkmozembed");
+    }
+}
diff -uprN gnome-python-extras-2.25.3.orig/gtkmozembed/Makefile.am gnome-python-extras-2.25.3/gtkmozembed/Makefile.am
--- gnome-python-extras-2.25.3.orig/gtkmozembed/Makefile.am	2009-04-30 13:52:57.000000000 +0200
+++ gnome-python-extras-2.25.3/gtkmozembed/Makefile.am	2009-04-30 13:53:05.000000000 +0200
@@ -12,10 +12,16 @@ pkgpyexecdir = $(pyexecdir)/gtk-2.0
 # gtkmozembed module
 pkgpyexec_LTLIBRARIES = gtkmozembed.la
 gtkmozembed_la_LDFLAGS = -module -avoid-version	\
-	-export-symbols-regex initgtkmozembed	\
-	-R$(MOZILLA_HOME) -L$(MOZILLA_HOME)
+	-export-symbols-regex initgtkmozembed \
+	$(NULL)
+
+# only use rpath for non-glue builds
+if !HAVE_XPCOM_GLUE
+       gtkmozembed_la_LDFLAGS + = -R$(MOZILLA_HOME) -L$(MOZILLA_HOME)
+endif
+
 gtkmozembed_la_LIBADD = $(GTKMOZEMBED_LIBS)
-gtkmozembed_la_SOURCES = gtkmozembedmodule.c
+gtkmozembed_la_SOURCES = gtkmozembedmodule.cpp
 nodist_gtkmozembed_la_SOURCES = gtkmozembed.c
 gtkmozembed.c: gtkmozembed.defs gtkmozembed.override
 CLEANFILES = gtkmozembed.c