Index: gnome-python-extras-2.25.3/configure.ac =================================================================== --- gnome-python-extras-2.25.3.orig/configure.ac 2009-02-15 23:20:23.000000000 +0100 +++ gnome-python-extras-2.25.3/configure.ac 2009-03-09 17:43:01.417674203 +0100 @@ -19,6 +19,7 @@ m4_define(gtkhtml2_required_version, 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, 3.99.11) m4_define(gksu_required_version, 1.2.5) m4_define(gksu2_required_version, 2.0.4) @@ -230,65 +231,88 @@ AM_CONDITIONAL(BUILD_EGG, $build_eggrece 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 +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]) - ;; - *) 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 ; GTKMOZEMBED_CODEGEN_DEFINES="-DHAVE_XUL19" ;; + 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 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-1.9; then + GTKMOZEMBED_CFLAGS="$(pkg-config --cflags --define-variable=includetype=unstable libxul-embedding gtk+-2.0)" +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-1.9 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 Index: gnome-python-extras-2.25.3/gtkmozembed/Makefile.am =================================================================== --- gnome-python-extras-2.25.3.orig/gtkmozembed/Makefile.am 2008-12-12 02:06:29.000000000 +0100 +++ gnome-python-extras-2.25.3/gtkmozembed/Makefile.am 2009-03-09 17:11:56.390812130 +0100 @@ -13,9 +13,15 @@ pkgpyexecdir = $(pyexecdir)/gtk-2.0 pkgpyexec_LTLIBRARIES = gtkmozembed.la gtkmozembed_la_LDFLAGS = -module -avoid-version \ -export-symbols-regex initgtkmozembed \ - -R$(MOZILLA_HOME) -L$(MOZILLA_HOME) + $(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 Index: gnome-python-extras-2.25.3/gtkmozembed/gtkmozembedmodule.cpp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ gnome-python-extras-2.25.3/gtkmozembed/gtkmozembedmodule.cpp 2009-03-09 16:47:51.857680474 +0100 @@ -0,0 +1,72 @@ +#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("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"); + } +}