linamh/dev-python/gtkmozembed-python/files/gtkmozembed-python-2.19.1-xulrunner19.patch
geos_one 677e030bbd add ebuilds
git-svn-id: https://svn.disconnected-by-peer.at/svn/linamh/trunk/linamh@2464 6952d904-891a-0410-993b-d76249ca496b
2010-10-04 19:24:16 +00:00

210 lines
7.4 KiB
Diff

---
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 <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("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