--- Upstream: http://bugzilla.gnome.org/show_bug.cgi?id=532856 Gentoo: https://bugs.gentoo.org/show_bug.cgi?id=223265 Ubuntu: http://patches.ubuntu.com/by-release/extracted/ubuntu/g/gnome-python-extras/2.19.1-0ubuntu13/02_xul19.dpatch Ubuntu patch updated to apply on top of our "split gnome-python-extras" patch diff -Nuar a/configure.ac b/configure.ac --- a/configure.ac 2008-12-12 17:15:44.000000000 +0100 +++ b/configure.ac 2008-12-12 17:23:45.000000000 +0100 @@ -19,6 +19,7 @@ m4_define(mozilla_required_version, 1.2b) m4_define(firefox_required_version, 1.0) m4_define(xulrunner_required_version, 1.8) +m4_define(xulrunner19_required_version, 1.9) m4_define(libgda_required_version, 2.99.6) m4_define(gksu_required_version, 1.2.5) m4_define(gksu2_required_version, 2.0.4) @@ -186,46 +187,80 @@ dnl should we build the gtkmozembed module? AC_ARG_BINDING([gtkmozembed], [ON], [gtkmozembed]) AC_ARG_WITH(gtkmozembed, AS_HELP_STRING( - [--with-gtkmozembed=mozilla|firefox|xulrunner], + [--with-gtkmozembed=mozilla|firefox|xulrunner|xulrunner-1.9], [package that provides libgtkmozembed]), [mozpackage=$withval], [mozpackage=any]) if "$build_gtkmozembed"; then if test $mozpackage = any ; then +PKG_CHECK_MODULES(GTKMOZEMBED, [libxul-embedding >= xulrunner19_required_version + gtk+-2.0 >= gtk_required_version], + [build_gtkmozembed=true; mozpackage=xulrunner-1.9; mozpkgconfig=libxul-embedding], + [ PKG_CHECK_MODULES(GTKMOZEMBED, [xulrunner-gtkmozembed >= xulrunner_required_version gtk+-2.0 >= gtk_required_version], - [build_gtkmozembed=true; mozpackage=xulrunner], + [build_gtkmozembed=true; mozpackage=xulrunner; mozpkgconfig=$mozpackage-gtkmozembed], [ 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 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_ERROR([--with-gtkmozembed argument must be either 'mozilla', 'firefox', or 'xulrunner']) + xulrunner-1.9) mozpackage_required_version=xulrunner19_required_version ; mozpkgconfig=libxul-embedding ;; + xulrunner) mozpackage_required_version=xulrunner_required_version ; mozpkgconfig=$mozpackage-gtkmozembed ;; + 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', 'xulrunner-1.9' or 'xulrunner']) esac -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 # if mozpackage = any +if test $mozpackage = xulrunner-1.9; then +GTKMOZEMBED_CFLAGS="$GTKMOZEMBED_CFLAGS $(pkg-config --cflags --define-variable=includetype=unstable libxul-embedding)" +GTKMOZEMBED_LIBS="$GTKMOZEMBED_LIBS $(pkg-config --libs libxul-embedding)" + +else + MOZILLA_HOME="`$PKG_CONFIG --variable=libdir $mozpackage-gtkmozembed`" AC_SUBST(MOZILLA_HOME) +fi + +AC_SUBST(GTKMOZEMBED_CFLAGS) +AC_SUBST(GTKMOZEMBED_LIBS) +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]) fi # if build_gtkmozembed diff -Nuar a/gtkmozembed/gtkmozembedmodule.cpp b/gtkmozembed/gtkmozembedmodule.cpp --- a/gtkmozembed/gtkmozembedmodule.cpp 1970-01-01 01:00:00.000000000 +0100 +++ b/gtkmozembed/gtkmozembedmodule.cpp 2008-12-12 17:19:32.000000000 +0100 @@ -0,0 +1,73 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +/* include this first, before NO_IMPORT_PYGOBJECT is defined */ +#include +#include + +#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("failed 1\n"); + return; + } else printf("location: %s \n", xpcomLocation); + + // Startup the XPCOM Glue that links us up with XPCOM. + XPCOMGlueStartup(xpcomLocation); + if (NS_FAILED(rv)) { + printf("failed 2\n"); + return; + } + printf("before 3\n"); + + rv = GTKEmbedGlueStartup(); + if (NS_FAILED(rv)) {printf("location: %s \n", xpcomLocation); + printf("failed 3\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 -Nuar a/gtkmozembed/Makefile.am b/gtkmozembed/Makefile.am --- a/gtkmozembed/Makefile.am 2008-12-12 17:15:44.000000000 +0100 +++ b/gtkmozembed/Makefile.am 2008-12-12 17:19:32.000000000 +0100 @@ -13,9 +13,17 @@ pkgpyexec_LTLIBRARIES = gtkmozembed.la gtkmozembed_la_LDFLAGS = -module -avoid-version \ -export-symbols-regex initgtkmozembed \ - -R$(MOZILLA_HOME) + $(NULL) + +# only use rpath for non-glue builds +if HAVE_XPCOM_GLUE +gtkmozembed_la_LDFLAGS += $(NULL) +else +gtkmozembed_la_LDFLAGS += -R$(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