[gedit/wip/3.14-osx: 16/16] [osx] Improve automatic build system for OS X
- From: Jesse van den Kieboom <jessevdk src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit/wip/3.14-osx: 16/16] [osx] Improve automatic build system for OS X
- Date: Thu, 21 Aug 2014 18:46:33 +0000 (UTC)
commit b21c7f842088040e1ab0953d4eed52b9f8fc28db
Author: Jesse van den Kieboom <jessevdk gmail com>
Date: Thu Aug 21 20:36:46 2014 +0200
[osx] Improve automatic build system for OS X
osx/build/.gitignore | 5 +
osx/build/build | 151 +++++++
osx/build/config/jhbuildrc-gedit | 33 ++
osx/build/modulesets/bootstrap.modules | 249 ++++++++++
osx/build/modulesets/gedit.modules | 474 ++++++++++++++++++++
.../patches/berkeleydb-nonsrctree/atomic.patch | 20 +
.../modulesets/patches/berkeleydb/atomic.patch | 20 +
.../modulesets/patches/enchant/enchant-gsize.patch | 97 ++++
.../gettext-runtime/gettext-bug33999-stpncpy.patch | 63 +++
.../gettext-tools/gettext-bug33999-stpncpy.patch | 63 +++
...1-Bug-724590-GSlice-slab_stack-corruption.patch | 28 ++
.../gobject-introspection/girscanner-objc.patch | 20 +
...722-Drag-and-Drop-sometimes-stops-working.patch | 274 +++++++++++
...GtkDragSourceOwner-pasteboardChangedOwner.patch | 39 ++
.../patches/gtk+/gtk+-2-m4-creation.patch | 5 +
...ed-exception-from-attempting-to-access-me.patch | 39 ++
.../itstool/itstool.use-correct-libxml.patch | 28 ++
.../libxml2-Bug-686118-pthreads_once_init.patch | 33 ++
...t-Merge-multiple-platform-case-statements.patch | 79 ++++
.../modulesets/patches/readline/readline62-001 | 46 ++
.../modulesets/patches/readline/readline62-002 | 57 +++
.../modulesets/patches/readline/readline62-003 | 76 ++++
.../modulesets/patches/readline/readline62-004 | 108 +++++
...0001-Bug-70255-Build-fails-with-glib-2.38.patch | 42 ++
.../patches/dbus-relocatable-services.patch | 0
.../patches/enchant-applespell.patch | 0
.../patches/gedit-plugins-disable-terminal.patch | 0
.../patches/mac-integration-open-files.patch | 0
...t-Merge-multiple-platform-case-statements.patch | 79 ++++
.../updater/gedit-bootstrap-overrides.modules | 119 +++++
osx/build/updater/gedit-overrides.modules | 174 +++++++
osx/build/updater/update_modulesets.py | 317 +++++++++++++
osx/jhbuild/gedit.modules | 351 ---------------
osx/jhbuild/jhbuildrc-gedit | 41 --
osx/jhbuild/patches/dconf-dylib.patch | 126 ------
osx/jhbuild/patches/dconf-echo-escape.patch | 12 -
osx/jhbuild/patches/ffi-darwin11.patch | 11 -
osx/jhbuild/patches/glib-iconv.patch | 18 -
.../patches/gobject-introspection-casecmp.patch | 11 -
osx/jhbuild/patches/gtk-dnd-offscreen.patch | 11 -
osx/jhbuild/patches/gtk-introspection.patch | 14 -
osx/jhbuild/patches/gtk-settings-ini-xdg.patch | 39 --
osx/jhbuild/patches/libpeas-disable-valademo.patch | 23 -
osx/jhbuild/patches/libpeas-pygobject-api.patch | 25 -
osx/jhbuild/patches/pango-coretext-invisible.patch | 32 --
45 files changed, 2738 insertions(+), 714 deletions(-)
---
diff --git a/osx/build/.gitignore b/osx/build/.gitignore
new file mode 100644
index 0000000..fdd88bc
--- /dev/null
+++ b/osx/build/.gitignore
@@ -0,0 +1,5 @@
+.build
+.home
+updater/.cache
+updater/.gtk-osx
+updater/modulesets
diff --git a/osx/build/build b/osx/build/build
new file mode 100755
index 0000000..26b4770
--- /dev/null
+++ b/osx/build/build
@@ -0,0 +1,151 @@
+#!/bin/bash
+
+pushd $(dirname $(dirname "$0")) > /dev/null
+D=$(pwd -P)
+popd > /dev/null
+
+BASED="$D/.build"
+HOMED="$D/.home"
+
+SOURCED="$HOMED/source"
+INSTALLD="$HOMED/.local"
+
+GTK_OSX_BASE_URL="https://git.gnome.org/browse/gtk-osx/plain/"
+JHBUILD_SOURCED="$SOURCED/jhbuild"
+
+if [ -z "$GEDIT_SDK" ]; then
+ export GEDIT_SDK=10.7
+fi
+
+export PATH="$INSTALLD/bin:$PATH"
+
+function do_exit() {
+ echo "$1"
+ exit 1
+}
+
+if [ ! which git &>/dev/null ]; then
+ do_exit "You need to have git installed to build gedit for OS X"
+fi
+
+if [ ! xcodebuild -version &>/dev/null ]; then
+ do_exit "You need to have Xcode installed to build gedit for OS X"
+fi
+
+function checkout_jhbuild() {
+ #JHBUILD_REVISION=$(curl -ks "$GTK_OSX_BASE_URL/jhbuild-revision")
+
+ #if test x"$JHBUILD_REVISION" = x; then
+ # do_exit "Could not find jhbuild revision to use."
+ #fi
+
+ mkdir -p $(dirname "$JHBUILD_SOURCED")
+
+ git clone git://git.gnome.org/jhbuild "$JHBUILD_SOURCED" || do_exit "Failed to clone jhbuild."
+ #git --work-tree "$JHBUILD_SOURCED" checkout -b stable $JHBUILD_REVISION || do_exit "Failed to
checkout stable jhbuild revision."
+}
+
+function build_jhbuild() {
+ echo "Building jhbuild..."
+ (cd "$JHBUILD_SOURCED" && ./autogen.sh --prefix="$INSTALLD" && make -f Makefile.plain
DISABLE_GETTEXT=1 install) >/dev/null || do_exit "Jhbuild installation failed";
+
+ rm -f "$INSTALLD/bin/python2"
+
+ cat << PYTHON2 > "$INSTALLD/bin/python2"
+#!/bin/bash
+
+exec /usr/bin/python "\$@"
+PYTHON2
+ chmod +x "$INSTALLD/bin/python2"
+}
+
+function setup_jhbuildrc() {
+ echo "Installing jhbuild configuration..."
+
+ mkdir -p "$HOMED"
+ curl -ks "$GTK_OSX_BASE_URL/jhbuildrc-gtk-osx" | \
+ sed -e 's/^.*PYTHONPATH.*$//g' -e 's/^.*PYTHON_SITE_PACKAGES.*$//g' > "$HOMED/.jhbuildrc" || do_exit
"Failed to get jhbuildrc."
+
+ rm -f "$HOMED/.jhbuildrc-gedit"
+ ln -s "$D/config/jhbuildrc-gedit" "$HOMED/.jhbuildrc-gedit" || exit 1
+}
+
+function cmd_init() {
+ mkdir -p "$SOURCED"
+
+ if [ ! -d "$JHBUILD_SOURCED" ]; then
+ checkout_jhbuild
+ fi
+
+ build_jhbuild
+ setup_jhbuildrc
+}
+
+function cmd_bootstrap() {
+ # Built python once
+ cmd_jh bootstrap -q python || exit 1
+
+ # Built python twice! There is a bug where python somehow manages to link
+ # its main binary to the system framework library, which then doesn't work...
+ # Building python again seems to resolve the issue...
+ cmd_jh bootstrap -q -f -t python python || exit 1
+
+ # Bootstrap all the rest
+ cmd_jh bootstrap -q || exit 1
+}
+
+function cmd_jh() {
+ # Setup our jhbuild environment
+ export GEDIT_OSX_SOURCE_BASE="$D"
+ export GEDIT_OSX_BUILD_BASE="$BASED"
+ export HOME="$HOMED"
+ export JHB=gedit
+
+ "$INSTALLD/bin/jhbuild" -f "$HOMED/.jhbuildrc" "$@"
+}
+
+function cmd_shell() {
+ cmd_jh shell
+}
+
+function cmd_all() {
+ if [ ! -d "$JHBUILD_SOURCED" ]; then
+ echo "init..."
+ cmd_init || exit 1
+ fi
+
+ if [ ! -f "$BASED/$GEDIT_SDK/inst/bin/python" ]; then
+ echo "bootstrap"
+ cmd_bootstrap || exit 1
+ fi
+
+ cmd_jh build -q
+}
+
+commands=()
+
+while read line
+do
+ cmd=${line#declare -f }
+
+ if [[ "$cmd" = cmd_* ]]; then
+ commands+=(${cmd#cmd_})
+ fi
+done < <(declare -F)
+
+cmds=$(printf ", %s" "${commands[ ]}")
+cmds=${cmds:2}
+
+if [ -z "$1" ]; then
+ cmd_all
+ exit 0
+fi
+
+cmd="cmd_$1"
+
+if [[ $(type -t "$cmd") != "function" ]]; then
+ do_exit "Invalid command $1, available commands are: $cmds"
+fi
+
+shift 1
+"$cmd" "$@"
diff --git a/osx/build/config/jhbuildrc-gedit b/osx/build/config/jhbuildrc-gedit
new file mode 100644
index 0000000..c0a0a2d
--- /dev/null
+++ b/osx/build/config/jhbuildrc-gedit
@@ -0,0 +1,33 @@
+# -*- mode: python -*-
+
+import sys, os
+
+_gsdk = os.environ.get('GEDIT_SDK', None)
+
+if not _gsdk:
+ sys.stderr.write("No GEDIT_SDK environment given. Please provide 10.x\n")
+ sys.exit(1)
+
+_basedir = os.environ['GEDIT_OSX_BUILD_BASE']
+
+if not _basedir:
+ sys.stderr.write("No GEDIT_OSX_BASE environment given. Please provide the base build directory\n")
+ sys.exit(1)
+
+_sourcedir = os.environ['GEDIT_OSX_SOURCE_BASE']
+
+if not _sourcedir:
+ sys.stderr.write("No GEDIT_OSX_SOURCE_BASE environment given. Please provide the base source
directory\n")
+ sys.exit(1)
+
+checkoutroot = os.path.join(_basedir, _gsdk, "source")
+prefix = os.path.join(_basedir, _gsdk, "inst")
+tarballdir = os.path.join(_basedir, "pkgs")
+
+# Main setup
+setup_sdk(target=_gsdk, sdk_version=_gsdk, architectures=['x86_64'])
+
+# Main module set
+modulesets_dir = os.path.join(_sourcedir, "modulesets")
+moduleset = "gedit.modules"
+modules = ["gedit"]
diff --git a/osx/build/modulesets/bootstrap.modules b/osx/build/modulesets/bootstrap.modules
new file mode 100644
index 0000000..0c5eb9a
--- /dev/null
+++ b/osx/build/modulesets/bootstrap.modules
@@ -0,0 +1,249 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!DOCTYPE moduleset SYSTEM "moduleset.dtd">
+<moduleset><repository type="tarball" name="xmlsoft.org" href="ftp://xmlsoft.org/libxml2/"/>
+ <repository type="tarball" name="intltool" href="http://launchpad.net/intltool/trunk/"/>
+
+ <repository type="tarball" name="cmake" href="http://www.cmake.org/files/"/>
+ <repository type="tarball" name="python" href="http://www.python.org/ftp/python/"/>
+ <repository type="tarball" name="apache.org" href="http://archive.apache.org/dist/"/>
+ <repository type="tarball" name="pkgconfig" href="http://pkgconfig.freedesktop.org/releases/"/>
+ <repository type="tarball" name="tukaani.org" href="http://tukaani.org/"/>
+ <repository type="tarball" name="itstool.org" href="http://files.itstool.org/itstool/"/>
+ <repository type="tarball" name="sourceforge" href="http://downloads.sourceforge.net/sourceforge/"/>
+ <repository type="tarball" name="cpan" href="http://search.cpan.org/CPAN/"/>
+ <repository type="tarball" name="ftp.gnome.org" default="yes"
href="ftp://ftp.gnome.org/pub/gnome/sources/"/>
+ <repository type="tarball" name="oracle" href="http://download.oracle.com/"/>
+
+ <repository type="tarball" name="ftp.gnu.org" href="ftp://ftp.gnu.org/gnu/"/>
+ <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="readline/readline62-001" strip="0"/>
+ <patch file="readline/readline62-002" strip="0"/>
+ <patch file="readline/readline62-003" strip="0"/>
+ <patch file="readline/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="gettext-runtime/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>
+
+ <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="itstool/itstool.use-correct-libxml.patch" strip="1"/>
+ </branch>
+ </autotools>
+
+ <autotools id="yelp-xsl" autogen-sh="configure">
+ <branch module="yelp-xsl/3.12/yelp-xsl-3.12.0.tar.xz" version="3.12.0"
hash="sha256:dd0b8af338b1cdae50444273d7c761e3f511224421487311103edc95a4493656" repo="ftp.gnome.org"/>
+ <dependencies>
+ <dep package="libxslt"/>
+ <dep package="libxml2"/>
+ <dep package="intltool"/>
+ <dep package="itstool"/>
+ </dependencies>
+ </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="libxml2/libxml2-Bug-686118-pthreads_once_init.patch" strip="1"/>
+ </branch>
+ <dependencies>
+ <dep package="python"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="apr">
+ <branch repo="apache.org" module="apr/apr-1.4.5.tar.bz2" version="1.4.5"/>
+ </autotools>
+
+ <autotools id="yelp-tools" autogen-sh="configure">
+ <branch module="yelp-tools/3.13/yelp-tools-3.13.3.tar.xz" version="3.13.3"
hash="sha256:20067061736e3d4ec05fc364a71d8e5d06b230528b6b7a16cb41e03c9bf3b8c6" repo="ftp.gnome.org"/>
+ <dependencies>
+ <dep package="libxslt"/>
+ <dep package="libxml2"/>
+ <dep package="intltool"/>
+ <dep package="yelp-xsl"/>
+ <dep package="itstool"/>
+ </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="apr-util" autogenargs="--with-apr=$PREFIX/bin/apr-1-config">
+ <branch repo="apache.org" module="apr/apr-util-1.3.12.tar.bz2" version="1.3.12"/>
+ <dependencies>
+ <dep package="apr"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="intltool" autogen-sh="configure">
+ <branch repo="intltool" module="0.50.2/+download/intltool-0.50.2.tar.gz" version="0.50.2"
hash="md5:23fbd879118253cb99aeac067da5f591"/>
+ <dependencies>
+ <dep package="gnome-common"/>
+ <dep package="perl-xml-parser"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gnome-common">
+ <branch module="gnome-common/3.12/gnome-common-3.12.0.tar.xz" version="3.12.0"
hash="sha256:18712bc2df6b2dd88a11b9f7f874096d1c0c6e7ebc9cfc0686ef963bd590e1d8" repo="ftp.gnome.org"/>
+ </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" repo="ftp.gnome.org"/>
+ <dependencies>
+ <dep package="libxslt"/>
+ <dep package="yelp-tools"/>
+ </dependencies>
+ </autotools>
+<autotools id="gtk-osx-docbook" autogen-sh="configure" supports-non-srcdir-builds="no">
+ <branch repo="sourceforge" module="gtk-osx/gtk-osx-docbook-1.1.tar.gz" version="1.1"/>
+ </autotools>
+
+ <perl id="perl-xml-simple">
+ <branch repo="cpan" module="authors/id/G/GR/GRANTM/XML-Simple-2.20.tar.gz" version="2.20" size="75993"
md5sum="4d10964e123b76eca36678464daa63cd"/>
+ <dependencies>
+ <dep package="perl-xml-parser"/>
+ </dependencies>
+ </perl>
+
+ <perl id="perl-xml-parser" makeargs="EXPATLIBPATH=${prefix}/lib EXPATINCPATH=${prefix}/include">
+ <branch repo="cpan" module="authors/id/T/TO/TODDR/XML-Parser-2.41.tar.gz" version="2.41"/>
+ <dependencies>
+ <dep package="expat"/>
+ </dependencies>
+ </perl>
+
+ <autotools id="expat" autogen-sh="configure">
+ <branch module="expat/expat-2.1.0.tar.gz" version="2.1.0" repo="sourceforge"/>
+ </autotools>
+
+ <autotools id="flex" autogen-sh="configure">
+ <branch repo="sourceforge" module="flex/flex-2.5.37.tar.bz2" version="2.5.37"/>
+ </autotools>
+
+ <autotools id="bison" autogen-sh="configure">
+ <branch repo="ftp.gnu.org" module="bison/bison-2.6.3.tar.bz2" version="2.6.3"/>
+ </autotools>
+
+ <autotools id="pkg-config" autogen-sh="configure">
+ <branch repo="pkgconfig" module="pkg-config-0.25.tar.gz" version="0.25"/>
+ </autotools>
+
+ <autotools id="automake-1.13" autogen-sh="configure">
+ <branch repo="ftp.gnu.org" module="automake/automake-1.13.1.tar.xz" version="1.13.1"/>
+ </autotools>
+
+<autotools id="automake-1.12" autogen-sh="configure">
+ <branch repo="ftp.gnu.org" module="automake/automake-1.12.6.tar.xz" version="1.12.6"/>
+ </autotools>
+
+ <autotools id="automake-1.11" autogen-sh="configure">
+ <branch repo="ftp.gnu.org" module="automake/automake-1.11.6.tar.xz" version="1.11.6"/>
+ </autotools>
+
+ <autotools id="automake-1.10" autogen-sh="configure">
+ <branch repo="ftp.gnu.org" module="automake/automake-1.10.3.tar.bz2" version="1.10.3" size="957505"
md5sum="b8e67fb458da396bc35555af7ef2b49f"/>
+ </autotools>
+
+ <autotools id="libtool" autogen-sh="configure">
+ <branch repo="ftp.gnu.org" module="libtool/libtool-2.4.2.tar.gz" version="2.4.2"/>
+ </autotools>
+
+ <autotools id="autoconf" autogen-sh="configure">
+ <branch repo="ftp.gnu.org" module="autoconf/autoconf-2.69.tar.xz" version="2.69"/>
+ <dependencies>
+ <dep package="m4"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="m4" autogen-sh="configure">
+ <branch repo="ftp.gnu.org" module="m4/m4-1.4.16.tar.bz2" version="1.4.16"/>
+ </autotools>
+
+ <autotools id="cmake" autogen-sh="bootstrap" autogen-template="%(srcdir)s/%(autogen-sh)s
--prefix=%(prefix)s %(autogenargs)s">
+ <branch repo="cmake" module="v2.8/cmake-2.8.12.tar.gz" version="2.8.12"/>
+ </autotools>
+
+ <autotools id="gettext-tools" autogen-sh="configure" autogenargs="--without-emacs --disable-java
--disable-native-java --disable-libasprintf --disable-csharp --with-included-glib">
+ <branch repo="ftp.gnu.org" source-subdir="gettext-tools" module="gettext/gettext-0.18.1.1.tar.gz"
version="0.18.1.1" size="15139737" md5sum="3dd55b952826d2b32f51308f2f91aa89">
+ <patch file="gettext-tools/gettext-bug33999-stpncpy.patch" strip="1"/>
+ </branch>
+ </autotools>
+
+ <autotools id="subversion">
+ <branch repo="apache.org" module="subversion/subversion-1.5.9.tar.bz2" version="1.5.9"/>
+ <dependencies>
+ <dep package="apr-util"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="make">
+ <branch repo="ftp.gnu.org" module="make/make-3.82.tar.gz" version="3.82"/>
+ </autotools>
+
+ <autotools id="xz" autogen-sh="configure">
+ <branch repo="tukaani.org" module="xz/xz-5.0.4.tar.bz2" version="5.0.4"/>
+ </autotools>
+
+ <metamodule id="meta-bootstrap">
+ <dependencies>
+ <dep package="xz"/>
+ <dep package="make"/> <!-- Needed for Tiger, skipped otherwise -->
+ <dep package="subversion"/> <!-- Needed for Tiger, skipped otherwise -->
+ <dep package="gettext-tools"/> <!-- Needed for 64-bit -->
+ <dep package="cmake"/>
+ <dep package="m4"/> <!-- Can be skipped for Leopard and later -->
+ <dep package="autoconf"/>
+ <dep package="libtool"/>
+ <dep package="automake-1.10"/>
+ <dep package="automake-1.11"/>
+ <dep package="automake-1.12"/>
+ <dep package="automake-1.13"/>
+ <dep package="pkg-config"/>
+ <dep package="bison"/> <!-- included for Tiger, skipped otherwise -->
+ <dep package="flex"/> <!-- included for Tiger, skipped otherwise -->
+ <dep package="expat"/>
+ <dep package="perl-xml-parser"/>
+ <dep package="perl-xml-simple"/>
+ <dep package="gtk-osx-docbook"/>
+ <dep package="gtk-doc"/>
+ <dep package="gnome-common"/>
+ <dep package="intltool"/>
+ </dependencies>
+ </metamodule>
+
+</moduleset>
diff --git a/osx/build/modulesets/gedit.modules b/osx/build/modulesets/gedit.modules
new file mode 100644
index 0000000..0156e22
--- /dev/null
+++ b/osx/build/modulesets/gedit.modules
@@ -0,0 +1,474 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!DOCTYPE moduleset SYSTEM "moduleset.dtd">
+<moduleset><repository type="tarball" name="xmlsoft.org" href="ftp://xmlsoft.org/libxml2/"/>
+ <repository type="tarball" name="icon-theme" href="http://icon-theme.freedesktop.org/releases/"/>
+ <repository type="tarball" name="harfbuzz" href="http://www.freedesktop.org/software/harfbuzz/release/"/>
+ <repository type="tarball" name="cups" href="http://ftp.easysw.com/pub/"/>
+
+ <repository type="tarball" name="iso-codes" href="http://pkg-isocodes.alioth.debian.org/downloads/"/>
+ <repository type="tarball" name="python" href="https://www.python.org/ftp/python/"/>
+ <repository type="tarball" name="libtiff" href="http://download.osgeo.org/"/>
+ <repository type="tarball" name="cairographics.org" href="http://cairographics.org/releases/"/>
+ <repository type="tarball" name="cairographics" href="http://cairographics.org/releases/"/>
+
+ <repository type="tarball" name="fontconfig"
href="http://www.freedesktop.org/software/fontconfig/release/"/>
+ <repository type="tarball" name="tango.freedesktop.org" href="http://tango.freedesktop.org/releases/"/>
+ <repository type="tarball" name="ftp.gnu.org" href="ftp://ftp.gnu.org/gnu/"/>
+ <repository type="git" name="git.gnome.org" href="git://git.gnome.org/"/>
+ <repository type="tarball" name="hadess" href="http://freedesktop.org/~hadess/"/>
+ <repository type="tarball" name="ftp.gnome.org" default="yes"
href="ftp://ftp.gnome.org/pub/gnome/sources/"/>
+ <repository type="tarball" name="abisource/enchant" href="http://www.abisource.com/downloads/enchant/"/>
+ <repository type="tarball" name="oracle" href="http://download.oracle.com/"/>
+ <repository type="tarball" name="jpeg" href="http://www.ijg.org/files/"/>
+ <repository type="tarball" name="sourceforge" href="http://downloads.sourceforge.net/sourceforge/"/>
+ <repository type="tarball" name="sourceware.org" href="ftp://sourceware.org/pub/"/>
+
+ <autotools id="zlib" autogen-sh="configure" skip-autogen="never" supports-non-srcdir-builds="no">
+ <branch repo="sourceforge" version="1.2.7" module="libpng/zlib-1.2.7.tar.gz"/>
+ </autotools>
+
+ <autotools id="libcroco" autogenargs="--disable-Bsymbolic" autogen-sh="configure">
+ <branch module="libcroco/0.6/libcroco-0.6.8.tar.xz" version="0.6.8"
hash="sha256:ea6e1b858c55219cefd7109756bff5bc1a774ba7a55f7d3ccd734d6b871b8570" repo="ftp.gnome.org"/>
+ </autotools>
+
+ <autotools id="harfbuzz" autogen-sh="configure" autogenargs="--with-coretext">
+ <branch repo="harfbuzz" module="harfbuzz-0.9.26.tar.bz2" version="0.9.26"/>
+ <dependencies>
+ <dep package="freetype"/>
+ <dep package="fontconfig"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="freetype" autogen-sh="configure" skip-autogen="never" autogenargs="--without-bzip2">
+ <branch module="freetype/freetype-2.5.2.tar.gz" version="2.5.2" repo="sourceforge">
+ </branch>
+ <dependencies>
+ <dep package="zlib"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="fontconfig" autogen-sh="autoreconf" autogenargs="--disable-docs">
+ <branch repo="fontconfig" version="2.11.0" module="fontconfig-2.11.0.tar.gz"/>
+ <dependencies>
+ <dep package="freetype"/>
+ </dependencies>
+ </autotools>
+
+<autotools id="pixman" autogenargs="--disable-gtk" autogen-sh="configure">
+ <branch version="0.30.2" module="pixman-0.30.2.tar.gz" repo="cairographics"
hash="sha1:59cc9cd91a2394b7c0aa90ffc7c141f06d75f066"/>
+ <after>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ </after>
+ </autotools>
+
+ <autotools id="gnome-icon-theme" autogen-sh="configure">
+ <branch module="gnome-icon-theme/3.12/gnome-icon-theme-3.12.0.tar.xz" version="3.12.0"
hash="sha256:359e720b9202d3aba8d477752c4cd11eced368182281d51ffd64c8572b4e503a" repo="ftp.gnome.org"/>
+ <dependencies>
+ <dep package="hicolor-icon-theme"/>
+ <dep package="icon-naming-utils"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="librsvg" autogenargs="--disable-Bsymbolic">
+ <branch module="librsvg/2.40/librsvg-2.40.3.tar.xz" version="2.40.3"
hash="sha256:eb2755fe8bf0aa5b439bcf94edc880f08396b4c79fd54c73147df0607c63c98f" repo="ftp.gnome.org"/>
+ <dependencies>
+ <dep package="libcroco"/>
+ </dependencies>
+ </autotools>
+
+ <metamodule id="meta-gtk-osx-freetype">
+ <dependencies>
+ <dep package="freetype"/>
+ <dep package="fontconfig"/>
+ <dep package="harfbuzz"/>
+ </dependencies>
+ </metamodule>
+
+<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="libxml2/libxml2-Bug-686118-pthreads_once_init.patch" strip="1"/>
+ </branch>
+ <after>
+ <dep package="python"/>
+ <dep package="python3"/>
+ </after>
+ </autotools>
+
+ <autotools id="libffi" autogenargs="--disable-builddir" autogen-sh="configure">
+ <branch module="libffi/libffi-3.0.13.tar.gz" repo="sourceware.org" version="3.0.13"
checkoutdir="atgreen-libffi-873d687"/>
+ </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>
+
+ <autotools id="cairo" autogen-sh="configure" autogenargs="--enable-pdf --enable-quartz --enable-xlib=no
--without-x">
+ <branch module="cairo-1.12.16.tar.xz" version="1.12.16" repo="cairographics"
hash="sha1:4f6e337d5d3edd7ea79d1426f575331552b003ec">
+ </branch>
+ <dependencies>
+ <dep package="pixman"/>
+ </dependencies>
+ <after>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ <dep package="fontconfig"/>
+ <dep package="freetype"/>
+ </after>
+ </autotools>
+
+ <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="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" repo="ftp.gnome.org"/>
+ <dependencies>
+ <dep package="hicolor-icon-theme"/>
+ <dep package="icon-naming-utils"/>
+ <dep package="librsvg"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gnome-themes-standard" autogen-sh="configure" autogenargs="--disable-gtk2-engine">
+ <branch module="gnome-themes-standard/3.13/gnome-themes-standard-3.13.4.tar.xz" version="3.13.4"
hash="sha256:a1b55eb37c290f406b799572f0f3455fca7af1ec058b7ce36650a2e27af316b3" repo="ftp.gnome.org"/>
+ <dependencies>
+ <dep package="librsvg"/>
+ <dep package="gnome-icon-theme"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="icon-naming-utils" autogen-sh="configure">
+ <branch repo="tango.freedesktop.org" version="0.8.90" module="icon-naming-utils-0.8.90.tar.bz2"
hash="md5:dd8108b56130b9eedc4042df634efa66"/>
+ <after>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ </after>
+ </autotools>
+
+ <autotools id="gtk+" autogen-sh="autoreconf" autogenargs="--with-gdktarget=quartz
--enable-quartz-relocation --disable-introspection">
+ <branch module="gtk+/2.24/gtk+-2.24.21.tar.xz" version="2.24.21"
hash="sha256:302e9216dd19ec4b5b9e2f77275e23758253f7e86b06287284d8e794ef38dce3" repo="ftp.gnome.org">
+ <!--patch
file="http://git.gnome.org/browse/gtk-osx/plain/patches/0004-Bug-571582-GtkSelection-implementation-for-quartz.patch"
strip="1"/-->
+ <patch file="gtk+/0008-Implement-GtkDragSourceOwner-pasteboardChangedOwner.patch" strip="1"/>
+ <patch file="gtk+/0006-Bug-658722-Drag-and-Drop-sometimes-stops-working.patch" strip="1"/>
+<patch file="gtk+/gtk+-2-m4-creation.patch" strip="1"/>
+ </branch>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="pango"/>
+ <dep package="atk"/>
+ <dep package="gdk-pixbuf"/>
+ <dep package="gobject-introspection"/>
+ </dependencies>
+ <after>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ </after>
+ </autotools>
+
+ <autotools id="gobject-introspection" autogen-sh="configure">
+ <branch module="gobject-introspection/1.41/gobject-introspection-1.41.4.tar.xz" version="1.41.4"
hash="sha256:b26b41283073d8890afab6a64796d164d2a07bfa220daa554285ba0ad240acf9" repo="ftp.gnome.org">
+ <patch file="gobject-introspection/girscanner-objc.patch" strip="1"/>
+ </branch>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="cairo"/>
+ </dependencies>
+ <after>
+ <dep package="python"/>
+ </after>
+ </autotools>
+
+ <autotools id="gdk-pixbuf" autogen-sh="configure">
+ <branch module="gdk-pixbuf/2.31/gdk-pixbuf-2.31.0.tar.xz" version="2.31.0"
hash="sha256:4121f4258af1a3fde70029396314d31ae54cf8fa2b4ea0bff842acf8f195bd78" repo="ftp.gnome.org"/>
+ <after>
+ <dep package="pango"/>
+ </after>
+ </autotools>
+
+ <autotools id="atk" autogen-sh="configure">
+ <branch module="atk/2.13/atk-2.13.90.tar.xz" version="2.13.90"
hash="sha256:66a1ddf2ee3e8251012d428740549d7ac176135451927bcc4c332e3ed12dfc47" repo="ftp.gnome.org"/>
+ <dependencies>
+ </dependencies>
+ <after>
+ <dep package="glib"/>
+ <dep package="glib"/>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ </after>
+ </autotools>
+
+ <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="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="glib" autogen-sh="autoreconf">
+ <branch module="glib/2.41/glib-2.41.3.tar.xz" version="2.41.3"
hash="sha256:10ab9bdeb5c0bbe8ef0ce26ec79ce1887b6967b6ffcce86ee685e86c7c9c7b4f" repo="ftp.gnome.org">
+ <patch file="glib/0001-Bug-724590-GSlice-slab_stack-corruption.patch" strip="1"/>
+ </branch>
+ <dependencies>
+ <dep package="libffi"/>
+ </dependencies>
+ <after>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ </after>
+ </autotools>
+
+ <autotools id="pygobject3" autogen-sh="configure --with-python=python3">
+ <branch version="3.13.90" module="pygobject/3.13/pygobject-3.13.90.tar.xz"
hash="sha256:c4c8c62ba5e8c2444d39f501cf8c65ac7c866a73b69348384c9d5567c11d09e9" repo="ftp.gnome.org">
+ <patch file="pygobject3/pygobject-Merge-multiple-platform-case-statements.patch" strip="1"/>
+ </branch>
+ <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="python3" autogenargs="--enable-shared" autogen-sh="configure">
+ <branch repo="python" module="3.3.2/Python-3.3.2.tar.xz" version="3.3.2"/>
+ <dependencies>
+ <dep package="gettext-runtime"/>
+ <dep package="readline"/>
+ </dependencies>
+ <after>
+ <dep package="berkeleydb"/>
+ <dep package="berkeleydb-nonsrctree"/>
+ </after>
+ </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>
+
+ <autotools id="gtk-mac-integration" autogen-sh="configure" autogenargs="--disable-python">
+ <branch module="gtk-mac-integration/2.0/gtk-mac-integration-2.0.5.tar.xz" version="2.0.5"
hash="sha256:6c4ff7501d7ff35e49068052d80fcf76ce494e5953c5f3967e4958b1b0c67b9f" repo="ftp.gnome.org">
+ <patch file="gtk-mac-integration/0001-Fix-unhandled-exception-from-attempting-to-access-me.patch"
strip="1"/>
+ </branch>
+ <dependencies>
+ </dependencies>
+ <after>
+ <dep package="gtk+"/>
+ <dep package="gtk+-3.0"/>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ </after>
+ </autotools>
+
+<autotools id="gtk+-3.0" autogen-sh="autogen.sh" autogenargs="--enable-quartz-backend
--enable-quartz-relocation">
+ <branch module="gtk+/3.13/gtk+-3.13.7.tar.xz" version="3.13.7"
hash="sha256:23db0fb9b8b8213dbfd5a5f4077904b778145ca37f622bd73961529e69878bb4" repo="ftp.gnome.org">
+ </branch>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="pango"/>
+ <dep package="atk"/>
+ <dep package="gdk-pixbuf"/>
+ <dep package="gobject-introspection"/>
+ </dependencies>
+ <after>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ </after>
+ </autotools>
+
+ <autotools id="hicolor-icon-theme" autogen-sh="configure" supports-non-srcdir-builds="no">
+ <branch module="hicolor-icon-theme-0.11.tar.gz" repo="icon-theme" version="0.11"/>
+
+ </autotools>
+
+ <autotools id="gnome-doc-utils" autogenargs="--disable-scrollkeeper" autogen-sh="configure"
supports-non-srcdir-builds="no">
+ <branch module="gnome-doc-utils/0.20/gnome-doc-utils-0.20.10.tar.xz" version="0.20.10"
hash="sha256:cb0639ffa9550b6ddf3b62f3b1add92fb92ab4690d351f2353cffe668be8c4a6" repo="ftp.gnome.org"/>
+ <dependencies>
+ <dep package="libxslt"/>
+ </dependencies>
+ </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="gettext-runtime/gettext-bug33999-stpncpy.patch" strip="1"/>
+ </branch>
+ </autotools>
+
+ <autotools id="libtiff" autogen-sh="configure" autogenargs="--without-x --without-apple-opengl-framework">
+ <branch version="3.9.5" module="libtiff/tiff-3.9.5.tar.gz" repo="libtiff"/>
+ <dependencies>
+ <dep package="libjpeg"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="libjpeg" autogen-sh="configure">
+ <branch module="jpegsrc.v8d.tar.gz" version="8c" repo="jpeg" checkoutdir="jpeg-8d">
+ </branch>
+ </autotools>
+
+ <autotools id="libpng" autogenargs="--enable-shared" autogen-sh="configure">
+ <branch version="1.5.13" module="libpng/libpng-1.5.13.tar.bz2" repo="sourceforge"/>
+ </autotools>
+
+ <autotools id="cups" autogen-sh="configure" skip-autogen="never"
autogenargs="DSOFLAGS="$LDFLAGS"">
+ <branch module="cups/1.2.12/cups-1.2.12-source.tar.bz2" version="1.2.12" repo="cups"
checkoutdir="cups-1.2.12"/>
+ <dependencies>
+ <dep package="libtiff"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="readline" autogen-sh="configure">
+ <branch repo="ftp.gnu.org" module="readline/readline-6.2.tar.gz" version="6.2">
+ <patch file="readline/readline62-001" strip="0"/>
+ <patch file="readline/readline62-002" strip="0"/>
+ <patch file="readline/readline62-003" strip="0"/>
+ <patch file="readline/readline62-004" strip="0"/>
+ </branch>
+ </autotools>
+
+ <autotools id="shared-mime-info" autogen-sh="configure" supports-non-srcdir-builds="no">
+ <branch module="shared-mime-info-1.2.tar.xz" version="1.2" repo="hadess">
+ <patch file="shared-mime-info/0001-Bug-70255-Build-fails-with-glib-2.38.patch" strip="1"/>
+ </branch>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="iso-codes" autogen-sh="configure">
+ <branch module="iso-codes-3.51.tar.xz" version="3.51" repo="iso-codes"/>
+ </autotools>
+
+ <autotools id="gsettings-desktop-schemas">
+ <branch module="gsettings-desktop-schemas/3.13/gsettings-desktop-schemas-3.13.91.tar.xz"
version="3.13.91" hash="sha256:dee7c4977cc19a1324451cfa0696da8a2ff7a591c6d5e4afb910c540de8a2562"
repo="ftp.gnome.org">
+ </branch>
+ <dependencies>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="enchant" autogen-sh="configure" autogenargs="--with-myspell-dir=/Library/Dictionaries">
+ <branch module="1.6.0/enchant-1.6.0.tar.gz" version="1.6.0" repo="abisource/enchant">
+ <patch file="enchant/enchant-gsize.patch" strip="1"/>
+ </branch>
+ <dependencies>
+ <dep package="glib"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="gtksourceview3">
+ <branch module="gtksourceview" tag="4bf401661a4ca1b204a62bddfc99aacb56f429ce" repo="git.gnome.org">
+ </branch>
+ <after>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ <dep package="meta-gtk-osx-gtk3"/>
+ </after>
+ </autotools>
+
+<autotools id="libpeas" autogenargs="PYTHON=python3 --disable-python2 --enable-python3">
+ <branch module="libpeas" tag="3403cbe36922517be8e19fdf506274d54d29fd92" 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>
+
+ <metamodule id="meta-gtk-osx-gtk3">
+ <dependencies>
+ <dep package="gtk+-3.0"/>
+ <dep package="gtk-mac-integration"/>
+ <dep package="meta-gtk-osx-gtk3-core-themes"/>
+ </dependencies>
+ <after>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ </after>
+ </metamodule>
+
+ <metamodule id="meta-gtk-osx-bootstrap">
+ <dependencies>
+ <dep package="readline"/>
+ <dep package="cups"/>
+ <dep package="libpng"/>
+ <dep package="libjpeg"/>
+ <dep package="libtiff"/>
+ <dep package="gettext-runtime"/>
+ <dep package="gnome-doc-utils"/>
+ <dep package="hicolor-icon-theme"/>
+ </dependencies>
+ </metamodule>
+
+ <metamodule id="gedit-deps">
+ <dependencies>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ <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"/>
+ </dependencies>
+ </metamodule>
+
+ <metamodule id="gedit-meta">
+ <dependencies>
+ <dep package="gedit-deps"/>
+ <!--<dep package="gedit-plugins"/>-->
+ </dependencies>
+ </metamodule>
+
+ <autotools id="gedit" autogenargs="PYTHON=python3">
+ <branch repo="git.gnome.org" module="gedit" revision="wip/3.14-osx"/>
+ <dependencies>
+ <dep package="gedit-meta"/>
+ </dependencies>
+ </autotools>
+</moduleset>
diff --git a/osx/build/modulesets/patches/berkeleydb-nonsrctree/atomic.patch
b/osx/build/modulesets/patches/berkeleydb-nonsrctree/atomic.patch
new file mode 100644
index 0000000..398aa1d
--- /dev/null
+++ b/osx/build/modulesets/patches/berkeleydb-nonsrctree/atomic.patch
@@ -0,0 +1,20 @@
+--- src/dbinc/atomic.h 2013-03-12 14:07:22.000000000 -0400
++++ src/dbinc/atomic.h.change 2013-03-12 14:06:35.000000000 -0400
+@@ -144,7 +144,7 @@
+ #define atomic_inc(env, p) __atomic_inc(p)
+ #define atomic_dec(env, p) __atomic_dec(p)
+ #define atomic_compare_exchange(env, p, o, n) \
+- __atomic_compare_exchange((p), (o), (n))
++ __atomic_compare_exchange_db((p), (o), (n))
+ static inline int __atomic_inc(db_atomic_t *p)
+ {
+ int temp;
+@@ -176,7 +176,7 @@
+ * http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
+ * which configure could be changed to use.
+ */
+-static inline int __atomic_compare_exchange(
++static inline int __atomic_compare_exchange_db(
+ db_atomic_t *p, atomic_value_t oldval, atomic_value_t newval)
+ {
+ atomic_value_t was;
diff --git a/osx/build/modulesets/patches/berkeleydb/atomic.patch
b/osx/build/modulesets/patches/berkeleydb/atomic.patch
new file mode 100644
index 0000000..398aa1d
--- /dev/null
+++ b/osx/build/modulesets/patches/berkeleydb/atomic.patch
@@ -0,0 +1,20 @@
+--- src/dbinc/atomic.h 2013-03-12 14:07:22.000000000 -0400
++++ src/dbinc/atomic.h.change 2013-03-12 14:06:35.000000000 -0400
+@@ -144,7 +144,7 @@
+ #define atomic_inc(env, p) __atomic_inc(p)
+ #define atomic_dec(env, p) __atomic_dec(p)
+ #define atomic_compare_exchange(env, p, o, n) \
+- __atomic_compare_exchange((p), (o), (n))
++ __atomic_compare_exchange_db((p), (o), (n))
+ static inline int __atomic_inc(db_atomic_t *p)
+ {
+ int temp;
+@@ -176,7 +176,7 @@
+ * http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
+ * which configure could be changed to use.
+ */
+-static inline int __atomic_compare_exchange(
++static inline int __atomic_compare_exchange_db(
+ db_atomic_t *p, atomic_value_t oldval, atomic_value_t newval)
+ {
+ atomic_value_t was;
diff --git a/osx/build/modulesets/patches/enchant/enchant-gsize.patch
b/osx/build/modulesets/patches/enchant/enchant-gsize.patch
new file mode 100644
index 0000000..5bfba14
--- /dev/null
+++ b/osx/build/modulesets/patches/enchant/enchant-gsize.patch
@@ -0,0 +1,97 @@
+--- a/src/ispell/ispell_checker.cpp Thu Apr 1 13:53:37 2010
++++ b/src/ispell/ispell_checker.cpp Mon Feb 24 15:35:49 2014
+@@ -162,7 +162,7 @@
+ else
+ {
+ /* convert to 8bit string and null terminate */
+- size_t len_in, len_out, result;
++ gsize len_in, len_out, result;
+ // the 8bit encodings use precomposed forms
+ char *normalizedWord = g_utf8_normalize (utf8Word, length, G_NORMALIZE_NFC);
+ char *In = normalizedWord;
+@@ -172,7 +172,7 @@
+ len_out = sizeof( szWord ) - 1;
+ result = g_iconv(m_translate_in, &In, &len_in, &Out, &len_out);
+ g_free(normalizedWord);
+- if ((size_t)-1 == result)
++ if ((gsize)-1 == result)
+ return false;
+ *Out = '\0';
+ }
+@@ -210,7 +210,7 @@
+ {
+ /* convert to 8bit string and null terminate */
+
+- size_t len_in, len_out, result;
++ gsize len_in, len_out, result;
+ // the 8bit encodings use precomposed forms
+ char *normalizedWord = g_utf8_normalize (utf8Word, length, G_NORMALIZE_NFC);
+ char *In = normalizedWord;
+@@ -219,7 +219,7 @@
+ len_out = sizeof( word8 ) - 1;
+ result = g_iconv(m_translate_in, &In, &len_in, &Out, &len_out);
+ g_free(normalizedWord);
+- if ((size_t)-1 == result)
++ if ((gsize)-1 == result)
+ return NULL;
+ *Out = '\0';
+ }
+@@ -252,13 +252,13 @@
+ {
+ /* convert to 32bit string and null terminate */
+
+- size_t len_in, len_out;
++ gsize len_in, len_out;
+ char *In = m_possibilities[c];
+ char *Out = reinterpret_cast<char *>(utf8Sugg);
+
+ len_in = l;
+ len_out = INPUTWORDLEN + MAXAFFIXLEN;
+- if ((size_t)-1 == g_iconv(m_translate_out, &In, &len_in,
&Out, &len_out)) {
++ if ((gsize)-1 == g_iconv(m_translate_out, &In, &len_in, &Out,
&len_out)) {
+ *out_n_suggestions = c;
+ return sugg_arr;
+ }
+--- a/src/myspell/myspell_checker.cpp Thu Apr 1 13:53:37 2010
++++ b/src/myspell/myspell_checker.cpp Mon Feb 24 15:37:56 2014
+@@ -159,11 +159,11 @@
+ char *in = normalizedWord;
+ char word8[MAXWORDLEN + 1];
+ char *out = word8;
+- size_t len_in = strlen(in);
+- size_t len_out = sizeof( word8 ) - 1;
+- size_t result = g_iconv(m_translate_in, &in, &len_in, &out, &len_out);
++ gsize len_in = strlen(in);
++ gsize len_out = sizeof( word8 ) - 1;
++ gsize result = g_iconv(m_translate_in, &in, &len_in, &out, &len_out);
+ g_free(normalizedWord);
+- if ((size_t)-1 == result)
++ if ((gsize)-1 == result)
+ return false;
+ *out = '\0';
+ if (myspell->spell(word8))
+@@ -185,11 +185,11 @@
+ char *in = normalizedWord;
+ char word8[MAXWORDLEN + 1];
+ char *out = word8;
+- size_t len_in = strlen(in);
+- size_t len_out = sizeof(word8) - 1;
+- size_t result = g_iconv(m_translate_in, &in, &len_in, &out, &len_out);
++ gsize len_in = strlen(in);
++ gsize len_out = sizeof(word8) - 1;
++ gsize result = g_iconv(m_translate_in, &in, &len_in, &out, &len_out);
+ g_free(normalizedWord);
+- if ((size_t)-1 == result)
++ if ((gsize)-1 == result)
+ return NULL;
+
+ *out = '\0';
+@@ -203,7 +203,7 @@
+ len_out = MAXWORDLEN;
+ char *word = g_new0(char, len_out + 1);
+ out = reinterpret_cast<char *>(word);
+- if ((size_t)-1 == g_iconv(m_translate_out, &in, &len_in, &out, &len_out)) {
++ if ((gsize)-1 == g_iconv(m_translate_out, &in, &len_in, &out, &len_out)) {
+ for (size_t j = i; j < *nsug; j++)
+ free(sugMS[j]);
+ free(sugMS);
diff --git a/osx/build/modulesets/patches/gettext-runtime/gettext-bug33999-stpncpy.patch
b/osx/build/modulesets/patches/gettext-runtime/gettext-bug33999-stpncpy.patch
new file mode 100644
index 0000000..eda2932
--- /dev/null
+++ b/osx/build/modulesets/patches/gettext-runtime/gettext-bug33999-stpncpy.patch
@@ -0,0 +1,63 @@
+
+--- a/gettext-tools/libgettextpo/string.in.h Sun Apr 25 02:22:40 2010
++++ b/gettext-tools/libgettextpo/string.in.h Tue Oct 4 14:36:31 2011
+@@ -229,6 +229,7 @@
+ #if @GNULIB_STPNCPY@
+ # if @REPLACE_STPNCPY@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++# undef stpncpy
+ # define stpncpy rpl_stpncpy
+ # endif
+ _GL_FUNCDECL_RPL (stpncpy, char *,
+
+ Rename module 'memxfrm' to 'amemxfrm'.
+--- a/gettext-tools/gnulib-lib/string.in.h Mon May 24 02:42:47 2010
++++ b/gettext-tools/gnulib-lib/string.in.h Tue Oct 4 14:35:46 2011
+@@ -229,6 +229,7 @@
+ #if @GNULIB_STPNCPY@
+ # if @REPLACE_STPNCPY@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++# undef stpncpy
+ # define stpncpy rpl_stpncpy
+ # endif
+ _GL_FUNCDECL_RPL (stpncpy, char *,
+
+--- a/gettext-runtime/gnulib-lib/string.in.h Sun Apr 25 02:20:42 2010
++++ b/gettext-runtime/gnulib-lib/string.in.h Tue Oct 4 14:34:57 2011
+@@ -229,6 +229,7 @@
+ #if @GNULIB_STPNCPY@
+ # if @REPLACE_STPNCPY@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++# undef stpncpy
+ # define stpncpy rpl_stpncpy
+ # endif
+ _GL_FUNCDECL_RPL (stpncpy, char *,
+--- a/gettext-tools/configure Sun Jun 6 13:12:20 2010
++++ b/gettext-tools/configure Tue Oct 4 16:29:27 2011
+@@ -40562,6 +40562,16 @@
+
+
+
++ ac_fn_c_check_decl "$LINENO" "stpncpy" "ac_cv_have_decl_stpncpy" "$ac_includes_default"
++if test "x$ac_cv_have_decl_stpncpy" = x""yes; then :
++ ac_have_decl=1
++else
++ ac_have_decl=0
++fi
++
++cat >>confdefs.h <<_ACEOF
++#define HAVE_DECL_STPNCPY $ac_have_decl
++_ACEOF
+
+
+
+@@ -40606,7 +40616,9 @@
+ #include <stdlib.h>
+ #include <string.h> /* for strcpy */
+ /* The stpncpy prototype is missing in <string.h> on AIX 4. */
++#if !HAVE_DECL_STPNCPY
+ extern char *stpncpy (char *dest, const char *src, size_t n);
++#endif
+ int main () {
+ const char *src = "Hello";
+ char dest[10];
diff --git a/osx/build/modulesets/patches/gettext-tools/gettext-bug33999-stpncpy.patch
b/osx/build/modulesets/patches/gettext-tools/gettext-bug33999-stpncpy.patch
new file mode 100644
index 0000000..eda2932
--- /dev/null
+++ b/osx/build/modulesets/patches/gettext-tools/gettext-bug33999-stpncpy.patch
@@ -0,0 +1,63 @@
+
+--- a/gettext-tools/libgettextpo/string.in.h Sun Apr 25 02:22:40 2010
++++ b/gettext-tools/libgettextpo/string.in.h Tue Oct 4 14:36:31 2011
+@@ -229,6 +229,7 @@
+ #if @GNULIB_STPNCPY@
+ # if @REPLACE_STPNCPY@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++# undef stpncpy
+ # define stpncpy rpl_stpncpy
+ # endif
+ _GL_FUNCDECL_RPL (stpncpy, char *,
+
+ Rename module 'memxfrm' to 'amemxfrm'.
+--- a/gettext-tools/gnulib-lib/string.in.h Mon May 24 02:42:47 2010
++++ b/gettext-tools/gnulib-lib/string.in.h Tue Oct 4 14:35:46 2011
+@@ -229,6 +229,7 @@
+ #if @GNULIB_STPNCPY@
+ # if @REPLACE_STPNCPY@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++# undef stpncpy
+ # define stpncpy rpl_stpncpy
+ # endif
+ _GL_FUNCDECL_RPL (stpncpy, char *,
+
+--- a/gettext-runtime/gnulib-lib/string.in.h Sun Apr 25 02:20:42 2010
++++ b/gettext-runtime/gnulib-lib/string.in.h Tue Oct 4 14:34:57 2011
+@@ -229,6 +229,7 @@
+ #if @GNULIB_STPNCPY@
+ # if @REPLACE_STPNCPY@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++# undef stpncpy
+ # define stpncpy rpl_stpncpy
+ # endif
+ _GL_FUNCDECL_RPL (stpncpy, char *,
+--- a/gettext-tools/configure Sun Jun 6 13:12:20 2010
++++ b/gettext-tools/configure Tue Oct 4 16:29:27 2011
+@@ -40562,6 +40562,16 @@
+
+
+
++ ac_fn_c_check_decl "$LINENO" "stpncpy" "ac_cv_have_decl_stpncpy" "$ac_includes_default"
++if test "x$ac_cv_have_decl_stpncpy" = x""yes; then :
++ ac_have_decl=1
++else
++ ac_have_decl=0
++fi
++
++cat >>confdefs.h <<_ACEOF
++#define HAVE_DECL_STPNCPY $ac_have_decl
++_ACEOF
+
+
+
+@@ -40606,7 +40616,9 @@
+ #include <stdlib.h>
+ #include <string.h> /* for strcpy */
+ /* The stpncpy prototype is missing in <string.h> on AIX 4. */
++#if !HAVE_DECL_STPNCPY
+ extern char *stpncpy (char *dest, const char *src, size_t n);
++#endif
+ int main () {
+ const char *src = "Hello";
+ char dest[10];
diff --git a/osx/build/modulesets/patches/glib/0001-Bug-724590-GSlice-slab_stack-corruption.patch
b/osx/build/modulesets/patches/glib/0001-Bug-724590-GSlice-slab_stack-corruption.patch
new file mode 100644
index 0000000..0e62201
--- /dev/null
+++ b/osx/build/modulesets/patches/glib/0001-Bug-724590-GSlice-slab_stack-corruption.patch
@@ -0,0 +1,28 @@
+From 1b21a85f1914eecc107319cb94e8c8517291599b Mon Sep 17 00:00:00 2001
+From: John Ralls <jralls ceridwen us>
+Date: Mon, 17 Feb 2014 15:51:38 -0800
+Subject: [PATCH] Bug 724590 - GSlice slab_stack corruption
+
+Dereference allocation->contention_counters before trying to take the
+address of an element.
+---
+ glib/gslice.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/glib/gslice.c b/glib/gslice.c
+index 0563d80..2c5f4fb 100644
+--- a/glib/gslice.c
++++ b/glib/gslice.c
+@@ -715,7 +715,8 @@ static ChunkLink*
+ magazine_cache_pop_magazine (guint ix,
+ gsize *countp)
+ {
+- g_mutex_lock_a (&allocator->magazine_mutex, &allocator->contention_counters[ix]);
++ guint *counters = allocator->contention_counters;
++ g_mutex_lock_a (&allocator->magazine_mutex, &counters[ix]);
+ if (!allocator->magazines[ix])
+ {
+ guint magazine_threshold = allocator_get_magazine_threshold (allocator, ix);
+--
+1.8.3.rc0
+
diff --git a/osx/build/modulesets/patches/gobject-introspection/girscanner-objc.patch
b/osx/build/modulesets/patches/gobject-introspection/girscanner-objc.patch
new file mode 100644
index 0000000..76d2bee
--- /dev/null
+++ b/osx/build/modulesets/patches/gobject-introspection/girscanner-objc.patch
@@ -0,0 +1,20 @@
+diff --git a/giscanner/scannerlexer.l b/giscanner/scannerlexer.l
+index 6a40398..40f1fc0 100644
+--- a/giscanner/scannerlexer.l
++++ b/giscanner/scannerlexer.l
+@@ -108,6 +108,7 @@ stringtext ([^\\\"])|(\\.)
+ "|" { return '|'; }
+ "~" { return '~'; }
+ "!" { return '!'; }
++"@" { return '@'; }
+ "=" { return '='; }
+ "<" { return '<'; }
+ ">" { return '>'; }
+@@ -199,6 +200,7 @@ stringtext ([^\\\"])|(\\.)
+
+ "\""{stringtext}*"\"" { return STRING; }
+ "L\""{stringtext}*"\"" { return STRING; }
++"@\""{stringtext}*"\"" { return STRING; }
+
+ . { if (yytext[0]) fprintf(stderr, "%s:%d: unexpected character
`%c'\n", scanner->current_filename, lineno, yytext[0]); }
+
diff --git a/osx/build/modulesets/patches/gtk+/0006-Bug-658722-Drag-and-Drop-sometimes-stops-working.patch
b/osx/build/modulesets/patches/gtk+/0006-Bug-658722-Drag-and-Drop-sometimes-stops-working.patch
new file mode 100644
index 0000000..b0a1ef5
--- /dev/null
+++ b/osx/build/modulesets/patches/gtk+/0006-Bug-658722-Drag-and-Drop-sometimes-stops-working.patch
@@ -0,0 +1,274 @@
+From dcd9ab00c64a1df63fd5fa58c2ca25efd9b3e09e Mon Sep 17 00:00:00 2001
+From: John Ralls <jralls ceridwen us>
+Date: Sat, 24 Sep 2011 18:14:09 -0700
+Subject: [PATCH 06/15] Bug 658722 - Drag and Drop sometimes stops working
+
+First, rather than assuming that there's already an event queued up if
+_gdk_quartz_drag_source_context isn't NULL, assume that it just didn't get
+cleaned up the last time it ran and abort it.
+
+This naturally requires implementing gdk_quartz_drag_abort(), so remove the
+code from [GdkQuartzNSWindow draggedImage:endedAt:operation:] and move it to
+gdkdnd_quartz.c as static void gdk_quartz_drag_end(). Implement both
+gdk_quartz_drag_drop() and gdk_quartz_drag_abort() by calling
+gdk_quartz_drag_end().
+
+Next, try to get rid of the memory cycle between gtk_drag_source_info.context
+and _gdk_quartz_drag_source_context (which carries the GtkQuartzDragSourceInfo
+struct as qdata). Replace gtk_drag_source_clear_info() by using a
+g_object_set_qdata_full() for context in gtk_drag_get_source_context, calling
+gtk_drag_source_info_destroy() as the destructor. This eliminates the need to
+queue a cleanup idle event. I use g_object_run_dispose() on
+_gtk_quartz_drag_source_context to force the deletion of the info stored as
+qdata, which in turn unrefs the info->context pointer. Ordinarily this gets
+fired off from draggedImage:endedAt:operation:, meaning that the special
+dragging CFRunLoop is complete and NSEvents are again flowing, so queuing a
+cleanup event isn't necessary. The advantage is that it can also be run from
+gdk_drag_abort, so if Gdk thinks there's a drag but CF doesn't all of the
+memory still gets cleaned up.
+---
+ gdk/quartz/GdkQuartzWindow.c | 16 +-------
+ gdk/quartz/gdkdnd-quartz.c | 35 +++++++++++++--
+ gtk/gtkdnd-quartz.c | 96 ++++++++++++++++-------------------------
+ 3 files changed, 69 insertions(+), 78 deletions(-)
+
+diff --git a/gdk/quartz/GdkQuartzWindow.c b/gdk/quartz/GdkQuartzWindow.c
+index dcd7250..20ed80e 100644
+--- a/gdk/quartz/GdkQuartzWindow.c
++++ b/gdk/quartz/GdkQuartzWindow.c
+@@ -560,21 +560,7 @@ update_context_from_dragging_info (id <NSDraggingInfo> sender)
+
+ - (void)draggedImage:(NSImage *)anImage endedAt:(NSPoint)aPoint operation:(NSDragOperation)operation
+ {
+- GdkEvent event;
+-
+- g_assert (_gdk_quartz_drag_source_context != NULL);
+-
+- event.dnd.type = GDK_DROP_FINISHED;
+- event.dnd.window = g_object_ref ([[self contentView] gdkWindow]);
+- event.dnd.send_event = FALSE;
+- event.dnd.context = _gdk_quartz_drag_source_context;
+-
+- (*_gdk_event_func) (&event, _gdk_event_data);
+-
+- g_object_unref (event.dnd.window);
+-
+- g_object_unref (_gdk_quartz_drag_source_context);
+- _gdk_quartz_drag_source_context = NULL;
++ gdk_drag_drop (_gdk_quartz_drag_source_context, (guint32)g_get_real_time());
+ }
+
+ @end
+diff --git a/gdk/quartz/gdkdnd-quartz.c b/gdk/quartz/gdkdnd-quartz.c
+index bb70b71..143a8ed 100644
+--- a/gdk/quartz/gdkdnd-quartz.c
++++ b/gdk/quartz/gdkdnd-quartz.c
+@@ -111,11 +111,20 @@ GdkDragContext *
+ gdk_drag_begin (GdkWindow *window,
+ GList *targets)
+ {
+- g_assert (_gdk_quartz_drag_source_context == NULL);
++ if (_gdk_quartz_drag_source_context != NULL)
++ {
++ /* Something is amiss with the existing drag, so log a message
++ and abort it */
++ g_warning ("Drag begun with existing context; aborting the preexisting drag");
++ gdk_drag_abort (_gdk_quartz_drag_source_context,
++ (guint32)g_get_real_time ());
++ }
++
+
+ /* Create fake context */
+ _gdk_quartz_drag_source_context = gdk_drag_context_new ();
+ _gdk_quartz_drag_source_context->is_source = TRUE;
++ _gdk_quartz_drag_source_context->source_window = window;
+
+ return _gdk_quartz_drag_source_context;
+ }
+@@ -155,20 +164,36 @@ gdk_drag_find_window_for_screen (GdkDragContext *context,
+ /* FIXME: Implement */
+ }
+
++static void
++gdk_quartz_drag_end (GdkDragContext *context)
++{
++ GdkEvent event;
++
++ g_assert (context != NULL);
++ event.dnd.type = GDK_DROP_FINISHED;
++ event.dnd.window = g_object_ref (context->source_window);
++ event.dnd.send_event = FALSE;
++ event.dnd.context = context;
++
++ (*_gdk_event_func) (&event, _gdk_event_data);
++
++ g_object_run_dispose (_gdk_quartz_drag_source_context);
++ _gdk_quartz_drag_source_context = NULL;
++}
++
+ void
+ gdk_drag_drop (GdkDragContext *context,
+ guint32 time)
+ {
+- /* FIXME: Implement */
++ gdk_quartz_drag_end (context);
+ }
+
+ void
+ gdk_drag_abort (GdkDragContext *context,
+ guint32 time)
+ {
+- g_return_if_fail (context != NULL);
+-
+- /* FIXME: Implement */
++ g_warning ("Gdk-quartz-drag-drop, aborting\n");
++ gdk_quartz_drag_end (context);
+ }
+
+ void
+diff --git a/gtk/gtkdnd-quartz.c b/gtk/gtkdnd-quartz.c
+index 5688568..be92a22 100644
+--- a/gtk/gtkdnd-quartz.c
++++ b/gtk/gtkdnd-quartz.c
+@@ -269,6 +269,39 @@ gtk_drag_dest_info_destroy (gpointer data)
+ g_free (info);
+ }
+
++static void
++gtk_drag_source_info_destroy (GtkDragSourceInfo *info)
++{
++ NSPasteboard *pasteboard;
++ NSAutoreleasePool *pool;
++
++ if (info->icon_pixbuf)
++ g_object_unref (info->icon_pixbuf);
++
++ g_signal_emit_by_name (info->widget, "drag-end",
++ info->context);
++
++ if (info->source_widget)
++ g_object_unref (info->source_widget);
++
++ if (info->widget)
++ g_object_unref (info->widget);
++
++ gtk_target_list_unref (info->target_list);
++
++ pool = [[NSAutoreleasePool alloc] init];
++
++ /* Empty the pasteboard, so that it will not accidentally access
++ * info->context after it has been destroyed.
++ */
++ pasteboard = [NSPasteboard pasteboardWithName: NSDragPboard];
++ [pasteboard declareTypes: nil owner: nil];
++
++ [pool release];
++
++ g_free (info);
++}
++
+ static GtkDragDestInfo *
+ gtk_drag_get_dest_info (GdkDragContext *context,
+ gboolean create)
+@@ -308,18 +341,14 @@ gtk_drag_get_source_info (GdkDragContext *context,
+ {
+ info = g_new0 (GtkDragSourceInfo, 1);
+ info->context = context;
+- g_object_set_qdata (G_OBJECT (context), dest_info_quark, info);
++ g_object_ref (info->context);
++ g_object_set_qdata_full (G_OBJECT (context), dest_info_quark,
++ info, gtk_drag_source_info_destroy);
+ }
+
+ return info;
+ }
+
+-static void
+-gtk_drag_clear_source_info (GdkDragContext *context)
+-{
+- g_object_set_qdata (G_OBJECT (context), dest_info_quark, NULL);
+-}
+-
+ GtkWidget *
+ gtk_drag_get_source_widget (GdkDragContext *context)
+ {
+@@ -1089,7 +1118,8 @@ gtk_drag_begin_idle (gpointer arg)
+ [owner release];
+ [types release];
+
+- if ((nswindow = get_toplevel_nswindow (info->source_widget)) == NULL)
++ if (info->source_widget == NULL
++ || (nswindow = get_toplevel_nswindow (info->source_widget)) == NULL)
+ return FALSE;
+
+ /* Ref the context. It's unreffed when the drag has been aborted */
+@@ -1108,7 +1138,6 @@ gtk_drag_begin_idle (gpointer arg)
+ source:nswindow
+ slideBack:YES];
+
+- [info->nsevent release];
+ [drag_image release];
+
+ [pool release];
+@@ -1833,61 +1862,12 @@ gtk_drag_set_default_icon (GdkColormap *colormap,
+ }
+
+ static void
+-gtk_drag_source_info_destroy (GtkDragSourceInfo *info)
+-{
+- NSPasteboard *pasteboard;
+- NSAutoreleasePool *pool;
+-
+- if (info->icon_pixbuf)
+- g_object_unref (info->icon_pixbuf);
+-
+- g_signal_emit_by_name (info->widget, "drag-end",
+- info->context);
+-
+- if (info->source_widget)
+- g_object_unref (info->source_widget);
+-
+- if (info->widget)
+- g_object_unref (info->widget);
+-
+- gtk_target_list_unref (info->target_list);
+-
+- pool = [[NSAutoreleasePool alloc] init];
+-
+- /* Empty the pasteboard, so that it will not accidentally access
+- * info->context after it has been destroyed.
+- */
+- pasteboard = [NSPasteboard pasteboardWithName: NSDragPboard];
+- [pasteboard declareTypes: nil owner: nil];
+-
+- [pool release];
+-
+- gtk_drag_clear_source_info (info->context);
+- g_object_unref (info->context);
+-
+- g_free (info);
+- info = NULL;
+-}
+-
+-static gboolean
+-drag_drop_finished_idle_cb (gpointer data)
+-{
+- gtk_drag_source_info_destroy (data);
+- return FALSE;
+-}
+-
+-static void
+ gtk_drag_drop_finished (GtkDragSourceInfo *info)
+ {
+ if (info->success && info->delete)
+ g_signal_emit_by_name (info->source_widget, "drag-data-delete",
+ info->context);
+
+- /* Workaround for the fact that the NS API blocks until the drag is
+- * over. This way the context is still valid when returning from
+- * drag_begin, even if it will still be quite useless. See bug #501588.
+- */
+- g_idle_add (drag_drop_finished_idle_cb, info);
+ }
+
+ /*************************************************************
diff --git a/osx/build/modulesets/patches/gtk+/0008-Implement-GtkDragSourceOwner-pasteboardChangedOwner.patch
b/osx/build/modulesets/patches/gtk+/0008-Implement-GtkDragSourceOwner-pasteboardChangedOwner.patch
new file mode 100644
index 0000000..5b9153c
--- /dev/null
+++ b/osx/build/modulesets/patches/gtk+/0008-Implement-GtkDragSourceOwner-pasteboardChangedOwner.patch
@@ -0,0 +1,39 @@
+From 259563958047ccbf6f61578f2d724fc731218304 Mon Sep 17 00:00:00 2001
+From: John Ralls <jralls ceridwen us>
+Date: Sun, 25 Sep 2011 12:03:54 -0700
+Subject: [PATCH 08/15] Implement GtkDragSourceOwner pasteboardChangedOwner:
+
+---
+ gtk/gtkdnd-quartz.c | 11 +++++++++++
+ 1 files changed, 11 insertions(+), 0 deletions(-)
+
+diff --git a/gtk/gtkdnd-quartz.c b/gtk/gtkdnd-quartz.c
+index 084aada..21ce11a 100644
+--- a/gtk/gtkdnd-quartz.c
++++ b/gtk/gtkdnd-quartz.c
+@@ -149,6 +149,8 @@ struct _GtkDragFindData
+ guint target_info;
+ GtkSelectionData selection_data;
+
++ g_return_if_fail(info->source_widget != NULL);
++ g_return_if_fail(info->target_list != NULL);
+ selection_data.selection = GDK_NONE;
+ selection_data.data = NULL;
+ selection_data.length = -1;
+@@ -171,6 +173,15 @@ struct _GtkDragFindData
+ }
+ }
+
++- (void)pasteboardChangedOwner: (NSPasteboard*)sender
++{
++ if (!info) return;
++
++ info->target_list = NULL;
++ info->widget = NULL;
++ info->source_widget = NULL;
++}
++
+ - (id)initWithInfo:(GtkDragSourceInfo *)anInfo
+ {
+ self = [super init];
+
diff --git a/osx/build/modulesets/patches/gtk+/gtk+-2-m4-creation.patch
b/osx/build/modulesets/patches/gtk+/gtk+-2-m4-creation.patch
new file mode 100644
index 0000000..26321b7
--- /dev/null
+++ b/osx/build/modulesets/patches/gtk+/gtk+-2-m4-creation.patch
@@ -0,0 +1,5 @@
+diff -uN gtk+-2.24.21/m4/.bogus gtk+-2.24.21.save/m4/.bogus
+--- gtk+-2.24.21/m4/.bogus 2013-10-02 08:01:33.000000000 -0700
++++ gtk+-2.24.21.save/m4/.bogus 2013-10-02 08:03:40.000000000 -0700
+@@ -0,0 +1 @@
++A phony file to enable making a patch to create this directory.
diff --git
a/osx/build/modulesets/patches/gtk-mac-integration/0001-Fix-unhandled-exception-from-attempting-to-access-me.patch
b/osx/build/modulesets/patches/gtk-mac-integration/0001-Fix-unhandled-exception-from-attempting-to-access-me.patch
new file mode 100644
index 0000000..87151bb
--- /dev/null
+++
b/osx/build/modulesets/patches/gtk-mac-integration/0001-Fix-unhandled-exception-from-attempting-to-access-me.patch
@@ -0,0 +1,39 @@
+From cd3a21ff115cd6c6c11ce39aa62eaf912c78b060 Mon Sep 17 00:00:00 2001
+From: John Ralls <jralls ceridwen us>
+Date: Mon, 30 Dec 2013 12:20:26 -0800
+Subject: [PATCH] Fix unhandled exception from attempting to access menu
+ itemAtIndex:-1
+
+---
+ src/cocoa_menu_item.c | 14 +++++++++-----
+ 1 file changed, 9 insertions(+), 5 deletions(-)
+
+diff --git a/src/cocoa_menu_item.c b/src/cocoa_menu_item.c
+index 793c254..dd46586 100644
+--- a/src/cocoa_menu_item.c
++++ b/src/cocoa_menu_item.c
+@@ -550,12 +550,16 @@ cocoa_menu_item_add_item (NSMenu* cocoa_menu, GtkWidget* menu_item, int index)
+ /* Clean up adjacent separators: */
+ if ([cocoa_menu numberOfItems] > 0)
+ {
+- if (([cocoa_menu numberOfItems] == index ||
+- [[cocoa_menu itemAtIndex: index] isSeparatorItem]) &&
+- [[cocoa_menu itemAtIndex: index - 1] isSeparatorItem])
++ if (index == 0)
++ {
++ if ([[cocoa_menu itemAtIndex: index] isSeparatorItem])
++ [cocoa_menu removeItemAtIndex: index];
++ }
++ else if (([cocoa_menu numberOfItems] == index ||
++ [[cocoa_menu itemAtIndex: index] isSeparatorItem]) &&
++ [[cocoa_menu itemAtIndex: index - 1] isSeparatorItem])
+ [cocoa_menu removeItemAtIndex: index - 1];
+- if (index == 0 && [[cocoa_menu itemAtIndex: index] isSeparatorItem])
+- [cocoa_menu removeItemAtIndex: index];
++
+ }
+ }
+
+--
+1.8.3.rc0
+
diff --git a/osx/build/modulesets/patches/itstool/itstool.use-correct-libxml.patch
b/osx/build/modulesets/patches/itstool/itstool.use-correct-libxml.patch
new file mode 100644
index 0000000..51a25c0
--- /dev/null
+++ b/osx/build/modulesets/patches/itstool/itstool.use-correct-libxml.patch
@@ -0,0 +1,28 @@
+From d6ef86e2fb7bf9ddf888521e2c7dc5b5b7e4b6d8 Mon Sep 17 00:00:00 2001
+From: Michael Catanzaro <mcatanzaro gnome org>
+Date: Fri, 10 Jan 2014 23:50:52 -0600
+Subject: [PATCH] build: use $PYTHON when testing for libxml2
+
+/usr/bin/python is a symlink to /usr/bin/python3 on some systems.
+In this case, configure unconditionally checks for the Python 3 version
+of libxml2. Instead, use the version of Python found by AM_PATH_PYTHON.
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index c29efad..dbd0c7f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -14,7 +14,7 @@ AM_PATH_PYTHON([2.6])
+
+ py_module=libxml2
+ AC_MSG_CHECKING(for python module $py_module)
+-echo "import $py_module" | python - &>/dev/null
++echo "import $py_module" | $PYTHON - &>/dev/null
+ if test $? -ne 0; then
+ AC_MSG_RESULT(not found)
+ AC_MSG_ERROR(Python module $py_module is needed to run this package)
+--
+1.8.5.2
+
diff --git a/osx/build/modulesets/patches/libxml2/libxml2-Bug-686118-pthreads_once_init.patch
b/osx/build/modulesets/patches/libxml2/libxml2-Bug-686118-pthreads_once_init.patch
new file mode 100644
index 0000000..8f42220
--- /dev/null
+++ b/osx/build/modulesets/patches/libxml2/libxml2-Bug-686118-pthreads_once_init.patch
@@ -0,0 +1,33 @@
+From 3f6cfbd1d38d0634a2ddcb9a0a13e1b5a2195a5e Mon Sep 17 00:00:00 2001
+From: Friedrich Haubensak <hsk fli-leibniz de>
+Date: Wed, 12 Sep 2012 15:34:53 +0000
+Subject: Fix a thread portability problem
+
+cannot compile libxml2-2.9.0 using studio 12.1 compiler on solaris 10
+
+I.M.O. structure initializer (as PTHREAD_ONCE_INIT) cannot be used in
+a structure assignment anyway
+---
+diff --git a/threads.c b/threads.c
+index f206149..7e85a26 100644
+--- a/threads.c
++++ b/threads.c
+@@ -146,6 +146,7 @@ struct _xmlRMutex {
+ static pthread_key_t globalkey;
+ static pthread_t mainthread;
+ static pthread_once_t once_control = PTHREAD_ONCE_INIT;
++static pthread_once_t once_control_init = PTHREAD_ONCE_INIT;
+ static pthread_mutex_t global_init_lock = PTHREAD_MUTEX_INITIALIZER;
+ #elif defined HAVE_WIN32_THREADS
+ #if defined(HAVE_COMPILER_TLS)
+@@ -915,7 +916,7 @@ xmlCleanupThreads(void)
+ #ifdef HAVE_PTHREAD_H
+ if ((libxml_is_threaded) && (pthread_key_delete != NULL))
+ pthread_key_delete(globalkey);
+- once_control = PTHREAD_ONCE_INIT;
++ once_control = once_control_init;
+ #elif defined(HAVE_WIN32_THREADS) && !defined(HAVE_COMPILER_TLS) && (!defined(LIBXML_STATIC) ||
defined(LIBXML_STATIC_FOR_DLL))
+ if (globalkey != TLS_OUT_OF_INDEXES) {
+ xmlGlobalStateCleanupHelperParams *p;
+--
+cgit v0.9.0.2
diff --git a/osx/build/modulesets/patches/pygobject3/pygobject-Merge-multiple-platform-case-statements.patch
b/osx/build/modulesets/patches/pygobject3/pygobject-Merge-multiple-platform-case-statements.patch
new file mode 100644
index 0000000..5fde3d2
--- /dev/null
+++ b/osx/build/modulesets/patches/pygobject3/pygobject-Merge-multiple-platform-case-statements.patch
@@ -0,0 +1,79 @@
+From 728824c69252e2531419d7c75b8351243d488610 Mon Sep 17 00:00:00 2001
+From: Simon Feltman <sfeltman src gnome org>
+Date: Tue, 19 Aug 2014 14:57:31 -0700
+Subject: [PATCH] configure.ac: Merge multiple platform case statements
+
+Merge platform_win32 and os_win32 variables and define "link_python_libs"
+for win32 as well as darwin.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=735068
+---
+ configure.ac | 30 +++++++++++-------------------
+ 1 file changed, 11 insertions(+), 19 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index ece639c..60de010 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -51,38 +51,30 @@ ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+
+ AC_CANONICAL_BUILD
+ AC_CANONICAL_HOST
+-AC_MSG_CHECKING([for some Win32 platform])
++AC_MSG_CHECKING([for Darwin and Win32 platforms])
+ case "$host" in
+ *-*-mingw*|*-*-cygwin*)
+- platform_win32=yes
++ os_win32=yes
++ link_python_libs=yes
+ OS_EXT=dll
+ ;;
+ *-*-darwin*)
++ os_win32=no
++ link_python_libs=yes
+ OS_EXT=dylib
+ ;;
+ *)
+- platform_win32=no
++ os_win32=no
++ link_python_libs=yes
+ OS_EXT=so
+ ;;
+ esac
+-AC_MSG_RESULT([$platform_win32])
+-AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = "yes")
++AC_MSG_RESULT([$os_win32])
++AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
+
+ AC_SUBST(OS_EXT)
+ AC_DEFINE_UNQUOTED(OS_EXT, "$OS_EXT", [Define shared library extension])
+
+-AC_MSG_CHECKING([for native Win32])
+-case "$host" in
+- *-*-mingw*)
+- os_win32=yes
+- ;;
+- *)
+- os_win32=no
+- ;;
+-esac
+-AC_MSG_RESULT([$os_win32])
+-AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
+-
+ LT_PREREQ([2.2.6])
+ LT_INIT([dlopen win32-dll disable-static])
+
+@@ -126,8 +118,8 @@ PYTHON_SO=`$PYTHON -c "import distutils.sysconfig, sys; get = distutils.sysconfi
+ AC_SUBST(PYTHON_SO)
+
+ AM_CHECK_PYTHON_HEADERS(, AC_MSG_ERROR([Python headers not found]))
+-if test "x$os_win32" = "xyes"; then
+- AM_CHECK_PYTHON_LIBS(, AC_MSG_ERROR([Python libs not found. Windows requires Python modules to be
explicitly linked to libpython.]))
++if test "x$link_python_libs" = "xyes"; then
++ AM_CHECK_PYTHON_LIBS(, AC_MSG_ERROR([Python libs not found. Windows and Darwin require Python modules to
be explicitly linked to libpython.]))
+ fi
+
+ AC_MSG_CHECKING([for PySignal_SetWakeupFd in Python.h])
+--
+1.8.5.2 (Apple Git-48)
+
diff --git a/osx/build/modulesets/patches/readline/readline62-001
b/osx/build/modulesets/patches/readline/readline62-001
new file mode 100644
index 0000000..d4563c3
--- /dev/null
+++ b/osx/build/modulesets/patches/readline/readline62-001
@@ -0,0 +1,46 @@
+ READLINE PATCH REPORT
+ =====================
+
+Readline-Release: 6.2
+Patch-ID: readline62-001
+
+Bug-Reported-by: Clark J. Wang <dearvoid gmail com>
+Bug-Reference-ID: <AANLkTimGbW7aC4E5infXP6ku5WPci4t=xVc+L1SyHqrD mail gmail com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00157.html
+
+Bug-Description:
+
+The readline vi-mode `cc', `dd', and `yy' commands failed to modify the
+entire line.
+
+[This patch intentionally does not modify patchlevel]
+
+Patch (apply with `patch -p0'):
+
+*** ../readline-6.2-patched/vi_mode.c 2010-11-20 19:51:39.000000000 -0500
+--- vi_mode.c 2011-02-17 20:24:25.000000000 -0500
+***************
+*** 1115,1119 ****
+ _rl_vi_last_motion = c;
+ RL_UNSETSTATE (RL_STATE_VIMOTION);
+! return (0);
+ }
+ #if defined (READLINE_CALLBACKS)
+--- 1115,1119 ----
+ _rl_vi_last_motion = c;
+ RL_UNSETSTATE (RL_STATE_VIMOTION);
+! return (vidomove_dispatch (m));
+ }
+ #if defined (READLINE_CALLBACKS)
+*** ../readline-6.2-patched/callback.c 2010-06-06 12:18:58.000000000 -0400
+--- callback.c 2011-02-17 20:43:28.000000000 -0500
+***************
+*** 149,152 ****
+--- 149,155 ----
+ /* Should handle everything, including cleanup, numeric arguments,
+ and turning off RL_STATE_VIMOTION */
++ if (RL_ISSTATE (RL_STATE_NUMERICARG) == 0)
++ _rl_internal_char_cleanup ();
++
+ return;
+ }
diff --git a/osx/build/modulesets/patches/readline/readline62-002
b/osx/build/modulesets/patches/readline/readline62-002
new file mode 100644
index 0000000..3dc2604
--- /dev/null
+++ b/osx/build/modulesets/patches/readline/readline62-002
@@ -0,0 +1,57 @@
+ READLINE PATCH REPORT
+ =====================
+
+Readline-Release: 6.2
+Patch-ID: readline62-002
+
+Bug-Reported-by: Vincent Sheffer <vince sheffer apisphere com>
+Bug-Reference-ID: <F13C1C4F-C44C-4071-BFED-4BB6D13CF92F apisphere com>
+Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2011-08/msg00000.html
+
+Bug-Description:
+
+The readline shared library helper script needs to be updated for Mac OS X
+10.7 (Lion, darwin11).
+
+Patch (apply with `patch -p0'):
+
+*** ../readline-6.2-patched/support/shobj-conf 2009-10-28 09:20:21.000000000 -0400
+--- support/shobj-conf 2011-08-27 13:25:23.000000000 -0400
+***************
+*** 158,162 ****
+
+ # Darwin/MacOS X
+! darwin[89]*|darwin10*)
+ SHOBJ_STATUS=supported
+ SHLIB_STATUS=supported
+--- 172,176 ----
+
+ # Darwin/MacOS X
+! darwin[89]*|darwin1[012]*)
+ SHOBJ_STATUS=supported
+ SHLIB_STATUS=supported
+***************
+*** 187,191 ****
+
+ case "${host_os}" in
+! darwin[789]*|darwin10*) SHOBJ_LDFLAGS=''
+ SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@
-current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
+ ;;
+--- 201,205 ----
+
+ case "${host_os}" in
+! darwin[789]*|darwin1[012]*) SHOBJ_LDFLAGS=''
+ SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@
-current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
+ ;;
+
+*** ../readline-6.2-patched/patchlevel 2010-01-14 10:15:52.000000000 -0500
+--- patchlevel 2011-11-17 11:09:35.000000000 -0500
+***************
+*** 1,3 ****
+ # Do not edit -- exists only for use by patch
+
+! 1
+--- 1,3 ----
+ # Do not edit -- exists only for use by patch
+
+! 2
diff --git a/osx/build/modulesets/patches/readline/readline62-003
b/osx/build/modulesets/patches/readline/readline62-003
new file mode 100644
index 0000000..0462242
--- /dev/null
+++ b/osx/build/modulesets/patches/readline/readline62-003
@@ -0,0 +1,76 @@
+ READLINE PATCH REPORT
+ =====================
+
+Readline-Release: 6.2
+Patch-ID: readline62-003
+
+Bug-Reported-by: Max Horn <max quendi de>
+Bug-Reference-ID: <20CC5C60-07C3-4E41-9817-741E48D407C5 quendi de>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2012-06/msg00005.html
+
+Bug-Description:
+
+A change between readline-6.1 and readline-6.2 to prevent the readline input
+hook from being called too frequently had the side effect of causing delays
+when reading pasted input on systems such as Mac OS X. This patch fixes
+those delays while retaining the readline-6.2 behavior.
+
+Patch (apply with `patch -p0'):
+
+*** ../readline-6.2-patched/input.c 2010-05-30 18:33:01.000000000 -0400
+--- input.c 2012-06-25 21:08:42.000000000 -0400
+***************
+*** 410,414 ****
+ rl_read_key ()
+ {
+! int c;
+
+ rl_key_sequence_length++;
+--- 412,416 ----
+ rl_read_key ()
+ {
+! int c, r;
+
+ rl_key_sequence_length++;
+***************
+*** 430,441 ****
+ while (rl_event_hook)
+ {
+! if (rl_gather_tyi () < 0) /* XXX - EIO */
+ {
+ rl_done = 1;
+ return ('\n');
+ }
+ RL_CHECK_SIGNALS ();
+- if (rl_get_char (&c) != 0)
+- break;
+ if (rl_done) /* XXX - experimental */
+ return ('\n');
+--- 432,447 ----
+ while (rl_event_hook)
+ {
+! if (rl_get_char (&c) != 0)
+! break;
+!
+! if ((r = rl_gather_tyi ()) < 0) /* XXX - EIO */
+ {
+ rl_done = 1;
+ return ('\n');
+ }
++ else if (r == 1) /* read something */
++ continue;
++
+ RL_CHECK_SIGNALS ();
+ if (rl_done) /* XXX - experimental */
+ return ('\n');
+*** ../readline-6.2-patched/patchlevel 2010-01-14 10:15:52.000000000 -0500
+--- patchlevel 2011-11-17 11:09:35.000000000 -0500
+***************
+*** 1,3 ****
+ # Do not edit -- exists only for use by patch
+
+! 2
+--- 1,3 ----
+ # Do not edit -- exists only for use by patch
+
+! 3
diff --git a/osx/build/modulesets/patches/readline/readline62-004
b/osx/build/modulesets/patches/readline/readline62-004
new file mode 100644
index 0000000..5f3ba9b
--- /dev/null
+++ b/osx/build/modulesets/patches/readline/readline62-004
@@ -0,0 +1,108 @@
+ READLINE PATCH REPORT
+ =====================
+
+Readline-Release: 6.2
+Patch-ID: readline62-004
+
+Bug-Reported-by: Jakub Filak
+Bug-Reference-ID:
+Bug-Reference-URL: https://bugzilla.redhat.com/show_bug.cgi?id=813289
+
+Bug-Description:
+
+Attempting to redo (using `.') the vi editing mode `cc', `dd', or `yy'
+commands leads to an infinite loop.
+
+Patch (apply with `patch -p0'):
+
+*** ../readline-6.2-patched/vi_mode.c 2011-02-25 11:17:02.000000000 -0500
+--- vi_mode.c 2012-06-02 12:24:47.000000000 -0400
+***************
+*** 1235,1243 ****
+ r = rl_domove_motion_callback (_rl_vimvcxt);
+ }
+! else if (vi_redoing)
+ {
+ _rl_vimvcxt->motion = _rl_vi_last_motion;
+ r = rl_domove_motion_callback (_rl_vimvcxt);
+ }
+ #if defined (READLINE_CALLBACKS)
+ else if (RL_ISSTATE (RL_STATE_CALLBACK))
+--- 1297,1313 ----
+ r = rl_domove_motion_callback (_rl_vimvcxt);
+ }
+! else if (vi_redoing && _rl_vi_last_motion != 'd') /* `dd' is special */
+ {
+ _rl_vimvcxt->motion = _rl_vi_last_motion;
+ r = rl_domove_motion_callback (_rl_vimvcxt);
+ }
++ else if (vi_redoing) /* handle redoing `dd' here */
++ {
++ _rl_vimvcxt->motion = _rl_vi_last_motion;
++ rl_mark = rl_end;
++ rl_beg_of_line (1, key);
++ RL_UNSETSTATE (RL_STATE_VIMOTION);
++ r = vidomove_dispatch (_rl_vimvcxt);
++ }
+ #if defined (READLINE_CALLBACKS)
+ else if (RL_ISSTATE (RL_STATE_CALLBACK))
+***************
+*** 1317,1325 ****
+ r = rl_domove_motion_callback (_rl_vimvcxt);
+ }
+! else if (vi_redoing)
+ {
+ _rl_vimvcxt->motion = _rl_vi_last_motion;
+ r = rl_domove_motion_callback (_rl_vimvcxt);
+ }
+ #if defined (READLINE_CALLBACKS)
+ else if (RL_ISSTATE (RL_STATE_CALLBACK))
+--- 1387,1403 ----
+ r = rl_domove_motion_callback (_rl_vimvcxt);
+ }
+! else if (vi_redoing && _rl_vi_last_motion != 'c') /* `cc' is special */
+ {
+ _rl_vimvcxt->motion = _rl_vi_last_motion;
+ r = rl_domove_motion_callback (_rl_vimvcxt);
+ }
++ else if (vi_redoing) /* handle redoing `cc' here */
++ {
++ _rl_vimvcxt->motion = _rl_vi_last_motion;
++ rl_mark = rl_end;
++ rl_beg_of_line (1, key);
++ RL_UNSETSTATE (RL_STATE_VIMOTION);
++ r = vidomove_dispatch (_rl_vimvcxt);
++ }
+ #if defined (READLINE_CALLBACKS)
+ else if (RL_ISSTATE (RL_STATE_CALLBACK))
+***************
+*** 1378,1381 ****
+--- 1456,1472 ----
+ r = rl_domove_motion_callback (_rl_vimvcxt);
+ }
++ else if (vi_redoing && _rl_vi_last_motion != 'y') /* `yy' is special */
++ {
++ _rl_vimvcxt->motion = _rl_vi_last_motion;
++ r = rl_domove_motion_callback (_rl_vimvcxt);
++ }
++ else if (vi_redoing) /* handle redoing `yy' here */
++ {
++ _rl_vimvcxt->motion = _rl_vi_last_motion;
++ rl_mark = rl_end;
++ rl_beg_of_line (1, key);
++ RL_UNSETSTATE (RL_STATE_VIMOTION);
++ r = vidomove_dispatch (_rl_vimvcxt);
++ }
+ #if defined (READLINE_CALLBACKS)
+ else if (RL_ISSTATE (RL_STATE_CALLBACK))
+*** ../readline-6.2-patched/patchlevel 2010-01-14 10:15:52.000000000 -0500
+--- patchlevel 2011-11-17 11:09:35.000000000 -0500
+***************
+*** 1,3 ****
+ # Do not edit -- exists only for use by patch
+
+! 3
+--- 1,3 ----
+ # Do not edit -- exists only for use by patch
+
+! 4
diff --git a/osx/build/modulesets/patches/shared-mime-info/0001-Bug-70255-Build-fails-with-glib-2.38.patch
b/osx/build/modulesets/patches/shared-mime-info/0001-Bug-70255-Build-fails-with-glib-2.38.patch
new file mode 100644
index 0000000..f2007d2
--- /dev/null
+++ b/osx/build/modulesets/patches/shared-mime-info/0001-Bug-70255-Build-fails-with-glib-2.38.patch
@@ -0,0 +1,42 @@
+From bfb2d780ff11cb547cc20d31c473be35cacb4509 Mon Sep 17 00:00:00 2001
+From: John Ralls <jralls ceridwen us>
+Date: Tue, 8 Oct 2013 11:33:11 -0700
+Subject: [PATCH] Bug 70255 - Build fails with glib-2.38
+
+---
+ configure.ac | 3 +++
+ test-tree-magic.c | 3 ++-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 68007c9..60a4c4d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -29,6 +29,9 @@ dnl Check whether libxml and glib are present is installed
+ PKG_CHECK_MODULES(ALL, \
+ libxml-2.0 >= 2.4 \
+ glib-2.0 >= 2.6.0)
++PKG_CHECK_MODULES(GLIB_2_36, glib-2.0 >= 2.36.0,
++ [AC_DEFINE([HAVE_GLIB_2_36], [1], [Configure g_type_init deprecation])],
++ [PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.6.0)])
+ AC_SUBST(ALL_CFLAGS)
+ AC_SUBST(ALL_LIBS)
+
+diff --git a/test-tree-magic.c b/test-tree-magic.c
+index 9b4dfaf..ec44a29 100644
+--- a/test-tree-magic.c
++++ b/test-tree-magic.c
+@@ -637,8 +637,9 @@ int main (int argc, char **argv)
+ char *content, **lines;
+ guint i;
+
++#ifndef HAVE_GLIB_2_36
+ g_type_init ();
+-
++#endif
+ if (argc != 2) {
+ g_print ("Usage: %s [file]\n", argv[0]);
+ g_print ("Where file contains, on each line, a directory path,\n"
+--
+1.8.3.rc0
+
diff --git a/osx/jhbuild/patches/dbus-relocatable-services.patch
b/osx/build/patches/dbus-relocatable-services.patch
similarity index 100%
rename from osx/jhbuild/patches/dbus-relocatable-services.patch
rename to osx/build/patches/dbus-relocatable-services.patch
diff --git a/osx/jhbuild/patches/enchant-applespell.patch b/osx/build/patches/enchant-applespell.patch
similarity index 100%
rename from osx/jhbuild/patches/enchant-applespell.patch
rename to osx/build/patches/enchant-applespell.patch
diff --git a/osx/jhbuild/patches/gedit-plugins-disable-terminal.patch
b/osx/build/patches/gedit-plugins-disable-terminal.patch
similarity index 100%
rename from osx/jhbuild/patches/gedit-plugins-disable-terminal.patch
rename to osx/build/patches/gedit-plugins-disable-terminal.patch
diff --git a/osx/jhbuild/patches/mac-integration-open-files.patch
b/osx/build/patches/mac-integration-open-files.patch
similarity index 100%
rename from osx/jhbuild/patches/mac-integration-open-files.patch
rename to osx/build/patches/mac-integration-open-files.patch
diff --git a/osx/build/patches/pygobject-Merge-multiple-platform-case-statements.patch
b/osx/build/patches/pygobject-Merge-multiple-platform-case-statements.patch
new file mode 100644
index 0000000..5fde3d2
--- /dev/null
+++ b/osx/build/patches/pygobject-Merge-multiple-platform-case-statements.patch
@@ -0,0 +1,79 @@
+From 728824c69252e2531419d7c75b8351243d488610 Mon Sep 17 00:00:00 2001
+From: Simon Feltman <sfeltman src gnome org>
+Date: Tue, 19 Aug 2014 14:57:31 -0700
+Subject: [PATCH] configure.ac: Merge multiple platform case statements
+
+Merge platform_win32 and os_win32 variables and define "link_python_libs"
+for win32 as well as darwin.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=735068
+---
+ configure.ac | 30 +++++++++++-------------------
+ 1 file changed, 11 insertions(+), 19 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index ece639c..60de010 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -51,38 +51,30 @@ ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+
+ AC_CANONICAL_BUILD
+ AC_CANONICAL_HOST
+-AC_MSG_CHECKING([for some Win32 platform])
++AC_MSG_CHECKING([for Darwin and Win32 platforms])
+ case "$host" in
+ *-*-mingw*|*-*-cygwin*)
+- platform_win32=yes
++ os_win32=yes
++ link_python_libs=yes
+ OS_EXT=dll
+ ;;
+ *-*-darwin*)
++ os_win32=no
++ link_python_libs=yes
+ OS_EXT=dylib
+ ;;
+ *)
+- platform_win32=no
++ os_win32=no
++ link_python_libs=yes
+ OS_EXT=so
+ ;;
+ esac
+-AC_MSG_RESULT([$platform_win32])
+-AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = "yes")
++AC_MSG_RESULT([$os_win32])
++AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
+
+ AC_SUBST(OS_EXT)
+ AC_DEFINE_UNQUOTED(OS_EXT, "$OS_EXT", [Define shared library extension])
+
+-AC_MSG_CHECKING([for native Win32])
+-case "$host" in
+- *-*-mingw*)
+- os_win32=yes
+- ;;
+- *)
+- os_win32=no
+- ;;
+-esac
+-AC_MSG_RESULT([$os_win32])
+-AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
+-
+ LT_PREREQ([2.2.6])
+ LT_INIT([dlopen win32-dll disable-static])
+
+@@ -126,8 +118,8 @@ PYTHON_SO=`$PYTHON -c "import distutils.sysconfig, sys; get = distutils.sysconfi
+ AC_SUBST(PYTHON_SO)
+
+ AM_CHECK_PYTHON_HEADERS(, AC_MSG_ERROR([Python headers not found]))
+-if test "x$os_win32" = "xyes"; then
+- AM_CHECK_PYTHON_LIBS(, AC_MSG_ERROR([Python libs not found. Windows requires Python modules to be
explicitly linked to libpython.]))
++if test "x$link_python_libs" = "xyes"; then
++ AM_CHECK_PYTHON_LIBS(, AC_MSG_ERROR([Python libs not found. Windows and Darwin require Python modules to
be explicitly linked to libpython.]))
+ fi
+
+ AC_MSG_CHECKING([for PySignal_SetWakeupFd in Python.h])
+--
+1.8.5.2 (Apple Git-48)
+
diff --git a/osx/build/updater/gedit-bootstrap-overrides.modules
b/osx/build/updater/gedit-bootstrap-overrides.modules
new file mode 100644
index 0000000..37c2726
--- /dev/null
+++ b/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/osx/build/updater/gedit-overrides.modules b/osx/build/updater/gedit-overrides.modules
new file mode 100644
index 0000000..31835da
--- /dev/null
+++ b/osx/build/updater/gedit-overrides.modules
@@ -0,0 +1,174 @@
+<?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/" />
+
+ <autotools id="gtk+-3.0"
+ autogenargs="--enable-quartz-backend --enable-quartz-relocation --disable-colord
--without-atk-bridge">
+ <branch module="gtk+" checkoutdir="gtk+-3.0" repo="git.gnome.org"/>
+ <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" autogen-sh="configure --with-python=python3">
+ <branch version="3.13.4" module="pygobject/3.13/pygobject-3.13.4.tar.xz"
hash="sha256:7efcbe8248da067a8ffd99ca2f09d6301b99a4aef2f92c1425c768c32142ed75" repo="ftp.gnome.org">
+ <patch file="patches/pygobject-Merge-multiple-platform-case-statements.patch" strip="1"/>
+ </branch>
+ <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="gtk+-3.0" autogen-sh="autogen.sh" autogenargs="--enable-quartz-backend
--enable-quartz-relocation">
+ <branch module="gtk+/3.13/gtk+-3.13.7.tar.xz" version="3.13.7"
hash="sha256:23db0fb9b8b8213dbfd5a5f4077904b778145ca37f622bd73961529e69878bb4" repo="ftp.gnome.org">
+ </branch>
+ <dependencies>
+ <dep package="glib"/>
+ <dep package="pango"/>
+ <dep package="atk"/>
+ <dep package="gdk-pixbuf"/>
+ <dep package="gobject-introspection"/>
+ </dependencies>
+ <after>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ </after>
+ </autotools>
+
+ <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" revision="3403cbe36922517be8e19fdf506274d54d29fd92" 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" revision="4bf401661a4ca1b204a62bddfc99aacb56f429ce" repo="git.gnome.org">
+ </branch>
+ <after>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ <dep package="meta-gtk-osx-gtk3"/>
+ </after>
+ </autotools>
+
+<!-- <autotools id="gedit-plugins" autogenargs="DATADIRNAME=share" autogen="autogen.sh">-->
+<!-- <branch module="gedit-plugins/3.2/gedit-plugins-3.2.1.tar.bz2"-->
+<!-- version="3.2.1"-->
+<!-- hash="sha256:8f6b5bc88ca61d8f0bc4dd54b2dc82473acfefd90453e4d4ffc3ca88d4182f4d">-->
+<!-- <patch
file="http://git.gnome.org/browse/gedit/plain/osx/jhbuild/patches/gedit-plugins-disable-terminal.patch"
strip="1"/>-->
+<!-- </branch>-->
+<!-- <dependencies>-->
+<!-- <dep package="meta-gtk-osx-bootstrap"/>-->
+<!-- <dep package="gedit"/>-->
+<!-- </dependencies>-->
+<!-- </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>
+
+ <metamodule id="gedit-deps">
+ <dependencies>
+ <dep package="meta-gtk-osx-bootstrap"/>
+ <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"/>
+ </dependencies>
+ </metamodule>
+
+ <metamodule id="gedit-meta">
+ <dependencies>
+ <dep package="gedit-deps"/>
+ <!--<dep package="gedit-plugins"/>-->
+ </dependencies>
+ </metamodule>
+
+ <autotools id="gedit" autogenargs="PYTHON=python3">
+ <branch repo="git.gnome.org" module="gedit" revision="wip/3.14-osx"/>
+ <dependencies>
+ <dep package="gedit-meta"/>
+ </dependencies>
+ </autotools>
+</moduleset>
+
+<!-- vi:ex:ts=2:et -->
diff --git a/osx/build/updater/update_modulesets.py b/osx/build/updater/update_modulesets.py
new file mode 100755
index 0000000..5d0ce72
--- /dev/null
+++ b/osx/build/updater/update_modulesets.py
@@ -0,0 +1,317 @@
+#!/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')
+
+ for repo in needed_repos:
+ root.append(needed_repos[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', '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
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]