summaryrefslogtreecommitdiffstats
path: root/build-aux/osx/build/updater
diff options
context:
space:
mode:
Diffstat (limited to 'build-aux/osx/build/updater')
-rw-r--r--build-aux/osx/build/updater/gedit-bootstrap-overrides.modules119
-rw-r--r--build-aux/osx/build/updater/gedit-overrides.modules211
-rw-r--r--build-aux/osx/build/updater/patches/enchant-applespell.patch368
-rw-r--r--build-aux/osx/build/updater/patches/enchant-relocatable.patch40
-rw-r--r--build-aux/osx/build/updater/patches/gedit-plugins-disable-terminal.patch30
-rwxr-xr-xbuild-aux/osx/build/updater/update_modulesets.py320
6 files changed, 1088 insertions, 0 deletions
diff --git a/build-aux/osx/build/updater/gedit-bootstrap-overrides.modules b/build-aux/osx/build/updater/gedit-bootstrap-overrides.modules
new file mode 100644
index 0000000..37c2726
--- /dev/null
+++ b/build-aux/osx/build/updater/gedit-bootstrap-overrides.modules
@@ -0,0 +1,119 @@
+<?xml version="1.0"?>
+<!DOCTYPE moduleset SYSTEM "moduleset.dtd">
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+ <repository type="tarball" name="ftp.gnome.org" default="yes" href="ftp://ftp.gnome.org/pub/gnome/sources/"/>
+ <repository type="tarball" name="xmlsoft.org" href="ftp://xmlsoft.org/libxml2/"/>
+ <repository type="tarball" name="itstool.org" href="http://files.itstool.org/itstool/"/>
+ <repository type="tarball" name="python" href="https://www.python.org/ftp/python/"/>
+ <repository type="tarball" name="oracle" href="http://download.oracle.com/"/>
+
+ <autotools id="berkeleydb-nonsrctree" autogen-sh="configure" autogen-template="%(srcdir)s/dist/%(autogen-sh)s --prefix %(prefix)s --libdir %(libdir)s %(autogenargs)s">
+
+ <branch module="berkeley-db/db-4.8.30.NC.tar.gz" version="4.8.30" repo="oracle">
+ <patch file="berkeleydb-nonsrctree/atomic.patch" strip="1"/>
+ </branch>
+ </autotools>
+
+ <autotools id="berkeleydb" autogen-sh="configure" supports-non-srcdir-builds="no" makeargs="-C build_unix" autogen-template="cd build_unix; ../dist/%(autogen-sh)s --prefix %(prefix)s --libdir %(libdir)s %(autogenargs)s" makeinstallargs="-C build_unix install">
+
+ <branch module="berkeley-db/db-4.8.30.NC.tar.gz" version="4.8.30" repo="oracle">
+ <patch file="berkeleydb/atomic.patch" strip="1"/>
+ </branch>
+ </autotools>
+
+ <autotools id='readline' autogen-sh="configure">
+ <branch repo="ftp.gnu.org" module="readline/readline-6.2.tar.gz"
+ version="6.2">
+ <patch file="http://ftp.gnu.org/gnu/readline/readline-6.2-patches/readline62-001" strip="0"/>
+ <patch file="http://ftp.gnu.org/gnu/readline/readline-6.2-patches/readline62-002" strip="0"/>
+ <patch file="http://ftp.gnu.org/gnu/readline/readline-6.2-patches/readline62-003" strip="0"/>
+ <patch file="http://ftp.gnu.org/gnu/readline/readline-6.2-patches/readline62-004" strip="0"/>
+ </branch>
+ </autotools>
+
+ <autotools id="gettext-runtime" autogen-sh="configure"
+ autogenargs="--without-emacs --disable-java --disable-native-java --disable-libasprintf --disable-csharp">
+ <branch repo="ftp.gnu.org" source-subdir="gettext-runtime"
+ module="gettext/gettext-0.18.1.1.tar.gz" version="0.18.1.1"
+ size="15139737" md5sum="3dd55b952826d2b32f51308f2f91aa89">
+ <patch file="http://git.gnome.org/browse/gtk-osx/plain/patches/gettext-bug33999-stpncpy.patch" strip="1"/>
+ </branch>
+ </autotools>
+
+ <autotools id="python" autogenargs="--enable-shared"
+ autogen-sh="configure">
+ <branch repo="python"
+ module="2.7.6/Python-2.7.6.tar.xz" version="2.7.6">
+ </branch>
+ <dependencies>
+ <dep package="gettext-runtime"/>
+ <dep package='readline'/>
+ </dependencies>
+ <after>
+ <dep package="berkeleydb"/>
+ <dep package="berkeleydb-nonsrctree"/>
+ </after>
+ </autotools>
+
+ <!-- Remove annoying autogen-sh="autoreconf" when itstool.use-correct-libxml.patch is removed -->
+ <autotools id="itstool" autogen-sh="autoreconf">
+ <branch repo="itstool.org"
+ module="itstool-2.0.2.tar.bz2"
+ version="2.0.2"
+ hash="sha256:bf909fb59b11a646681a8534d5700fec99be83bb2c57badf8c1844512227033a"
+ size="96748">
+ <patch file="https://git.gnome.org/browse/jhbuild/plain/patches/itstool.use-correct-libxml.patch" strip="1"/>
+ </branch>
+ </autotools>
+
+ <autotools id="libxml2" autogen-sh="configure" autogenargs="--with-python">
+ <branch version="2.9.0" module="libxml2-2.9.0.tar.gz"
+ repo="xmlsoft.org">
+ <patch file="http://git.gnome.org/browse/gtk-osx/plain/patches/libxml2-Bug-686118-pthreads_once_init.patch" strip="1"/>
+ </branch>
+ <dependencies>
+ <dep package="python"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="libxslt" autogen-sh="configure">
+ <branch version="1.1.27" module="libxslt-1.1.27.tar.gz" repo="xmlsoft.org"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="yelp-xsl" autogen-sh="configure">
+ <branch module="yelp-xsl/3.10/yelp-xsl-3.10.1.tar.xz"
+ version="3.10.1"
+ hash="sha256:59c6dee3999121f6ffd33a9c5228316b75bc22e3bd68fff310beb4eeff245887" />
+ <dependencies>
+ <dep package="libxslt"/>
+ <dep package="libxml2"/>
+ <dep package="intltool"/>
+ <dep package="itstool"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="yelp-tools" autogen-sh="configure">
+ <branch module="yelp-tools/3.10/yelp-tools-3.10.0.tar.xz"
+ version="3.10.0"
+ hash="sha256:ff5e1102631049b08e3ef0ade2cd10e63a62a812690e3d8558ed1413baef2611" />
+ <dependencies>
+ <dep package="libxslt"/>
+ <dep package="libxml2"/>
+ <dep package="intltool"/>
+ <dep package="yelp-xsl"/>
+ <dep package="itstool"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gtk-doc" autogenargs="--disable-scrollkeeper --with-xml-catalog=$JHBUILD_PREFIX/etc/xml/catalog" makeargs="-k -i" makeinstallargs="-k -i install" autogen-sh="configure">
+ <branch version="1.21" module="gtk-doc/1.21/gtk-doc-1.21.tar.xz" hash="sha256:5d934d012ee08edd1585544792efa80da271652587ba5b843d2cea8e8b80ee3e"/>
+ <dependencies>
+ <dep package="libxslt"/>
+ <dep package="yelp-tools"/>
+ </dependencies>
+ </autotools>
+</moduleset>
diff --git a/build-aux/osx/build/updater/gedit-overrides.modules b/build-aux/osx/build/updater/gedit-overrides.modules
new file mode 100644
index 0000000..d893392
--- /dev/null
+++ b/build-aux/osx/build/updater/gedit-overrides.modules
@@ -0,0 +1,211 @@
+<?xml version="1.0"?>
+<!DOCTYPE moduleset SYSTEM "moduleset.dtd">
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+ <repository type="git" name="git.gnome.org"
+ href="git://git.gnome.org/"/>
+ <repository type="tarball" name="ftp.gnome.org" default="yes"
+ href="http://ftp.gnome.org/pub/GNOME/sources/"/>
+ <repository type="tarball" name="cairographics.org"
+ href="http://cairographics.org/releases/"/>
+ <repository type="tarball" name="iso-codes"
+ href="http://pkg-isocodes.alioth.debian.org/downloads/"/>
+ <repository type="tarball" name="abisource/enchant"
+ href="http://www.abisource.com/downloads/enchant/" />
+ <repository type="tarball" name="tarball.github.com"
+ href="https://github.com/"/>
+ <repository type="git" name="git.github.com"
+ href="https://github.com/"/>
+
+ <autotools id="enchant"
+ autogenargs="--disable-myspell --disable-ispell">
+ <branch module="1.6.0/enchant-1.6.0.tar.gz" version="1.6.0"
+ repo="abisource/enchant">
+ <patch file="http://git.gnome.org/browse/gtk-osx/plain/patches/enchant-gsize.patch" strip="1"/>
+ <patch file="patches/enchant-applespell.patch" strip="1"/>
+ <patch file="patches/enchant-relocatable.patch" strip="1"/>
+ </branch>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gtk+-3.0"
+ autogenargs="--enable-quartz-backend --enable-quartz-relocation --disable-colord --without-atk-bridge">
+ <branch module="jessevdk/gtk" checkoutdir="gtk+-3.0" repo="git.github.com" revision="wip/app-osx-int"/>
+ <dependencies>
+ <dep package="gobject-introspection"/>
+ <dep package="pango"/>
+ <dep package="gdk-pixbuf"/>
+ <dep package="atk"/>
+ </dependencies>
+ <after>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ </after>
+ </autotools>
+
+ <autotools id="pygobject3" autogenargs="--with-python=python3">
+ <branch module="pygobject" repo="git.gnome.org"/>
+ <dependencies>
+ <dep package="meta-gtk-osx-gtk3"/>
+ </dependencies>
+ <after>
+ <dep package="python"/>
+ <dep package="python3"/>
+ </after>
+ </autotools>
+
+ <waf id="pycairo-python3" autogen-sh="configure" python-command="python3">
+ <branch module="pycairo-1.10.0.tar.bz2" repo="cairographics.org" version="1.10.0" hash="sha1:b4283aa1cc9aafd12fd72ad371303a486da1d014"/>
+ <dependencies>
+ <dep package="python3"/>
+ <dep package="cairo"/>
+ </dependencies>
+ <after>
+ <dep package="python3"/>
+ <dep package="meta-gtk-osx-gtk3"/>
+ </after>
+ </waf>
+
+ <autotools id="pango" autogen-sh="autoreconf">
+ <branch version="1.36.6" module="pango/1.36/pango-1.36.6.tar.xz" hash="sha256:4c53c752823723875078b91340f32136aadb99e91c0f6483f024f978a02c8624" repo="ftp.gnome.org">
+ </branch>
+ <dependencies>
+ <dep package="cairo"/>
+ </dependencies>
+ <after>
+ <dep package="gobject-introspection"/>
+ <dep package="meta-gtk-osx-freetype"/>
+ <dep package="glib"/>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ </after>
+ </autotools>
+
+ <autotools id="libpeas" autogenargs="PYTHON=python3 --disable-python2 --enable-python3">
+ <branch module="libpeas" repo="git.gnome.org">
+ </branch>
+ <dependencies>
+ <dep package="python3"/>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ <dep package="meta-gtk-osx-gtk3"/>
+ <dep package="pycairo-python3"/>
+ <dep package="pygobject3"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gsettings-desktop-schemas">
+ <branch module="gsettings-desktop-schemas/3.10/gsettings-desktop-schemas-3.10.1.tar.xz"
+ version="3.10.1"
+ hash="sha256:452378c4960a145747ec69f8c6a874e5b7715454df3e2452d1ff1a0a82e76811">
+ </branch>
+ <dependencies>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gtksourceview3">
+ <branch module="gtksourceview" repo="git.gnome.org"/>
+ <after>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ <dep package="meta-gtk-osx-gtk3"/>
+ </after>
+ </autotools>
+
+ <autotools id="adwaita-icon-theme" autogen-sh="configure">
+ <branch module="adwaita-icon-theme/3.13/adwaita-icon-theme-3.13.5.tar.xz"
+ version="3.13.5" hash="sha256:e163f5f7e205b5f5345dd7f2c30d4104f19376217ca90def83b61a9459a62dbc"/>
+ <dependencies>
+ <dep package="hicolor-icon-theme"/>
+ <dep package="icon-naming-utils"/>
+ <dep package="librsvg"/>
+ </dependencies>
+ </autotools>
+
+ <metamodule id="meta-gtk-osx-gtk3-core-themes">
+ <dependencies>
+ <dep package="icon-naming-utils"/>
+ <dep package="gnome-themes-standard"/>
+ <dep package="adwaita-icon-theme"/>
+ </dependencies>
+ </metamodule>
+
+ <cmake id="libgit2"
+ cmakeargs="-DTHREADSAFE:BOOL=1">
+ <branch repo="tarball.github.com"
+ module="libgit2/libgit2/archive/v${version}.tar.gz"
+ version="0.21.0"
+ hash="ae2afb5729ab6dcf6f690e5d66cb876372eaaedd37dc4fb072ad8da92338e099"
+ checkoutdir="libgit2-${version}">
+ </branch>
+ </cmake>
+
+ <autotools id="libgit2-glib">
+ <branch module="libgit2-glib/0.0/libgit2-glib-0.0.20.tar.xz"
+ version="0.0.20" hash="sha256:f8a10c8d3fcad14eed080dff6b8db0c72866c11a05b9731af31cb7258bcc8d95"/>
+ <dependencies>
+ <dep package="libgit2"/>
+ <dep package="glib"/>
+ <dep package="gobject-introspection"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="vte" autogenargs="--disable-Bsymbolic --disable-vala --disable-gnome-pty-helper">
+ <branch module="jessevdk/vte" repo="git.github.com"/>
+ <dependencies>
+ <dep package="meta-gtk-osx-gtk3"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gedit-plugins">
+ <branch module="gedit-plugins" repo="git.gnome.org"/>
+ <dependencies>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ <dep package="gedit"/>
+ <dep package="libgit2-glib"/>
+ <dep package="vte"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="libsoup" autogen-sh="configure" autogenargs="set_more_warnings=no">
+ <branch module="libsoup/2.40/libsoup-2.40.1.tar.xz"
+ version="2.40.1" hash="sha256:77a55d57e7e8055acd2f44e0cc889b9ba48052e8b7f07e829157d57417ac650a" />
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="glib-networking"/>
+ <dep package='sqlite'/>
+ </dependencies>
+ </autotools>
+
+ <metamodule id="gedit-deps">
+ <dependencies>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ <dep package="meta-gtk-osx-freetype"/>
+ <dep package="meta-gtk-osx-gtk3"/>
+ <dep package="libpeas"/>
+ <dep package="gtksourceview3"/>
+ <dep package="enchant"/>
+ <dep package="gsettings-desktop-schemas"/>
+ <dep package="iso-codes"/>
+ <dep package="shared-mime-info"/>
+ <dep package="libsoup"/>
+ </dependencies>
+ </metamodule>
+
+ <autotools id="gedit" autogenargs="PYTHON=python3">
+ <branch repo="git.gnome.org" module="gedit"/>
+ <dependencies>
+ <dep package="gedit-deps"/>
+ </dependencies>
+ </autotools>
+
+ <metamodule id="gedit-meta">
+ <dependencies>
+ <dep package="gedit"/>
+ <dep package="gedit-plugins"/>
+ </dependencies>
+ </metamodule>
+
+</moduleset>
+
+<!-- vi:ex:ts=2:et -->
diff --git a/build-aux/osx/build/updater/patches/enchant-applespell.patch b/build-aux/osx/build/updater/patches/enchant-applespell.patch
new file mode 100644
index 0000000..f6f1f65
--- /dev/null
+++ b/build-aux/osx/build/updater/patches/enchant-applespell.patch
@@ -0,0 +1,368 @@
+--- a/configure.in (revision 30591)
++++ b/configure.in (working copy)
+@@ -33,4 +33,5 @@
+ AC_PROG_CC
+ AC_PROG_CPP
++AC_PROG_OBJC
+ AC_PROG_INSTALL
+ AC_PROG_LN_S
+--- a/src/applespell/Makefile.am 2010-04-01 22:53:37.000000000 +0200
++++ b/src/applespell/Makefile.am 2012-01-11 22:42:13.000000000 +0100
+@@ -1,4 +1,13 @@
+-EXTRA_DIST= \
+- applespell_checker.h \
+- applespell_checker.mm \
+- AppleSpell.config
++target_lib = libenchant_applespell.la
++
++INCLUDES=-I$(top_srcdir)/src $(ENCHANT_CFLAGS) $(CC_WARN_CFLAGS) -DXP_TARGET_COCOA -xobjective-c -D_ENCHANT_BUILD=1
++
++applespell_LTLIBRARIES = $(target_lib)
++applespelldir= $(libdir)/enchant
++
++libenchant_applespell_la_LIBADD= $(ENCHANT_LIBS) -lobjc $(top_builddir)/src/libenchant.la
++libenchant_applespell_la_LDFLAGS = -module -avoid-version -no-undefined -framework Cocoa
++libenchant_applespell_la_SOURCES = applespell_provider.m
++libenchant_applespell_la_LIBTOOLFLAGS = --tag=CC
++
++libenchant_applespell_lalibdir=$(libdir)/enchant
+--- a/src/applespell/applespell_provider.m 2012-01-11 22:46:35.000000000 +0100
++++ b/src/applespell/applespell_provider.m 2012-01-11 22:39:17.000000000 +0100
+@@ -0,0 +1,337 @@
++/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
++/* enchant
++ * Copyright (C) 2004 Remi Payette
++ * Copyright (C) 2004 Francis James Franklin
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2
++ * of the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++ * 02110-1301, USA.
++ */
++
++#include <glib.h>
++#include <gmodule.h>
++#include <Cocoa/Cocoa.h>
++#include <AvailabilityMacros.h>
++
++#include "enchant-provider.h"
++
++#ifdef __cplusplus
++extern "C"
++{
++#endif
++
++ENCHANT_MODULE_EXPORT (EnchantProvider *)
++init_enchant_provider (void);
++
++ENCHANT_MODULE_EXPORT (void)
++configure_enchant_provider (EnchantProvider *provider, const gchar *module_dir);
++
++#ifdef __cplusplus
++}
++#endif
++
++ENCHANT_PLUGIN_DECLARE("AppleSpell")
++
++typedef struct
++{
++ NSSpellChecker *checker;
++ NSString *language;
++} Dictionary;
++
++static Dictionary *
++dictionary_new (NSSpellChecker *checker,
++ NSString *language)
++{
++ Dictionary *ret;
++
++ ret = g_slice_new (Dictionary);
++
++ ret->checker = checker;
++ ret->language = language;
++
++ return ret;
++}
++
++static void
++dictionary_free (Dictionary *dictionary)
++{
++ [dictionary->language release];
++ g_slice_free (Dictionary, dictionary);
++}
++
++static gchar **
++applespell_dict_suggest (EnchantDict *dict,
++ const gchar * const word,
++ size_t len,
++ size_t *out_n_suggs)
++{
++ NSAutoreleasePool *pool;
++ gchar **ret = NULL;
++ NSString *str;
++ Dictionary *d;
++ NSArray *words;
++ NSRange range;
++ guint i = 0;
++
++ pool = [[NSAutoreleasePool alloc] init];
++
++ d = dict->user_data;
++
++ str = [[NSString alloc] initWithBytes:word length:len encoding:NSUTF8StringEncoding];
++
++ range.location = 0;
++ range.length = [str length];
++
++#if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_5
++ words = [d->checker guessesForWordRange:range
++ inString:str
++ language:d->language
++ inSpellDocumentWithTag:0];
++#else
++ [d->checker setLanguage:d->language];
++ words = [d->checker guessesForWord:str];
++#endif
++
++ *out_n_suggs = [words count];
++
++ ret = g_new0 (gchar *, *out_n_suggs + 1);
++
++ for (i = 0; i < [words count]; ++i)
++ {
++ ret[i] = g_strdup ([[words objectAtIndex:i] UTF8String]);
++ }
++
++ [str release];
++ [pool release];
++
++ return ret;
++}
++
++static gint
++applespell_dict_check (EnchantDict *dict,
++ const gchar * const word,
++ size_t len)
++{
++ NSAutoreleasePool *pool;
++ gint result = 0;
++ NSString *str;
++ Dictionary *d;
++ NSRange range;
++
++ pool = [[NSAutoreleasePool alloc] init];
++
++ d = dict->user_data;
++
++ str = [[NSString alloc] initWithBytes:word length:len encoding:NSUTF8StringEncoding];
++
++ range = [d->checker checkSpellingOfString:str
++ startingAt:0
++ language:d->language
++ wrap:true
++ inSpellDocumentWithTag:0
++ wordCount:NULL];
++
++ result = range.length > 0 ? 1 : 0;
++
++ [str release];
++ [pool release];
++
++ return result;
++}
++
++static EnchantDict *
++applespell_provider_request_dict (EnchantProvider *provider,
++ const char * const tag)
++{
++ NSAutoreleasePool *pool;
++ EnchantDict *dict;
++ NSString *str;
++
++ pool = [[NSAutoreleasePool alloc] init];
++ str = [[NSString alloc] initWithUTF8String:tag];
++
++ dict = g_new0 (EnchantDict, 1);
++
++ dict->check = applespell_dict_check;
++ dict->suggest = applespell_dict_suggest;
++
++ dict->user_data = dictionary_new (provider->user_data,
++ str);
++
++ [str retain];
++
++ [pool release];
++ return dict;
++}
++
++static void
++applespell_provider_dispose_dict (EnchantProvider *provider,
++ EnchantDict *dict)
++{
++ NSAutoreleasePool *pool;
++
++ pool = [[NSAutoreleasePool alloc] init];
++
++ dictionary_free (dict->user_data);
++ g_free (dict);
++
++ [pool release];
++}
++
++#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
++static gchar const *available_languages[] = {
++ "en",
++ "en_GB",
++ "en_AU",
++ "de",
++ "fr",
++ "nl",
++ "pl",
++ NULL
++};
++
++#endif
++
++static gint
++applespell_provider_dictionary_exists (EnchantProvider *provider,
++ const gchar * const tag)
++{
++ NSAutoreleasePool *pool;
++ gint result = 0;
++ NSSpellChecker *checker;
++#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
++ NSArray *languages;
++ guint i;
++#else
++ gchar const **ptr;
++#endif
++
++ pool = [[NSAutoreleasePool alloc] init];
++
++ checker = provider->user_data;
++
++#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
++ languages = [checker availableLanguages];
++
++ for (i = 0; i < [languages count]; ++i)
++ {
++ if (g_strcmp0 (tag, [[languages objectAtIndex:i] UTF8String]) == 0)
++ {
++ result = 1;
++ break;
++ }
++ }
++#else
++ ptr = available_languages;
++
++ while (ptr && *ptr)
++ {
++ if (g_strcmp0 (tag, *ptr) == 0)
++ {
++ result = 1;
++ break;
++ }
++ ++ptr;
++ }
++#endif
++
++ [pool release];
++
++ return result;
++}
++
++static void
++applespell_provider_dispose (EnchantProvider *provider)
++{
++ g_free (provider);
++}
++
++static const gchar *
++applespell_provider_identify (EnchantProvider *provider)
++{
++ return "AppleSpell";
++}
++
++static const gchar *
++applespell_provider_describe (EnchantProvider *provider)
++{
++ return "AppleSpell Provider";
++}
++
++static gchar **
++applespell_provider_list_dicts (EnchantProvider *provider,
++ size_t *out_n_dicts)
++{
++ NSSpellChecker *checker;
++ NSAutoreleasePool *pool;
++ gchar **ret = NULL;
++#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
++ NSArray *languages;
++ guint i = 0;
++#endif
++
++ pool = [[NSAutoreleasePool alloc] init];
++
++ checker = provider->user_data;
++
++#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
++ languages = [checker availableLanguages];
++ *out_n_dicts = [languages count];
++
++ ret = g_new0 (gchar *, *out_n_dicts + 1);
++
++ for (i = 0; i < [languages count]; ++i)
++ {
++ ret[i] = g_strdup ([[languages objectAtIndex:i] UTF8String]);
++ }
++#else
++ ret = g_strdupv ((gchar **)available_languages);
++#endif
++
++ [pool release];
++
++ return ret;
++}
++
++ENCHANT_MODULE_EXPORT (EnchantProvider *)
++init_enchant_provider (void)
++{
++ NSAutoreleasePool *pool;
++ EnchantProvider *provider;
++
++ pool = [[NSAutoreleasePool alloc] init];
++
++ provider = g_new0 (EnchantProvider, 1);
++
++ provider->dispose = applespell_provider_dispose;
++ provider->request_dict = applespell_provider_request_dict;
++ provider->dispose_dict = applespell_provider_dispose_dict;
++ provider->dictionary_exists = applespell_provider_dictionary_exists;
++ provider->identify = applespell_provider_identify;
++ provider->describe = applespell_provider_describe;
++ provider->list_dicts = applespell_provider_list_dicts;
++
++ provider->user_data = [NSSpellChecker sharedSpellChecker];
++
++ [pool release];
++
++ return provider;
++}
++
++ENCHANT_MODULE_EXPORT (void)
++configure_enchant_provider (EnchantProvider *provider,
++ const gchar *module_dir)
++{
++ return;
++}
diff --git a/build-aux/osx/build/updater/patches/enchant-relocatable.patch b/build-aux/osx/build/updater/patches/enchant-relocatable.patch
new file mode 100644
index 0000000..7e56eb7
--- /dev/null
+++ b/build-aux/osx/build/updater/patches/enchant-relocatable.patch
@@ -0,0 +1,40 @@
+--- a/src/enchant.c 2010-04-01 22:53:37.000000000 +0200
++++ b/src/enchant.c 2014-08-26 21:32:21.000000000 +0200
+@@ -210,6 +210,13 @@
+ char * module_dir = NULL;
+ char * prefix = NULL;
+
++ const char *envdir = g_getenv ("ENCHANT_MODULES_DIR");
++
++ if (envdir != NULL && *envdir != '\0')
++ {
++ module_dirs = enchant_slist_append_unique_path (module_dirs, g_strdup (envdir));
++ }
++
+ {
+ char* user_module_dir;
+
+@@ -239,7 +246,8 @@
+ module_dirs = enchant_slist_append_unique_path (module_dirs, module_dir);
+
+ #if defined(ENCHANT_GLOBAL_MODULE_DIR)
+- module_dirs = enchant_slist_append_unique_path (module_dirs, g_strdup (ENCHANT_GLOBAL_MODULE_DIR));
++ if (envdir == NULL || *envdir == '\0')
++ module_dirs = enchant_slist_append_unique_path (module_dirs, g_strdup (ENCHANT_GLOBAL_MODULE_DIR));
+ #else
+ /* Dynamically locate library and search for modules relative to it. */
+ prefix = enchant_get_prefix_dir();
+@@ -278,6 +286,13 @@
+ if (ordering_dir)
+ conf_dirs = enchant_slist_append_unique_path (conf_dirs, ordering_dir);
+
++ const char *envdir = g_getenv ("ENCHANT_DATA_DIR");
++
++ if (envdir != NULL && *envdir != '\0')
++ {
++ conf_dirs = enchant_slist_append_unique_path (conf_dirs, g_strdup (envdir));
++ }
++
+ /* Dynamically locate library and search for files relative to it. */
+ prefix = enchant_get_prefix_dir();
+ if(prefix)
diff --git a/build-aux/osx/build/updater/patches/gedit-plugins-disable-terminal.patch b/build-aux/osx/build/updater/patches/gedit-plugins-disable-terminal.patch
new file mode 100644
index 0000000..e1d2928
--- /dev/null
+++ b/build-aux/osx/build/updater/patches/gedit-plugins-disable-terminal.patch
@@ -0,0 +1,30 @@
+--- a/configure.ac 2011-10-16 22:03:19.000000000 +0200
++++ b/configure.ac 2012-01-15 13:57:54.000000000 +0100
+@@ -246,6 +246,27 @@
+ fi
+ fi
+
++# ================================================================
++# Terminal (vte)
++# ================================================================
++plugin_defined terminal
++
++if test "$?" = 1
++then
++ AC_CHECK_LIB([vte], [vte_terminal_new], [have_vte=yes], [have_vte=no])
++
++ if test "x$have_vte" = "xno"; then
++ plugin_defined_explicit terminal
++ if test "$?" = 1
++ then
++ AC_MSG_ERROR([vte could not be found, needed for terminal plugin])
++ else
++ AC_MSG_WARN([vte could not be found, terminal plugin will be disabled])
++ undef_plugin terminal "vte not found"
++ fi
++ fi
++fi
++
+ if test -z "$disabled_plugins"
+ then
+ disabled_plugins="none"
diff --git a/build-aux/osx/build/updater/update_modulesets.py b/build-aux/osx/build/updater/update_modulesets.py
new file mode 100755
index 0000000..1382297
--- /dev/null
+++ b/build-aux/osx/build/updater/update_modulesets.py
@@ -0,0 +1,320 @@
+#!/usr/bin/env python
+
+import lxml.etree as ET
+import lxml.objectify
+
+import subprocess, shutil, os, glob, urllib2, json, sys, difflib
+
+if not os.path.exists('.gtk-osx'):
+ subprocess.call(['git', 'clone', 'git://git.gnome.org/gtk-osx', '.gtk-osx'])
+
+try:
+ os.makedirs('.cache')
+except:
+ pass
+
+class Merger:
+ def __init__(self):
+ self.repos = {}
+ self.modules = {}
+
+ def normalize_xml(self, xml):
+ s = ET.tostring(xml)
+ o = lxml.objectify.fromstring(s)
+
+ return ET.tostring(o, pretty_print=True)
+
+ def extract_repos(self, t):
+ default = None
+
+ for repo in t.findall('./repository'):
+ name = repo.attrib['name']
+
+ if 'default' in repo.attrib:
+ default = repo
+
+ if not name in self.repos:
+ self.repos[name] = repo
+
+ return default
+
+ def parse_module(self, f):
+ t = ET.parse(f)
+ drepo = self.extract_repos(t)
+
+ tags = {}
+
+ for x in t.getroot().findall('./'):
+ if x.tag == 'include' or x.tag == 'repository':
+ continue
+
+ branch = x.find('./branch')
+
+ if not branch is None and not 'repo' in branch.attrib:
+ branch.attrib['repo'] = drepo.attrib['name']
+
+ id = x.attrib['id']
+
+ if id in self.modules:
+ print('Overriding existing module {0}:'.format(id))
+
+ a = self.normalize_xml(self.modules[id]).splitlines(True)
+ b = self.normalize_xml(x).splitlines(True)
+
+ print(''.join(difflib.unified_diff(a, b, fromfile='old', tofile='new')))
+ print('\n')
+
+ sys.stdout.write('Do you want to keep the original, or the new file? [(o)riginal, (n)new] ')
+ sys.stdout.flush()
+ answer = sys.stdin.readline().rstrip()
+
+ if answer == '' or answer == 'n' or answer == 'new':
+ self.modules[id] = x
+ print('Using new version\n')
+ else:
+ print('Used original version\n')
+ else:
+ self.modules[id] = x
+
+ def copy_patches(self, mod):
+ # Copy patches locally
+ patches = mod.findall('./branch/patch')
+
+ if len(patches) == 0:
+ return
+
+ dname = 'modulesets/patches/' + mod.attrib['id']
+
+ try:
+ os.makedirs(dname)
+ except:
+ pass
+
+ locc = 'http://git.gnome.org/browse/gtk-osx/plain/'
+
+ for p in patches:
+ f = p.attrib['file']
+
+ pname = os.path.basename(f)
+
+ if f.startswith(locc):
+ shutil.copyfile('.gtk-osx/' + f[len(locc):], dname + '/' + pname)
+ elif f.startswith('patches/'):
+ shutil.copyfile(f, dname + '/' + pname)
+ else:
+ content = self.from_cache_or_url(os.path.join('patches', mod.attrib['id'], pname), f)
+
+ with open(dname + '/' + pname, 'w') as patch:
+ patch.write(content)
+
+ p.attrib['file'] = mod.attrib['id'] + '/' + pname
+
+ def from_cache_or_url(self, filename, url):
+ cfile = os.path.join('.cache', filename)
+
+ try:
+ with open(cfile) as f:
+ return f.read()
+ except:
+ pass
+
+ resp = urllib2.urlopen(url)
+ ret = resp.read()
+ resp.close()
+
+ dname = os.path.dirname(cfile)
+
+ try:
+ os.makedirs(dname)
+ except:
+ pass
+
+ try:
+ with open(cfile, 'w') as f:
+ f.write(ret)
+ except:
+ pass
+
+ return ret
+
+ def update_module(self, mod):
+ branch = mod.find('./branch')
+
+ if branch is None:
+ return
+
+ if not branch.attrib['repo'].endswith('.gnome.org'):
+ return
+
+ # Check for latest versions
+ repo = self.repos[branch.attrib['repo']]
+
+ if repo.attrib['type'] != 'tarball':
+ return
+
+ module = branch.attrib['module']
+
+ modname = module.split('/', 2)[0]
+ version = [int(x) for x in branch.attrib['version'].split('.')]
+
+ # Skip updating gtk+ 2.x
+ if modname == 'gtk+' and version[0] == 2:
+ return
+
+ href = repo.attrib['href']
+ versions = self.from_cache_or_url(mod.attrib['id'] + '.json', href + modname + '/cache.json')
+ versions = json.loads(versions)
+
+ latest = [version, version]
+
+ for v in versions[1][modname]:
+ vv = [int(x) for x in v.split('.')]
+
+ if vv[1] % 2 == 0:
+ if vv > latest[0] and vv[0] == latest[0][0]:
+ latest[0] = vv
+ else:
+ if vv > latest[1] and vv[0] == latest[1][0]:
+ latest[1] = vv
+
+ if latest[0] > version or latest[1] > version:
+ choices = []
+
+ if latest[0] > version:
+ choices.append('stable = {0}'.format('.'.join([str(x) for x in latest[0]])))
+
+ if latest[1] > version:
+ choices.append('unstable = {0}'.format('.'.join([str(x) for x in latest[1]])))
+
+ sversion = '.'.join([str(x) for x in version])
+ print('Found new versions for {0} = {1}: {2}'.format(modname, sversion, ', '.join(choices)))
+
+ sys.stdout.write('Do you want to update? [(s)table/(u)nstable/(n)o]: ')
+ sys.stdout.flush()
+ answer = sys.stdin.readline().rstrip()
+
+ nv = None
+
+ if answer == '':
+ if latest[0] > latest[1]:
+ answer = 'stable'
+ else:
+ answer = 'unstable'
+
+ if (answer == 'stable' or answer == 's') and latest[0] > version:
+ nv = latest[0]
+ elif (answer =='unstable' or answer == 'u') and latest[1] > version:
+ nv = latest[1]
+
+ if not nv is None:
+ v = '.'.join([str(x) for x in nv])
+ info = versions[1][modname][v]
+ branch.attrib['version'] = v
+ branch.attrib['module'] = '{0}/{1}'.format(modname, info['tar.xz'])
+
+ hfile = href + modname + '/' + info['sha256sum']
+
+ ret = self.from_cache_or_url(os.path.join('hashes', modname, info['sha256sum']), hfile)
+
+ for line in ret.splitlines():
+ hash, fname = line.rstrip().split(None, 2)
+
+ if fname == os.path.basename(info['tar.xz']):
+ branch.attrib['hash'] = 'sha256:{0}'.format(hash)
+
+ print('Updated to version {0}\n'.format(v))
+ else:
+ print('Keep version {0}\n'.format(sversion))
+
+ def merge(self, modules, entry_point, overrides):
+ self.modules = {}
+ self.repos = {}
+
+ for mod in modules:
+ self.parse_module(mod)
+
+ self.required_modules = []
+ processed = set()
+
+ self.parse_module(overrides)
+
+ process = [self.modules[entry_point]]
+ processed.add(entry_point)
+
+ while len(process) != 0:
+ mod = process.pop()
+ id = mod.attrib['id']
+
+ self.required_modules.insert(0, mod)
+
+ deps = mod.findall('./dependencies/dep') + mod.findall('./after/dep') + mod.findall('./suggests/dep')
+
+ for dep in deps:
+ package = dep.attrib['package']
+
+ if package in processed:
+ continue
+
+ if not package in self.modules:
+ sys.stderr.write('Package dependency is not in modules... {0}\n'.format(package))
+ sys.exit(1)
+
+ processed.add(package)
+ process.insert(0, self.modules[package])
+
+ def write(self, f):
+ needed_repos = {}
+
+ for mod in self.required_modules:
+ branch = mod.find('./branch')
+
+ if not branch is None and 'repo' in branch.attrib:
+ needed_repos[branch.attrib['repo']] = self.repos[branch.attrib['repo']]
+
+ try:
+ os.makedirs('.cache')
+ except:
+ pass
+
+ for mod in self.required_modules:
+ self.copy_patches(mod)
+ self.update_module(mod)
+
+ with open(f, 'w') as f:
+ root = ET.Element('moduleset')
+
+ repos = needed_repos.values()
+ repos.sort(lambda a, b: cmp(a.attrib['name'], b.attrib['name']))
+
+ for repo in repos:
+ root.append(repo)
+
+ for mod in self.required_modules:
+ root.append(mod)
+
+ ret = ET.ElementTree(root)
+
+ content = ET.tostring(ret, pretty_print=True, xml_declaration=True, encoding='utf-8', doctype='<!DOCTYPE moduleset SYSTEM "moduleset.dtd">')
+ f.write(content)
+
+shutil.rmtree('modulesets', ignore_errors=True)
+
+os.makedirs('modulesets')
+os.makedirs('modulesets/patches')
+
+allf = glob.glob('.gtk-osx/modulesets-stable/*.modules')
+
+nobs = [x for x in allf if os.path.basename(x) != 'bootstrap.modules']
+bs = [x for x in allf if os.path.basename(x) == 'bootstrap.modules']
+
+m = Merger()
+
+m.merge(nobs, 'gedit-meta', 'gedit-overrides.modules')
+m.write('modulesets/gedit.modules')
+
+m.merge(bs, 'meta-bootstrap', 'gedit-bootstrap-overrides.modules')
+m.write('modulesets/bootstrap.modules')
+
+print('New modules have been written to "modulesets"')
+
+# vi:ts=4:et