diff options
Diffstat (limited to 'build-aux/osx/build')
33 files changed, 3965 insertions, 0 deletions
diff --git a/build-aux/osx/build/.gitignore b/build-aux/osx/build/.gitignore new file mode 100644 index 0000000..fdd88bc --- /dev/null +++ b/build-aux/osx/build/.gitignore @@ -0,0 +1,5 @@ +.build +.home +updater/.cache +updater/.gtk-osx +updater/modulesets diff --git a/build-aux/osx/build/README b/build-aux/osx/build/README new file mode 100644 index 0000000..79c0d4a --- /dev/null +++ b/build-aux/osx/build/README @@ -0,0 +1,131 @@ +This is a guide to building gedit on OS X. This guide assumes that you are +already familiar with building gtk+ software on OS X (natively) using jhbuild. +Please make sure to read https://live.gnome.org/GTK%2B/OSX/Building +before proceeding. + + +Building gedit for OS X +============================================================================= + +Since version 3.14, gedit hosts a self-contained, in-tree guided build +process using jhbuild. The ./build script in this directory is the main +entry-point which handles: + +1) Initializing the build environment (installing jhbuild in-tree) +2) Bootstrapping and building all the necessary dependencies +3) Simple wrapper around common jhbuild tasks (build, make, shell, etc.) + +The basic build procedure in a pristine environment is: + + ./build all + +This will first initialize the build environment (if necessary), install +jhbuild if needed, bootstrap jhbuild and then continue to build gedit and +all its dependencies. Each of these stages can also be invoked manually: + + ./build init + ./build bootstrap + ./build build + +Note that at the moment of writing, ./build bootstrap is not entirely +equivalent to ./build jh bootstrap. The reason is that there is a problem +when building python as part of the bootstrap process. As a workaround, +python is actually built twice during bootstrap. + +By default, ./build will build against the 10.7 (Lion) OS X SDK, which +has to be already installed and available at + +$(xcode-select -p)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk + +Although Xcode 5 does not distribute the 10.7 SDK by default, it can be +easily obtained from previous Xcode versions. To do so, find the last +version of Xcode to support a given SDK and download it from apple +developer downloads [1]. Open the package, and without installing, +extract the SDK directory and copy it to the right location. For 10.7, +the latest Xcode version to support it is 4.3.3, which can be downloaded +at [2] (links subject to change). + +It is also possible to build gedit against a different SDK by exporting +the GEDIT_SDK environment variable (defaults to 10.7). For example: + + export GEDIT_SDK=10.9 + ./build all + +Would build gedit against the 10.9 SDK and install in .build/10.9 +(see Directory structure below). + +Note that building gedit for OS X, although made easier by use of this +./build script, often still requires expertise and manual intervention +when things go wrong. If this is the case, please feel free to visit the +#gedit channel on GIMPnet IRC or send an e-mail to the gedit mailing list +(gedit-list@gnome.org). + + +Directory structure +============================================================================= +The general structure is as follows: + + /.build + root jhbuild directory. This directory will contain all the sources, + checkout directories and install locations during building. + + /$SDK : separated by SDK version + /source : checkout directory for all the sources + /inst : install directory for $SDK + + /pkgs : download location for tarballs + + /.home + an automatically created fake $HOME directory. This is used to create + an artificial separation for jhbuild such that it will not pick up on + possible existing .jhbuildrc files. This directory is also used to + install jhbuild itself. + + /config + /jhbuildrc-gedit : the gedit specific jhbuild environment configuration + + /modulesets + the jhbuild modulesets used to build gedit. Note that these are + self-contained and are updated each release. + + /patches : directory with jhbuild patches + /bootstrap.modules : the bootstrap modules + /gedit.modules : modules for gedit and all its dependencies + + /updater + /gedit-bootstrap-overrides.modules + jhbuild moduleset overrides for bootstrap + + /gedit-overrides.modules + jhbuild moduleset overrides for gedit + + /update_modulesets.py + an application which is used to update and merge jhbuild moduleset + files. The use of this application is two-fold: + + 1) It merges the override module files with the latest gtk-osx stable + modulesets, allowing for clean separation. The overrides files + contain only gedit specific changes on top of the gtk-osx stable + modulesets to obtain a gedit build. Additionally, it creates a + single moduleset file with only modules required for gedit in it and + copies any required patches specified in the moduleset to a local + directory. + + 2) It automatically looks for new versions (stable and unstable) of + GNOME libraries and queries whether or not to update modules that + have newer versions than those already in the moduleset. This makes + it easier to update to next-release versions of all required + dependencies. + + The output of running this application is a /modulesets directory + which is a self-contained modulesets/patches jhbuild configuration. + It can be copied to the parent directory to replace the previous + modulesets (which were generated in the same manner). + + Versions queried from GNOME ftp and downloaded patches are cached by + default in /.cache. Make sure to remove this directory (or parts of + it) to get up-to-date. + + +[1] https://developer.apple.com/downloads +[2] http://adcdownload.apple.com/Developer_Tools/xcode_4.3.3_for_lion/xcode_4.3.3_for_lion.dmg diff --git a/build-aux/osx/build/build b/build-aux/osx/build/build new file mode 100755 index 0000000..112b57a --- /dev/null +++ b/build-aux/osx/build/build @@ -0,0 +1,336 @@ +#!/bin/bash + +pushd $(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" + +ME="$0" + +if [ -z "$GEDIT_SDK" ]; then + export GEDIT_SDK=10.7 +fi + +export PATH="$INSTALLD/bin:$PATH" + +function do_exit() { + printf "$@" + echo "" + 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 + +xcodebase=$(xcode-select -p) +sdkdir="$xcodebase/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$GEDIT_SDK.sdk" + +if [ ! -d "$sdkdir" ]; then + do_exit "SDK base directory for $GEDIT_SDK not found. Please make sure to install the SDK at $sdkdir" +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 https://gitlab.gnome.org/GNOME/jhbuild.git "$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 init_help_short() { + echo "Initialize the in-tree build environment (installs jhbuild)" +} + +function cmd_init() { + mkdir -p "$SOURCED" + + if [ ! -d "$JHBUILD_SOURCED" ]; then + checkout_jhbuild + fi + + build_jhbuild + setup_jhbuildrc + + rm -f "$BASED/$GEDIT_SDK/source/gedit" + mkdir -p "$BASED/$GEDIT_SDK/source" + ln -s $(cd "$D/../../" && pwd) "$BASED/$GEDIT_SDK/source/gedit" +} + +function bootstrap_help_short() { + echo "Run jhbuild bootstrap" +} + +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 jh_help_usage() { + echo "jhbuild-command ..." +} + +function jh_help_short() { + echo "Run jhbuild commands" +} + +function cmd_jh() { + # Setup our jhbuild environment + export GEDIT_OSX_SOURCE_BASE="$D" + export GEDIT_OSX_BUILD_BASE="$BASED" + export __GEDIT_OSX_OLD_HOME="$HOME" + export HOME="$HOMED" + export JHB=gedit + + # We set this because without it, GNU gettext intltool or whatever the cause + # may be, will set DATADIRNAME=lib during configure because gettext is not part + # of libc on OS X. The result is that translations would be installed in lib/ + # instead of share/ and would not get picked up. + export DATADIRNAME=share + + "$INSTALLD/bin/jhbuild" -f "$HOMED/.jhbuildrc" "$@" +} + +function dbg_help_usage() { + echo "build command ..." +} + +function dbg_help_short() { + echo "Run remaining build commands in a debug environment" +} + +function cmd_dbg() { + export GEDIT_OSX_DEBUG=1 + _process "$@" +} + +function shell_help_short() { + echo "Start the jhbuild shell (shorthand for jh shell)" +} + +function cmd_shell() { + cmd_jh shell +} + +function make_help_usage() { + echo "module-source-directory" +} + +function make_help_short() { + echo "Run jhbuild make at the provided source directory" +} + +function cmd_make() { + cd "$BASED/$GEDIT_SDK/source/$1" && cmd_jh make +} + +function run_help_usage() { + echo "program ..." +} + +function run_help_short() { + echo "Run the provided program in the jhbuild environment (shorthand for jh run)" +} + +function cmd_run() { + cmd_jh run "$@" +} + +function env_help_short() { + echo "Obtain certain environment paths" +} + +function cmd_env() { + vars=(source inst bin home local-bin) + + case "$1" in + source) + echo "$BASED/$GEDIT_SDK/source" + ;; + inst) + echo "$BASED/$GEDIT_SDK/inst" + ;; + bin) + echo "$BASED/$GEDIT_SDK/inst/bin" + ;; + home) + echo "$HOMED" + ;; + local-bin) + echo "$HOMED/.local/bin" + ;; + "") + for v in "${vars[@]}"; do + u=$(echo -n "$v" | tr '-' '_') + echo -n "$u=" + cmd_env "$v" + done + ;; + *) + varnames=$(printf ", \033[1m%s\033[0m" "${vars[@]}") + varnames=${varnames:2} + + do_exit "Unknown environment variable \033[1m$1\033[0m, available variables are: $varnames" + ;; + esac +} + +function all_help_short() { + echo "Runs the init, bootstrap and build commands" +} + +function cmd_all() { + if [ ! -d "$JHBUILD_SOURCED" ]; then + cmd_init || exit 1 + fi + + if [ ! -f "$BASED/$GEDIT_SDK/inst/bin/python" ]; then + cmd_bootstrap || exit 1 + fi + + cmd_jh build -q +} + +function help_help_short() { + echo "Shows this help message" +} + +function cmd_help() { + if [ -z "$1" ]; then + echo "Usage: $ME [command]" + echo "" + echo "Available commands:" + echo "" + + for cmd in "${commands[@]}"; do + printf " \033[1m$cmd\x1B[0m " + + l=${#cmd} + let d="$commandsmaxlen - $l + 1" + + printf "%${d}s" "" + echo -n "- " + + if [[ $(type -t "${cmd}_help_short") = "function" ]]; then + "${cmd}_help_short" + else + echo "" + fi + done + + echo "" + else + cmd="cmd_$1" + + if [[ $(type -t "$cmd") != "function" ]]; then + do_exit "Invalid command \033[1m$1\033[0m, available commands are: $cmds" + fi + + printf "Usage: $ME \033[1m$1\033[0m " + + if [[ $(type -t "$1_help_usage") = "function" ]]; then + "$1_help_usage" + else + echo "" + fi + + echo "" + + if [[ $(type -t "$1_help_long") != "function" ]]; then + "$1_help_short" + else + "$1_help_long" + fi + fi +} + +commands=() +commandsmaxlen=0 + +while read line +do + cmd=${line#declare -f } + + if [[ "$cmd" = cmd_* ]]; then + cname=${cmd#cmd_} + + commands+=($cname) + + l=${#cname} + + if [[ $l > $commandsmaxlen ]]; then + commandsmaxlen=$l + fi + fi +done < <(declare -F) + +cmds=$(printf ", \033[1m%s\033[0m" "${commands[@]}") +cmds=${cmds:2} + +function _process() { + if [ -z "$1" ]; then + cmd_help + 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" "$@" +} + +_process "$@" diff --git a/build-aux/osx/build/config/jhbuildrc-gedit b/build-aux/osx/build/config/jhbuildrc-gedit new file mode 100644 index 0000000..46ca950 --- /dev/null +++ b/build-aux/osx/build/config/jhbuildrc-gedit @@ -0,0 +1,40 @@ +# -*- 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']) + +if 'GEDIT_OSX_DEBUG' in os.environ: + setup_debug() +else: + setup_release() + +# Main module set +modulesets_dir = os.path.join(_sourcedir, "modulesets") +moduleset = "gedit.modules" +modules = ["gedit-meta"] + +os.environ['HOME'] = os.environ['__GEDIT_OSX_OLD_HOME'] diff --git a/build-aux/osx/build/modulesets/bootstrap.modules b/build-aux/osx/build/modulesets/bootstrap.modules new file mode 100644 index 0000000..e6dfdc5 --- /dev/null +++ b/build-aux/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="apache.org" href="http://archive.apache.org/dist/"/> + <repository type="tarball" name="cmake" href="http://www.cmake.org/files/"/> + <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="ftp.gnu.org" href="ftp://ftp.gnu.org/gnu/"/> + <repository type="tarball" name="intltool" href="http://launchpad.net/intltool/trunk/"/> + + <repository type="tarball" name="itstool.org" href="http://files.itstool.org/itstool/"/> + <repository type="tarball" name="oracle" href="http://download.oracle.com/"/> + + <repository type="tarball" name="pkgconfig" href="http://pkgconfig.freedesktop.org/releases/"/> + <repository type="tarball" name="python" href="http://www.python.org/ftp/python/"/> + <repository type="tarball" name="sourceforge" href="http://downloads.sourceforge.net/sourceforge/"/> + <repository type="tarball" name="tukaani.org" href="http://tukaani.org/"/> + <repository type="tarball" name="xmlsoft.org" href="ftp://xmlsoft.org/libxml2/"/> + <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/build-aux/osx/build/modulesets/gedit.modules b/build-aux/osx/build/modulesets/gedit.modules new file mode 100644 index 0000000..f8497b9 --- /dev/null +++ b/build-aux/osx/build/modulesets/gedit.modules @@ -0,0 +1,553 @@ +<?xml version='1.0' encoding='utf-8'?> +<!DOCTYPE moduleset SYSTEM "moduleset.dtd"> +<moduleset><repository type="tarball" name="abisource/enchant" href="http://www.abisource.com/downloads/enchant/"/> + <repository type="tarball" name="cairographics" href="http://cairographics.org/releases/"/> + + <repository type="tarball" name="cairographics.org" href="http://cairographics.org/releases/"/> + <repository type="tarball" name="cups" href="http://ftp.easysw.com/pub/"/> + + <repository type="tarball" name="fontconfig" href="http://www.freedesktop.org/software/fontconfig/release/"/> + <repository type="tarball" name="ftp.gnome.org" default="yes" href="ftp://ftp.gnome.org/pub/gnome/sources/"/> + <repository type="tarball" name="ftp.gnu.org" href="ftp://ftp.gnu.org/gnu/"/> + <repository type="tarball" name="ftp.gnupg.org" href="ftp://ftp.gnupg.org/"/> + <repository type="git" name="git.github.com" href="https://github.com/"/> + + <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="harfbuzz" href="http://www.freedesktop.org/software/harfbuzz/release/"/> + <repository type="tarball" name="icon-theme" href="http://icon-theme.freedesktop.org/releases/"/> + <repository type="tarball" name="iso-codes" href="http://pkg-isocodes.alioth.debian.org/downloads/"/> + <repository type="tarball" name="jpeg" href="http://www.ijg.org/files/"/> + <repository type="tarball" name="libtiff" href="http://download.osgeo.org/"/> + <repository type="tarball" name="oracle" href="http://download.oracle.com/"/> + <repository type="tarball" name="python" href="https://www.python.org/ftp/python/"/> + <repository type="tarball" name="sourceforge" href="http://downloads.sourceforge.net/sourceforge/"/> + <repository type="tarball" name="sourceware.org" href="ftp://sourceware.org/pub/"/> + + <repository type="tarball" name="sqlite" href="http://www.sqlite.org/"/> + <repository type="tarball" name="tango.freedesktop.org" href="http://tango.freedesktop.org/releases/"/> + <repository type="tarball" name="tarball.github.com" href="https://github.com/"/> + <repository type="tarball" name="xmlsoft.org" href="ftp://xmlsoft.org/libxml2/"/> + <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="libgpg-error" autogen-sh="configure" supports-non-srdir-builds="no"> + <branch repo="ftp.gnupg.org" version="1.10" module="gcrypt/libgpg-error/libgpg-error-1.10.tar.bz2"/> + </autotools> + + <autotools id="libtasn1" supports-non-srcdir-builds="no" autogen-sh="configure"> + <branch repo="ftp.gnu.org" version="2.14" module="libtasn1/libtasn1-2.14.tar.gz"/> + </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> + + <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="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="libgcrypt" autogen-sh="configure" autogenargs="--disable-asm"> + <branch repo="ftp.gnupg.org" version="1.5.3" module="gcrypt/libgcrypt/libgcrypt-1.5.3.tar.bz2"> + <patch file="libgcrypt/libgcrypt-build-clang.patch" strip="1"/> + </branch> + <dependencies> + <dep package="libgpg-error"/> + </dependencies> + </autotools> + + <autotools id="gnutls" autogen-sh="configure" autogenargs="--with-libgcrypt --without-p11-kit"> + <branch repo="ftp.gnu.org" version="2.12.20" module="gnutls/gnutls-2.12.20.tar.bz2"/> + <dependencies> + <dep package="libgcrypt"/> + <dep package="libtasn1"/> + <dep package="zlib"/> + </dependencies> + </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.91.tar.xz" version="3.13.91" hash="sha256:d0cf4705d3439c68d344431b62cca5fe6fcf91bd38c745c48b2476d0aa41b8ad" 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.90.tar.xz" version="3.13.90" hash="sha256:76bfbf25cdd6f86fdbf15b085c5bcfbe0abf4715510a917ec023a4d780fb5f53" 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="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="gdk-pixbuf" autogen-sh="configure"> + <branch module="gdk-pixbuf/2.31/gdk-pixbuf-2.31.1.tar.xz" version="2.31.1" hash="sha256:25a75e3c61dac11e6ff6416ad846951ccafac6486b1c6a1bfb0b213b99db52cd" repo="ftp.gnome.org"/> + <after> + <dep package="pango"/> + </after> + </autotools> + + <autotools id="pango" autogen-sh="autoreconf"> + <branch version="1.36.7" module="pango/1.36/pango-1.36.7.tar.xz" hash="sha256:1f7b527423a1b3044fd9ae7fbe054107b06723ff1c73e0b5f7bf9b84358d404a" 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="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="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="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="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="sqlite" autogenargs="--disable-tcl --enable-threadsafe" autogen-sh="configure"> + <branch module="sqlite-autoconf-3071401.tar.gz" version="3.7.14" repo="sqlite"/> + </autotools> + +<autotools id="glib-networking" autogen-sh="configure" autogenargs="--without-ca-certificates set_more_warnings=no"> + <branch module="glib-networking/2.41/glib-networking-2.41.4.tar.xz" version="2.41.4" hash="sha256:930ad618865dcf81765d0f48cb6f13e22d76203efa59d30604aed0384ce80fd7" repo="ftp.gnome.org"/> + <dependencies> + <dep package="gnutls"/> + <dep package="libgcrypt"/> + </dependencies> + </autotools> + + <autotools id="pygobject3" autogenargs="--with-python=python3"> + <branch module="pygobject" repo="git.gnome.org"/> + <dependencies> + <dep package="meta-gtk-osx-gtk3"/> + </dependencies> + <after> + <dep package="python"/> + <dep package="python3"/> + </after> + </autotools> + + <waf id="pycairo-python3" autogen-sh="configure" python-command="python3"> + <branch module="pycairo-1.10.0.tar.bz2" repo="cairographics.org" version="1.10.0" hash="sha1:b4283aa1cc9aafd12fd72ad371303a486da1d014"/> + <dependencies> + <dep package="python3"/> + <dep package="cairo"/> + </dependencies> + <after> + <dep package="python3"/> + <dep package="meta-gtk-osx-gtk3"/> + </after> + </waf> + + <autotools id="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" autogenargs="--enable-quartz-backend --enable-quartz-relocation --disable-colord --without-atk-bridge"> + <branch module="jessevdk/gtk" checkoutdir="gtk+-3.0" repo="git.github.com" revision="wip/app-osx-int"/> + <dependencies> + <dep package="gobject-introspection"/> + <dep package="pango"/> + <dep package="gdk-pixbuf"/> + <dep package="atk"/> + </dependencies> + <after> + <dep package="meta-gtk-osx-bootstrap"/> + </after> + </autotools> + + <autotools id="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="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="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="gobject-introspection" autogen-sh="configure"> + <branch module="gobject-introspection/1.41/gobject-introspection-1.41.91.tar.xz" version="1.41.91" hash="sha256:a1ea708eeaa13dcc5a3078b1ae5aae178f22410023a56c699560f4e068722d9e" 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="glib" autogen-sh="autoreconf"> + <branch module="glib/2.41/glib-2.41.4.tar.xz" version="2.41.4" hash="sha256:1661bc4abfd1b0b59ae7abbef9d6a60c32192a7a65122753d5d8cc2db110fbf7" 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> + + <cmake id="libgit2" cmakeargs="-DTHREADSAFE:BOOL=1"> + <branch repo="tarball.github.com" module="libgit2/libgit2/archive/v${version}.tar.gz" version="0.21.0" hash="ae2afb5729ab6dcf6f690e5d66cb876372eaaedd37dc4fb072ad8da92338e099" checkoutdir="libgit2-${version}"> + </branch> + </cmake> + + <autotools id="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.3.tar.gz" version="6.3"> + </branch> + </autotools> + + <autotools id="libsoup" autogen-sh="configure" autogenargs="set_more_warnings=no"> + <branch module="libsoup/2.46/libsoup-2.46.0.tar.xz" version="2.46.0" hash="sha256:fa3d5574c1a2df521242e2ca624a2b3057121798cab9f8f40525aa186a7b15a3" repo="ftp.gnome.org"/> + <dependencies> + <dep package="glib"/> + <dep package="glib-networking"/> + <dep package="sqlite"/> + </dependencies> + </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.92.tar.xz" version="3.13.92" hash="sha256:82338a066b48cf39f190ef7a82db46bc6a6a451cbe08d43dca7d03364bf9c034" repo="ftp.gnome.org"> + </branch> + <dependencies> + <dep package="meta-gtk-osx-bootstrap"/> + <dep package="glib"/> + </dependencies> + </autotools> + + <autotools id="enchant" autogenargs="--disable-myspell --disable-ispell"> + <branch module="1.6.0/enchant-1.6.0.tar.gz" version="1.6.0" repo="abisource/enchant"> + <patch file="enchant/enchant-gsize.patch" strip="1"/> + <patch file="enchant/enchant-applespell.patch" strip="1"/> + <patch file="enchant/enchant-relocatable.patch" strip="1"/> + </branch> + <dependencies> + <dep package="glib"/> + </dependencies> + </autotools> + + <autotools id="gtksourceview3"> + <branch module="gtksourceview" repo="git.gnome.org"/> + <after> + <dep package="meta-gtk-osx-bootstrap"/> + <dep package="meta-gtk-osx-gtk3"/> + </after> + </autotools> + + <autotools id="libpeas" autogenargs="PYTHON=python3 --disable-python2 --enable-python3"> + <branch module="libpeas" repo="git.gnome.org"> + </branch> + <dependencies> + <dep package="python3"/> + <dep package="meta-gtk-osx-bootstrap"/> + <dep package="meta-gtk-osx-gtk3"/> + <dep package="pycairo-python3"/> + <dep package="pygobject3"/> + </dependencies> + </autotools> + + <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-freetype"> + <dependencies> + <dep package="freetype"/> + <dep package="fontconfig"/> + <dep package="harfbuzz"/> + </dependencies> + </metamodule> + + <autotools id="vte" autogenargs="--disable-Bsymbolic --disable-vala --disable-gnome-pty-helper"> + <branch module="jessevdk/vte" repo="git.github.com"/> + <dependencies> + <dep package="meta-gtk-osx-gtk3"/> + </dependencies> + </autotools> + + <autotools id="libgit2-glib"> + <branch module="libgit2-glib/0.0/libgit2-glib-0.0.20.tar.xz" version="0.0.20" hash="sha256:f8a10c8d3fcad14eed080dff6b8db0c72866c11a05b9731af31cb7258bcc8d95" repo="ftp.gnome.org"/> + <dependencies> + <dep package="libgit2"/> + <dep package="glib"/> + <dep package="gobject-introspection"/> + </dependencies> + </autotools> + + <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-freetype"/> + <dep package="meta-gtk-osx-gtk3"/> + <dep package="libpeas"/> + <dep package="gtksourceview3"/> + <dep package="enchant"/> + <dep package="gsettings-desktop-schemas"/> + <dep package="iso-codes"/> + <dep package="shared-mime-info"/> + <dep package="libsoup"/> + </dependencies> + </metamodule> + + <autotools id="gedit-plugins"> + <branch module="gedit-plugins" repo="git.gnome.org"/> + <dependencies> + <dep package="meta-gtk-osx-bootstrap"/> + <dep package="gedit"/> + <dep package="libgit2-glib"/> + <dep package="vte"/> + </dependencies> + </autotools> + + <autotools id="gedit" autogenargs="PYTHON=python3"> + <branch repo="git.gnome.org" module="gedit"/> + <dependencies> + <dep package="gedit-deps"/> + </dependencies> + </autotools> + + <metamodule id="gedit-meta"> + <dependencies> + <dep package="gedit"/> + <dep package="gedit-plugins"/> + </dependencies> + </metamodule> + +</moduleset> diff --git a/build-aux/osx/build/modulesets/patches/berkeleydb-nonsrctree/atomic.patch b/build-aux/osx/build/modulesets/patches/berkeleydb-nonsrctree/atomic.patch new file mode 100644 index 0000000..398aa1d --- /dev/null +++ b/build-aux/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/build-aux/osx/build/modulesets/patches/berkeleydb/atomic.patch b/build-aux/osx/build/modulesets/patches/berkeleydb/atomic.patch new file mode 100644 index 0000000..398aa1d --- /dev/null +++ b/build-aux/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/build-aux/osx/build/modulesets/patches/enchant/enchant-applespell.patch b/build-aux/osx/build/modulesets/patches/enchant/enchant-applespell.patch new file mode 100644 index 0000000..f6f1f65 --- /dev/null +++ b/build-aux/osx/build/modulesets/patches/enchant/enchant-applespell.patch @@ -0,0 +1,368 @@ +--- a/configure.in (revision 30591) ++++ b/configure.in (working copy) +@@ -33,4 +33,5 @@ + AC_PROG_CC + AC_PROG_CPP ++AC_PROG_OBJC + AC_PROG_INSTALL + AC_PROG_LN_S +--- a/src/applespell/Makefile.am 2010-04-01 22:53:37.000000000 +0200 ++++ b/src/applespell/Makefile.am 2012-01-11 22:42:13.000000000 +0100 +@@ -1,4 +1,13 @@ +-EXTRA_DIST= \ +- applespell_checker.h \ +- applespell_checker.mm \ +- AppleSpell.config ++target_lib = libenchant_applespell.la ++ ++INCLUDES=-I$(top_srcdir)/src $(ENCHANT_CFLAGS) $(CC_WARN_CFLAGS) -DXP_TARGET_COCOA -xobjective-c -D_ENCHANT_BUILD=1 ++ ++applespell_LTLIBRARIES = $(target_lib) ++applespelldir= $(libdir)/enchant ++ ++libenchant_applespell_la_LIBADD= $(ENCHANT_LIBS) -lobjc $(top_builddir)/src/libenchant.la ++libenchant_applespell_la_LDFLAGS = -module -avoid-version -no-undefined -framework Cocoa ++libenchant_applespell_la_SOURCES = applespell_provider.m ++libenchant_applespell_la_LIBTOOLFLAGS = --tag=CC ++ ++libenchant_applespell_lalibdir=$(libdir)/enchant +--- a/src/applespell/applespell_provider.m 2012-01-11 22:46:35.000000000 +0100 ++++ b/src/applespell/applespell_provider.m 2012-01-11 22:39:17.000000000 +0100 +@@ -0,0 +1,337 @@ ++/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ ++/* enchant ++ * Copyright (C) 2004 Remi Payette ++ * Copyright (C) 2004 Francis James Franklin ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License ++ * as published by the Free Software Foundation; either version 2 ++ * of the License, or (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ++ * 02110-1301, USA. ++ */ ++ ++#include <glib.h> ++#include <gmodule.h> ++#include <Cocoa/Cocoa.h> ++#include <AvailabilityMacros.h> ++ ++#include "enchant-provider.h" ++ ++#ifdef __cplusplus ++extern "C" ++{ ++#endif ++ ++ENCHANT_MODULE_EXPORT (EnchantProvider *) ++init_enchant_provider (void); ++ ++ENCHANT_MODULE_EXPORT (void) ++configure_enchant_provider (EnchantProvider *provider, const gchar *module_dir); ++ ++#ifdef __cplusplus ++} ++#endif ++ ++ENCHANT_PLUGIN_DECLARE("AppleSpell") ++ ++typedef struct ++{ ++ NSSpellChecker *checker; ++ NSString *language; ++} Dictionary; ++ ++static Dictionary * ++dictionary_new (NSSpellChecker *checker, ++ NSString *language) ++{ ++ Dictionary *ret; ++ ++ ret = g_slice_new (Dictionary); ++ ++ ret->checker = checker; ++ ret->language = language; ++ ++ return ret; ++} ++ ++static void ++dictionary_free (Dictionary *dictionary) ++{ ++ [dictionary->language release]; ++ g_slice_free (Dictionary, dictionary); ++} ++ ++static gchar ** ++applespell_dict_suggest (EnchantDict *dict, ++ const gchar * const word, ++ size_t len, ++ size_t *out_n_suggs) ++{ ++ NSAutoreleasePool *pool; ++ gchar **ret = NULL; ++ NSString *str; ++ Dictionary *d; ++ NSArray *words; ++ NSRange range; ++ guint i = 0; ++ ++ pool = [[NSAutoreleasePool alloc] init]; ++ ++ d = dict->user_data; ++ ++ str = [[NSString alloc] initWithBytes:word length:len encoding:NSUTF8StringEncoding]; ++ ++ range.location = 0; ++ range.length = [str length]; ++ ++#if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_5 ++ words = [d->checker guessesForWordRange:range ++ inString:str ++ language:d->language ++ inSpellDocumentWithTag:0]; ++#else ++ [d->checker setLanguage:d->language]; ++ words = [d->checker guessesForWord:str]; ++#endif ++ ++ *out_n_suggs = [words count]; ++ ++ ret = g_new0 (gchar *, *out_n_suggs + 1); ++ ++ for (i = 0; i < [words count]; ++i) ++ { ++ ret[i] = g_strdup ([[words objectAtIndex:i] UTF8String]); ++ } ++ ++ [str release]; ++ [pool release]; ++ ++ return ret; ++} ++ ++static gint ++applespell_dict_check (EnchantDict *dict, ++ const gchar * const word, ++ size_t len) ++{ ++ NSAutoreleasePool *pool; ++ gint result = 0; ++ NSString *str; ++ Dictionary *d; ++ NSRange range; ++ ++ pool = [[NSAutoreleasePool alloc] init]; ++ ++ d = dict->user_data; ++ ++ str = [[NSString alloc] initWithBytes:word length:len encoding:NSUTF8StringEncoding]; ++ ++ range = [d->checker checkSpellingOfString:str ++ startingAt:0 ++ language:d->language ++ wrap:true ++ inSpellDocumentWithTag:0 ++ wordCount:NULL]; ++ ++ result = range.length > 0 ? 1 : 0; ++ ++ [str release]; ++ [pool release]; ++ ++ return result; ++} ++ ++static EnchantDict * ++applespell_provider_request_dict (EnchantProvider *provider, ++ const char * const tag) ++{ ++ NSAutoreleasePool *pool; ++ EnchantDict *dict; ++ NSString *str; ++ ++ pool = [[NSAutoreleasePool alloc] init]; ++ str = [[NSString alloc] initWithUTF8String:tag]; ++ ++ dict = g_new0 (EnchantDict, 1); ++ ++ dict->check = applespell_dict_check; ++ dict->suggest = applespell_dict_suggest; ++ ++ dict->user_data = dictionary_new (provider->user_data, ++ str); ++ ++ [str retain]; ++ ++ [pool release]; ++ return dict; ++} ++ ++static void ++applespell_provider_dispose_dict (EnchantProvider *provider, ++ EnchantDict *dict) ++{ ++ NSAutoreleasePool *pool; ++ ++ pool = [[NSAutoreleasePool alloc] init]; ++ ++ dictionary_free (dict->user_data); ++ g_free (dict); ++ ++ [pool release]; ++} ++ ++#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 ++static gchar const *available_languages[] = { ++ "en", ++ "en_GB", ++ "en_AU", ++ "de", ++ "fr", ++ "nl", ++ "pl", ++ NULL ++}; ++ ++#endif ++ ++static gint ++applespell_provider_dictionary_exists (EnchantProvider *provider, ++ const gchar * const tag) ++{ ++ NSAutoreleasePool *pool; ++ gint result = 0; ++ NSSpellChecker *checker; ++#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 ++ NSArray *languages; ++ guint i; ++#else ++ gchar const **ptr; ++#endif ++ ++ pool = [[NSAutoreleasePool alloc] init]; ++ ++ checker = provider->user_data; ++ ++#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 ++ languages = [checker availableLanguages]; ++ ++ for (i = 0; i < [languages count]; ++i) ++ { ++ if (g_strcmp0 (tag, [[languages objectAtIndex:i] UTF8String]) == 0) ++ { ++ result = 1; ++ break; ++ } ++ } ++#else ++ ptr = available_languages; ++ ++ while (ptr && *ptr) ++ { ++ if (g_strcmp0 (tag, *ptr) == 0) ++ { ++ result = 1; ++ break; ++ } ++ ++ptr; ++ } ++#endif ++ ++ [pool release]; ++ ++ return result; ++} ++ ++static void ++applespell_provider_dispose (EnchantProvider *provider) ++{ ++ g_free (provider); ++} ++ ++static const gchar * ++applespell_provider_identify (EnchantProvider *provider) ++{ ++ return "AppleSpell"; ++} ++ ++static const gchar * ++applespell_provider_describe (EnchantProvider *provider) ++{ ++ return "AppleSpell Provider"; ++} ++ ++static gchar ** ++applespell_provider_list_dicts (EnchantProvider *provider, ++ size_t *out_n_dicts) ++{ ++ NSSpellChecker *checker; ++ NSAutoreleasePool *pool; ++ gchar **ret = NULL; ++#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 ++ NSArray *languages; ++ guint i = 0; ++#endif ++ ++ pool = [[NSAutoreleasePool alloc] init]; ++ ++ checker = provider->user_data; ++ ++#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 ++ languages = [checker availableLanguages]; ++ *out_n_dicts = [languages count]; ++ ++ ret = g_new0 (gchar *, *out_n_dicts + 1); ++ ++ for (i = 0; i < [languages count]; ++i) ++ { ++ ret[i] = g_strdup ([[languages objectAtIndex:i] UTF8String]); ++ } ++#else ++ ret = g_strdupv ((gchar **)available_languages); ++#endif ++ ++ [pool release]; ++ ++ return ret; ++} ++ ++ENCHANT_MODULE_EXPORT (EnchantProvider *) ++init_enchant_provider (void) ++{ ++ NSAutoreleasePool *pool; ++ EnchantProvider *provider; ++ ++ pool = [[NSAutoreleasePool alloc] init]; ++ ++ provider = g_new0 (EnchantProvider, 1); ++ ++ provider->dispose = applespell_provider_dispose; ++ provider->request_dict = applespell_provider_request_dict; ++ provider->dispose_dict = applespell_provider_dispose_dict; ++ provider->dictionary_exists = applespell_provider_dictionary_exists; ++ provider->identify = applespell_provider_identify; ++ provider->describe = applespell_provider_describe; ++ provider->list_dicts = applespell_provider_list_dicts; ++ ++ provider->user_data = [NSSpellChecker sharedSpellChecker]; ++ ++ [pool release]; ++ ++ return provider; ++} ++ ++ENCHANT_MODULE_EXPORT (void) ++configure_enchant_provider (EnchantProvider *provider, ++ const gchar *module_dir) ++{ ++ return; ++} diff --git a/build-aux/osx/build/modulesets/patches/enchant/enchant-gsize.patch b/build-aux/osx/build/modulesets/patches/enchant/enchant-gsize.patch new file mode 100644 index 0000000..5bfba14 --- /dev/null +++ b/build-aux/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/build-aux/osx/build/modulesets/patches/enchant/enchant-relocatable.patch b/build-aux/osx/build/modulesets/patches/enchant/enchant-relocatable.patch new file mode 100644 index 0000000..7e56eb7 --- /dev/null +++ b/build-aux/osx/build/modulesets/patches/enchant/enchant-relocatable.patch @@ -0,0 +1,40 @@ +--- a/src/enchant.c 2010-04-01 22:53:37.000000000 +0200 ++++ b/src/enchant.c 2014-08-26 21:32:21.000000000 +0200 +@@ -210,6 +210,13 @@ + char * module_dir = NULL; + char * prefix = NULL; + ++ const char *envdir = g_getenv ("ENCHANT_MODULES_DIR"); ++ ++ if (envdir != NULL && *envdir != '\0') ++ { ++ module_dirs = enchant_slist_append_unique_path (module_dirs, g_strdup (envdir)); ++ } ++ + { + char* user_module_dir; + +@@ -239,7 +246,8 @@ + module_dirs = enchant_slist_append_unique_path (module_dirs, module_dir); + + #if defined(ENCHANT_GLOBAL_MODULE_DIR) +- module_dirs = enchant_slist_append_unique_path (module_dirs, g_strdup (ENCHANT_GLOBAL_MODULE_DIR)); ++ if (envdir == NULL || *envdir == '\0') ++ module_dirs = enchant_slist_append_unique_path (module_dirs, g_strdup (ENCHANT_GLOBAL_MODULE_DIR)); + #else + /* Dynamically locate library and search for modules relative to it. */ + prefix = enchant_get_prefix_dir(); +@@ -278,6 +286,13 @@ + if (ordering_dir) + conf_dirs = enchant_slist_append_unique_path (conf_dirs, ordering_dir); + ++ const char *envdir = g_getenv ("ENCHANT_DATA_DIR"); ++ ++ if (envdir != NULL && *envdir != '\0') ++ { ++ conf_dirs = enchant_slist_append_unique_path (conf_dirs, g_strdup (envdir)); ++ } ++ + /* Dynamically locate library and search for files relative to it. */ + prefix = enchant_get_prefix_dir(); + if(prefix) diff --git a/build-aux/osx/build/modulesets/patches/gettext-runtime/gettext-bug33999-stpncpy.patch b/build-aux/osx/build/modulesets/patches/gettext-runtime/gettext-bug33999-stpncpy.patch new file mode 100644 index 0000000..eda2932 --- /dev/null +++ b/build-aux/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/build-aux/osx/build/modulesets/patches/gettext-tools/gettext-bug33999-stpncpy.patch b/build-aux/osx/build/modulesets/patches/gettext-tools/gettext-bug33999-stpncpy.patch new file mode 100644 index 0000000..eda2932 --- /dev/null +++ b/build-aux/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/build-aux/osx/build/modulesets/patches/glib/0001-Bug-724590-GSlice-slab_stack-corruption.patch b/build-aux/osx/build/modulesets/patches/glib/0001-Bug-724590-GSlice-slab_stack-corruption.patch new file mode 100644 index 0000000..0e62201 --- /dev/null +++ b/build-aux/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/build-aux/osx/build/modulesets/patches/gobject-introspection/girscanner-objc.patch b/build-aux/osx/build/modulesets/patches/gobject-introspection/girscanner-objc.patch new file mode 100644 index 0000000..76d2bee --- /dev/null +++ b/build-aux/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/build-aux/osx/build/modulesets/patches/gtk+/0006-Bug-658722-Drag-and-Drop-sometimes-stops-working.patch b/build-aux/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/build-aux/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/build-aux/osx/build/modulesets/patches/gtk+/0008-Implement-GtkDragSourceOwner-pasteboardChangedOwner.patch b/build-aux/osx/build/modulesets/patches/gtk+/0008-Implement-GtkDragSourceOwner-pasteboardChangedOwner.patch new file mode 100644 index 0000000..5b9153c --- /dev/null +++ b/build-aux/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/build-aux/osx/build/modulesets/patches/gtk+/gtk+-2-m4-creation.patch b/build-aux/osx/build/modulesets/patches/gtk+/gtk+-2-m4-creation.patch new file mode 100644 index 0000000..26321b7 --- /dev/null +++ b/build-aux/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/build-aux/osx/build/modulesets/patches/gtk-mac-integration/0001-Fix-unhandled-exception-from-attempting-to-access-me.patch b/build-aux/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/build-aux/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/build-aux/osx/build/modulesets/patches/itstool/itstool.use-correct-libxml.patch b/build-aux/osx/build/modulesets/patches/itstool/itstool.use-correct-libxml.patch new file mode 100644 index 0000000..51a25c0 --- /dev/null +++ b/build-aux/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/build-aux/osx/build/modulesets/patches/libgcrypt/libgcrypt-build-clang.patch b/build-aux/osx/build/modulesets/patches/libgcrypt/libgcrypt-build-clang.patch new file mode 100644 index 0000000..5e6beb5 --- /dev/null +++ b/build-aux/osx/build/modulesets/patches/libgcrypt/libgcrypt-build-clang.patch @@ -0,0 +1,97 @@ +diff -c /Users/john/Development/gtk-sources/libgcrypt-1.5.3/cipher/rijndael.c\~ /Users/john/Development/gtk-sources/libgcrypt-1.5.3/cipher/rijndael.c +--- a/cipher/rijndael.c Tue Oct 15 11:09:37 2013 ++++ b/cipher/rijndael.c + Tue Oct 15 11:53:22 2013 +@@ -725,13 +725,13 @@ + "movdqa 0x90(%%esi), %%xmm1\n\t" + aesenc_xmm1_xmm0 + "movdqa 0xa0(%%esi), %%xmm1\n\t" +- "cmp $10, %[rounds]\n\t" ++ "cmpl $10, %[rounds]\n\t" + "jz .Lenclast%=\n\t" + aesenc_xmm1_xmm0 + "movdqa 0xb0(%%esi), %%xmm1\n\t" + aesenc_xmm1_xmm0 + "movdqa 0xc0(%%esi), %%xmm1\n\t" +- "cmp $12, %[rounds]\n\t" ++ "cmpl $12, %[rounds]\n\t" + "jz .Lenclast%=\n\t" + aesenc_xmm1_xmm0 + "movdqa 0xd0(%%esi), %%xmm1\n\t" +@@ -780,13 +780,13 @@ + "movdqa 0x90(%%esi), %%xmm1\n\t" + aesdec_xmm1_xmm0 + "movdqa 0xa0(%%esi), %%xmm1\n\t" +- "cmp $10, %[rounds]\n\t" ++ "cmpl $10, %[rounds]\n\t" + "jz .Ldeclast%=\n\t" + aesdec_xmm1_xmm0 + "movdqa 0xb0(%%esi), %%xmm1\n\t" + aesdec_xmm1_xmm0 + "movdqa 0xc0(%%esi), %%xmm1\n\t" +- "cmp $12, %[rounds]\n\t" ++ "cmpl $12, %[rounds]\n\t" + "jz .Ldeclast%=\n\t" + aesdec_xmm1_xmm0 + "movdqa 0xd0(%%esi), %%xmm1\n\t" +@@ -839,13 +839,13 @@ + "movdqa 0x90(%%esi), %%xmm1\n\t" + aesenc_xmm1_xmm0 + "movdqa 0xa0(%%esi), %%xmm1\n\t" +- "cmp $10, %[rounds]\n\t" ++ "cmpl $10, %[rounds]\n\t" + "jz .Lenclast%=\n\t" + aesenc_xmm1_xmm0 + "movdqa 0xb0(%%esi), %%xmm1\n\t" + aesenc_xmm1_xmm0 + "movdqa 0xc0(%%esi), %%xmm1\n\t" +- "cmp $12, %[rounds]\n\t" ++ "cmpl $12, %[rounds]\n\t" + "jz .Lenclast%=\n\t" + aesenc_xmm1_xmm0 + "movdqa 0xd0(%%esi), %%xmm1\n\t" +@@ -857,7 +857,7 @@ + "movdqu %[src], %%xmm1\n\t" /* Save input. */ + "pxor %%xmm1, %%xmm0\n\t" /* xmm0 = input ^ IV */ + +- "cmp $1, %[decrypt]\n\t" ++ "cmpl $1, %[decrypt]\n\t" + "jz .Ldecrypt_%=\n\t" + "movdqa %%xmm0, %[iv]\n\t" /* [encrypt] Store IV. */ + "jmp .Lleave_%=\n" +@@ -918,13 +918,13 @@ + "movdqa 0x90(%%esi), %%xmm1\n\t" + aesenc_xmm1_xmm0 + "movdqa 0xa0(%%esi), %%xmm1\n\t" +- "cmp $10, %[rounds]\n\t" ++ "cmpl $10, %[rounds]\n\t" + "jz .Lenclast%=\n\t" + aesenc_xmm1_xmm0 + "movdqa 0xb0(%%esi), %%xmm1\n\t" + aesenc_xmm1_xmm0 + "movdqa 0xc0(%%esi), %%xmm1\n\t" +- "cmp $12, %[rounds]\n\t" ++ "cmpl $12, %[rounds]\n\t" + "jz .Lenclast%=\n\t" + aesenc_xmm1_xmm0 + "movdqa 0xd0(%%esi), %%xmm1\n\t" +@@ -1045,7 +1045,7 @@ + aesenc_xmm1_xmm3 + aesenc_xmm1_xmm4 + "movdqa 0xa0(%%esi), %%xmm1\n\t" +- "cmp $10, %[rounds]\n\t" ++ "cmpl $10, %[rounds]\n\t" + "jz .Lenclast%=\n\t" + aesenc_xmm1_xmm0 + aesenc_xmm1_xmm2 +@@ -1057,7 +1057,7 @@ + aesenc_xmm1_xmm3 + aesenc_xmm1_xmm4 + "movdqa 0xc0(%%esi), %%xmm1\n\t" +- "cmp $12, %[rounds]\n\t" ++ "cmpl $12, %[rounds]\n\t" + "jz .Lenclast%=\n\t" + aesenc_xmm1_xmm0 + aesenc_xmm1_xmm2 + +Diff finished. Tue Oct 15 11:53:31 2013 diff --git a/build-aux/osx/build/modulesets/patches/libxml2/libxml2-Bug-686118-pthreads_once_init.patch b/build-aux/osx/build/modulesets/patches/libxml2/libxml2-Bug-686118-pthreads_once_init.patch new file mode 100644 index 0000000..8f42220 --- /dev/null +++ b/build-aux/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/build-aux/osx/build/modulesets/patches/readline/readline62-001 b/build-aux/osx/build/modulesets/patches/readline/readline62-001 new file mode 100644 index 0000000..d4563c3 --- /dev/null +++ b/build-aux/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/build-aux/osx/build/modulesets/patches/readline/readline62-002 b/build-aux/osx/build/modulesets/patches/readline/readline62-002 new file mode 100644 index 0000000..3dc2604 --- /dev/null +++ b/build-aux/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/build-aux/osx/build/modulesets/patches/readline/readline62-003 b/build-aux/osx/build/modulesets/patches/readline/readline62-003 new file mode 100644 index 0000000..0462242 --- /dev/null +++ b/build-aux/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/build-aux/osx/build/modulesets/patches/readline/readline62-004 b/build-aux/osx/build/modulesets/patches/readline/readline62-004 new file mode 100644 index 0000000..5f3ba9b --- /dev/null +++ b/build-aux/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/build-aux/osx/build/modulesets/patches/shared-mime-info/0001-Bug-70255-Build-fails-with-glib-2.38.patch b/build-aux/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/build-aux/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/build-aux/osx/build/updater/gedit-bootstrap-overrides.modules b/build-aux/osx/build/updater/gedit-bootstrap-overrides.modules new file mode 100644 index 0000000..37c2726 --- /dev/null +++ b/build-aux/osx/build/updater/gedit-bootstrap-overrides.modules @@ -0,0 +1,119 @@ +<?xml version="1.0"?> +<!DOCTYPE moduleset SYSTEM "moduleset.dtd"> +<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?> +<moduleset> + <repository type="tarball" name="ftp.gnome.org" default="yes" href="ftp://ftp.gnome.org/pub/gnome/sources/"/> + <repository type="tarball" name="xmlsoft.org" href="ftp://xmlsoft.org/libxml2/"/> + <repository type="tarball" name="itstool.org" href="http://files.itstool.org/itstool/"/> + <repository type="tarball" name="python" href="https://www.python.org/ftp/python/"/> + <repository type="tarball" name="oracle" href="http://download.oracle.com/"/> + + <autotools id="berkeleydb-nonsrctree" autogen-sh="configure" autogen-template="%(srcdir)s/dist/%(autogen-sh)s --prefix %(prefix)s --libdir %(libdir)s %(autogenargs)s"> + + <branch module="berkeley-db/db-4.8.30.NC.tar.gz" version="4.8.30" repo="oracle"> + <patch file="berkeleydb-nonsrctree/atomic.patch" strip="1"/> + </branch> + </autotools> + + <autotools id="berkeleydb" autogen-sh="configure" supports-non-srcdir-builds="no" makeargs="-C build_unix" autogen-template="cd build_unix; ../dist/%(autogen-sh)s --prefix %(prefix)s --libdir %(libdir)s %(autogenargs)s" makeinstallargs="-C build_unix install"> + + <branch module="berkeley-db/db-4.8.30.NC.tar.gz" version="4.8.30" repo="oracle"> + <patch file="berkeleydb/atomic.patch" strip="1"/> + </branch> + </autotools> + + <autotools id='readline' autogen-sh="configure"> + <branch repo="ftp.gnu.org" module="readline/readline-6.2.tar.gz" + version="6.2"> + <patch file="http://ftp.gnu.org/gnu/readline/readline-6.2-patches/readline62-001" strip="0"/> + <patch file="http://ftp.gnu.org/gnu/readline/readline-6.2-patches/readline62-002" strip="0"/> + <patch file="http://ftp.gnu.org/gnu/readline/readline-6.2-patches/readline62-003" strip="0"/> + <patch file="http://ftp.gnu.org/gnu/readline/readline-6.2-patches/readline62-004" strip="0"/> + </branch> + </autotools> + + <autotools id="gettext-runtime" autogen-sh="configure" + autogenargs="--without-emacs --disable-java --disable-native-java --disable-libasprintf --disable-csharp"> + <branch repo="ftp.gnu.org" source-subdir="gettext-runtime" + module="gettext/gettext-0.18.1.1.tar.gz" version="0.18.1.1" + size="15139737" md5sum="3dd55b952826d2b32f51308f2f91aa89"> + <patch file="http://git.gnome.org/browse/gtk-osx/plain/patches/gettext-bug33999-stpncpy.patch" strip="1"/> + </branch> + </autotools> + + <autotools id="python" autogenargs="--enable-shared" + autogen-sh="configure"> + <branch repo="python" + module="2.7.6/Python-2.7.6.tar.xz" version="2.7.6"> + </branch> + <dependencies> + <dep package="gettext-runtime"/> + <dep package='readline'/> + </dependencies> + <after> + <dep package="berkeleydb"/> + <dep package="berkeleydb-nonsrctree"/> + </after> + </autotools> + + <!-- Remove annoying autogen-sh="autoreconf" when itstool.use-correct-libxml.patch is removed --> + <autotools id="itstool" autogen-sh="autoreconf"> + <branch repo="itstool.org" + module="itstool-2.0.2.tar.bz2" + version="2.0.2" + hash="sha256:bf909fb59b11a646681a8534d5700fec99be83bb2c57badf8c1844512227033a" + size="96748"> + <patch file="https://git.gnome.org/browse/jhbuild/plain/patches/itstool.use-correct-libxml.patch" strip="1"/> + </branch> + </autotools> + + <autotools id="libxml2" autogen-sh="configure" autogenargs="--with-python"> + <branch version="2.9.0" module="libxml2-2.9.0.tar.gz" + repo="xmlsoft.org"> + <patch file="http://git.gnome.org/browse/gtk-osx/plain/patches/libxml2-Bug-686118-pthreads_once_init.patch" strip="1"/> + </branch> + <dependencies> + <dep package="python"/> + </dependencies> + </autotools> + + <autotools id="libxslt" autogen-sh="configure"> + <branch version="1.1.27" module="libxslt-1.1.27.tar.gz" repo="xmlsoft.org"/> + <dependencies> + <dep package="libxml2"/> + </dependencies> + </autotools> + + <autotools id="yelp-xsl" autogen-sh="configure"> + <branch module="yelp-xsl/3.10/yelp-xsl-3.10.1.tar.xz" + version="3.10.1" + hash="sha256:59c6dee3999121f6ffd33a9c5228316b75bc22e3bd68fff310beb4eeff245887" /> + <dependencies> + <dep package="libxslt"/> + <dep package="libxml2"/> + <dep package="intltool"/> + <dep package="itstool"/> + </dependencies> + </autotools> + + <autotools id="yelp-tools" autogen-sh="configure"> + <branch module="yelp-tools/3.10/yelp-tools-3.10.0.tar.xz" + version="3.10.0" + hash="sha256:ff5e1102631049b08e3ef0ade2cd10e63a62a812690e3d8558ed1413baef2611" /> + <dependencies> + <dep package="libxslt"/> + <dep package="libxml2"/> + <dep package="intltool"/> + <dep package="yelp-xsl"/> + <dep package="itstool"/> + </dependencies> + </autotools> + + <autotools id="gtk-doc" autogenargs="--disable-scrollkeeper --with-xml-catalog=$JHBUILD_PREFIX/etc/xml/catalog" makeargs="-k -i" makeinstallargs="-k -i install" autogen-sh="configure"> + <branch version="1.21" module="gtk-doc/1.21/gtk-doc-1.21.tar.xz" hash="sha256:5d934d012ee08edd1585544792efa80da271652587ba5b843d2cea8e8b80ee3e"/> + <dependencies> + <dep package="libxslt"/> + <dep package="yelp-tools"/> + </dependencies> + </autotools> +</moduleset> diff --git a/build-aux/osx/build/updater/gedit-overrides.modules b/build-aux/osx/build/updater/gedit-overrides.modules new file mode 100644 index 0000000..d893392 --- /dev/null +++ b/build-aux/osx/build/updater/gedit-overrides.modules @@ -0,0 +1,211 @@ +<?xml version="1.0"?> +<!DOCTYPE moduleset SYSTEM "moduleset.dtd"> +<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?> +<moduleset> + <repository type="git" name="git.gnome.org" + href="git://git.gnome.org/"/> + <repository type="tarball" name="ftp.gnome.org" default="yes" + href="http://ftp.gnome.org/pub/GNOME/sources/"/> + <repository type="tarball" name="cairographics.org" + href="http://cairographics.org/releases/"/> + <repository type="tarball" name="iso-codes" + href="http://pkg-isocodes.alioth.debian.org/downloads/"/> + <repository type="tarball" name="abisource/enchant" + href="http://www.abisource.com/downloads/enchant/" /> + <repository type="tarball" name="tarball.github.com" + href="https://github.com/"/> + <repository type="git" name="git.github.com" + href="https://github.com/"/> + + <autotools id="enchant" + autogenargs="--disable-myspell --disable-ispell"> + <branch module="1.6.0/enchant-1.6.0.tar.gz" version="1.6.0" + repo="abisource/enchant"> + <patch file="http://git.gnome.org/browse/gtk-osx/plain/patches/enchant-gsize.patch" strip="1"/> + <patch file="patches/enchant-applespell.patch" strip="1"/> + <patch file="patches/enchant-relocatable.patch" strip="1"/> + </branch> + <dependencies> + <dep package="glib"/> + </dependencies> + </autotools> + + <autotools id="gtk+-3.0" + autogenargs="--enable-quartz-backend --enable-quartz-relocation --disable-colord --without-atk-bridge"> + <branch module="jessevdk/gtk" checkoutdir="gtk+-3.0" repo="git.github.com" revision="wip/app-osx-int"/> + <dependencies> + <dep package="gobject-introspection"/> + <dep package="pango"/> + <dep package="gdk-pixbuf"/> + <dep package="atk"/> + </dependencies> + <after> + <dep package="meta-gtk-osx-bootstrap"/> + </after> + </autotools> + + <autotools id="pygobject3" autogenargs="--with-python=python3"> + <branch module="pygobject" repo="git.gnome.org"/> + <dependencies> + <dep package="meta-gtk-osx-gtk3"/> + </dependencies> + <after> + <dep package="python"/> + <dep package="python3"/> + </after> + </autotools> + + <waf id="pycairo-python3" autogen-sh="configure" python-command="python3"> + <branch module="pycairo-1.10.0.tar.bz2" repo="cairographics.org" version="1.10.0" hash="sha1:b4283aa1cc9aafd12fd72ad371303a486da1d014"/> + <dependencies> + <dep package="python3"/> + <dep package="cairo"/> + </dependencies> + <after> + <dep package="python3"/> + <dep package="meta-gtk-osx-gtk3"/> + </after> + </waf> + + <autotools id="pango" autogen-sh="autoreconf"> + <branch version="1.36.6" module="pango/1.36/pango-1.36.6.tar.xz" hash="sha256:4c53c752823723875078b91340f32136aadb99e91c0f6483f024f978a02c8624" repo="ftp.gnome.org"> + </branch> + <dependencies> + <dep package="cairo"/> + </dependencies> + <after> + <dep package="gobject-introspection"/> + <dep package="meta-gtk-osx-freetype"/> + <dep package="glib"/> + <dep package="meta-gtk-osx-bootstrap"/> + </after> + </autotools> + + <autotools id="libpeas" autogenargs="PYTHON=python3 --disable-python2 --enable-python3"> + <branch module="libpeas" repo="git.gnome.org"> + </branch> + <dependencies> + <dep package="python3"/> + <dep package="meta-gtk-osx-bootstrap"/> + <dep package="meta-gtk-osx-gtk3"/> + <dep package="pycairo-python3"/> + <dep package="pygobject3"/> + </dependencies> + </autotools> + + <autotools id="gsettings-desktop-schemas"> + <branch module="gsettings-desktop-schemas/3.10/gsettings-desktop-schemas-3.10.1.tar.xz" + version="3.10.1" + hash="sha256:452378c4960a145747ec69f8c6a874e5b7715454df3e2452d1ff1a0a82e76811"> + </branch> + <dependencies> + <dep package="meta-gtk-osx-bootstrap"/> + <dep package="glib"/> + </dependencies> + </autotools> + + <autotools id="gtksourceview3"> + <branch module="gtksourceview" repo="git.gnome.org"/> + <after> + <dep package="meta-gtk-osx-bootstrap"/> + <dep package="meta-gtk-osx-gtk3"/> + </after> + </autotools> + + <autotools id="adwaita-icon-theme" autogen-sh="configure"> + <branch module="adwaita-icon-theme/3.13/adwaita-icon-theme-3.13.5.tar.xz" + version="3.13.5" hash="sha256:e163f5f7e205b5f5345dd7f2c30d4104f19376217ca90def83b61a9459a62dbc"/> + <dependencies> + <dep package="hicolor-icon-theme"/> + <dep package="icon-naming-utils"/> + <dep package="librsvg"/> + </dependencies> + </autotools> + + <metamodule id="meta-gtk-osx-gtk3-core-themes"> + <dependencies> + <dep package="icon-naming-utils"/> + <dep package="gnome-themes-standard"/> + <dep package="adwaita-icon-theme"/> + </dependencies> + </metamodule> + + <cmake id="libgit2" + cmakeargs="-DTHREADSAFE:BOOL=1"> + <branch repo="tarball.github.com" + module="libgit2/libgit2/archive/v${version}.tar.gz" + version="0.21.0" + hash="ae2afb5729ab6dcf6f690e5d66cb876372eaaedd37dc4fb072ad8da92338e099" + checkoutdir="libgit2-${version}"> + </branch> + </cmake> + + <autotools id="libgit2-glib"> + <branch module="libgit2-glib/0.0/libgit2-glib-0.0.20.tar.xz" + version="0.0.20" hash="sha256:f8a10c8d3fcad14eed080dff6b8db0c72866c11a05b9731af31cb7258bcc8d95"/> + <dependencies> + <dep package="libgit2"/> + <dep package="glib"/> + <dep package="gobject-introspection"/> + </dependencies> + </autotools> + + <autotools id="vte" autogenargs="--disable-Bsymbolic --disable-vala --disable-gnome-pty-helper"> + <branch module="jessevdk/vte" repo="git.github.com"/> + <dependencies> + <dep package="meta-gtk-osx-gtk3"/> + </dependencies> + </autotools> + + <autotools id="gedit-plugins"> + <branch module="gedit-plugins" repo="git.gnome.org"/> + <dependencies> + <dep package="meta-gtk-osx-bootstrap"/> + <dep package="gedit"/> + <dep package="libgit2-glib"/> + <dep package="vte"/> + </dependencies> + </autotools> + + <autotools id="libsoup" autogen-sh="configure" autogenargs="set_more_warnings=no"> + <branch module="libsoup/2.40/libsoup-2.40.1.tar.xz" + version="2.40.1" hash="sha256:77a55d57e7e8055acd2f44e0cc889b9ba48052e8b7f07e829157d57417ac650a" /> + <dependencies> + <dep package="glib"/> + <dep package="glib-networking"/> + <dep package='sqlite'/> + </dependencies> + </autotools> + + <metamodule id="gedit-deps"> + <dependencies> + <dep package="meta-gtk-osx-bootstrap"/> + <dep package="meta-gtk-osx-freetype"/> + <dep package="meta-gtk-osx-gtk3"/> + <dep package="libpeas"/> + <dep package="gtksourceview3"/> + <dep package="enchant"/> + <dep package="gsettings-desktop-schemas"/> + <dep package="iso-codes"/> + <dep package="shared-mime-info"/> + <dep package="libsoup"/> + </dependencies> + </metamodule> + + <autotools id="gedit" autogenargs="PYTHON=python3"> + <branch repo="git.gnome.org" module="gedit"/> + <dependencies> + <dep package="gedit-deps"/> + </dependencies> + </autotools> + + <metamodule id="gedit-meta"> + <dependencies> + <dep package="gedit"/> + <dep package="gedit-plugins"/> + </dependencies> + </metamodule> + +</moduleset> + +<!-- vi:ex:ts=2:et --> diff --git a/build-aux/osx/build/updater/patches/enchant-applespell.patch b/build-aux/osx/build/updater/patches/enchant-applespell.patch new file mode 100644 index 0000000..f6f1f65 --- /dev/null +++ b/build-aux/osx/build/updater/patches/enchant-applespell.patch @@ -0,0 +1,368 @@ +--- a/configure.in (revision 30591) ++++ b/configure.in (working copy) +@@ -33,4 +33,5 @@ + AC_PROG_CC + AC_PROG_CPP ++AC_PROG_OBJC + AC_PROG_INSTALL + AC_PROG_LN_S +--- a/src/applespell/Makefile.am 2010-04-01 22:53:37.000000000 +0200 ++++ b/src/applespell/Makefile.am 2012-01-11 22:42:13.000000000 +0100 +@@ -1,4 +1,13 @@ +-EXTRA_DIST= \ +- applespell_checker.h \ +- applespell_checker.mm \ +- AppleSpell.config ++target_lib = libenchant_applespell.la ++ ++INCLUDES=-I$(top_srcdir)/src $(ENCHANT_CFLAGS) $(CC_WARN_CFLAGS) -DXP_TARGET_COCOA -xobjective-c -D_ENCHANT_BUILD=1 ++ ++applespell_LTLIBRARIES = $(target_lib) ++applespelldir= $(libdir)/enchant ++ ++libenchant_applespell_la_LIBADD= $(ENCHANT_LIBS) -lobjc $(top_builddir)/src/libenchant.la ++libenchant_applespell_la_LDFLAGS = -module -avoid-version -no-undefined -framework Cocoa ++libenchant_applespell_la_SOURCES = applespell_provider.m ++libenchant_applespell_la_LIBTOOLFLAGS = --tag=CC ++ ++libenchant_applespell_lalibdir=$(libdir)/enchant +--- a/src/applespell/applespell_provider.m 2012-01-11 22:46:35.000000000 +0100 ++++ b/src/applespell/applespell_provider.m 2012-01-11 22:39:17.000000000 +0100 +@@ -0,0 +1,337 @@ ++/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ ++/* enchant ++ * Copyright (C) 2004 Remi Payette ++ * Copyright (C) 2004 Francis James Franklin ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License ++ * as published by the Free Software Foundation; either version 2 ++ * of the License, or (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ++ * 02110-1301, USA. ++ */ ++ ++#include <glib.h> ++#include <gmodule.h> ++#include <Cocoa/Cocoa.h> ++#include <AvailabilityMacros.h> ++ ++#include "enchant-provider.h" ++ ++#ifdef __cplusplus ++extern "C" ++{ ++#endif ++ ++ENCHANT_MODULE_EXPORT (EnchantProvider *) ++init_enchant_provider (void); ++ ++ENCHANT_MODULE_EXPORT (void) ++configure_enchant_provider (EnchantProvider *provider, const gchar *module_dir); ++ ++#ifdef __cplusplus ++} ++#endif ++ ++ENCHANT_PLUGIN_DECLARE("AppleSpell") ++ ++typedef struct ++{ ++ NSSpellChecker *checker; ++ NSString *language; ++} Dictionary; ++ ++static Dictionary * ++dictionary_new (NSSpellChecker *checker, ++ NSString *language) ++{ ++ Dictionary *ret; ++ ++ ret = g_slice_new (Dictionary); ++ ++ ret->checker = checker; ++ ret->language = language; ++ ++ return ret; ++} ++ ++static void ++dictionary_free (Dictionary *dictionary) ++{ ++ [dictionary->language release]; ++ g_slice_free (Dictionary, dictionary); ++} ++ ++static gchar ** ++applespell_dict_suggest (EnchantDict *dict, ++ const gchar * const word, ++ size_t len, ++ size_t *out_n_suggs) ++{ ++ NSAutoreleasePool *pool; ++ gchar **ret = NULL; ++ NSString *str; ++ Dictionary *d; ++ NSArray *words; ++ NSRange range; ++ guint i = 0; ++ ++ pool = [[NSAutoreleasePool alloc] init]; ++ ++ d = dict->user_data; ++ ++ str = [[NSString alloc] initWithBytes:word length:len encoding:NSUTF8StringEncoding]; ++ ++ range.location = 0; ++ range.length = [str length]; ++ ++#if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_5 ++ words = [d->checker guessesForWordRange:range ++ inString:str ++ language:d->language ++ inSpellDocumentWithTag:0]; ++#else ++ [d->checker setLanguage:d->language]; ++ words = [d->checker guessesForWord:str]; ++#endif ++ ++ *out_n_suggs = [words count]; ++ ++ ret = g_new0 (gchar *, *out_n_suggs + 1); ++ ++ for (i = 0; i < [words count]; ++i) ++ { ++ ret[i] = g_strdup ([[words objectAtIndex:i] UTF8String]); ++ } ++ ++ [str release]; ++ [pool release]; ++ ++ return ret; ++} ++ ++static gint ++applespell_dict_check (EnchantDict *dict, ++ const gchar * const word, ++ size_t len) ++{ ++ NSAutoreleasePool *pool; ++ gint result = 0; ++ NSString *str; ++ Dictionary *d; ++ NSRange range; ++ ++ pool = [[NSAutoreleasePool alloc] init]; ++ ++ d = dict->user_data; ++ ++ str = [[NSString alloc] initWithBytes:word length:len encoding:NSUTF8StringEncoding]; ++ ++ range = [d->checker checkSpellingOfString:str ++ startingAt:0 ++ language:d->language ++ wrap:true ++ inSpellDocumentWithTag:0 ++ wordCount:NULL]; ++ ++ result = range.length > 0 ? 1 : 0; ++ ++ [str release]; ++ [pool release]; ++ ++ return result; ++} ++ ++static EnchantDict * ++applespell_provider_request_dict (EnchantProvider *provider, ++ const char * const tag) ++{ ++ NSAutoreleasePool *pool; ++ EnchantDict *dict; ++ NSString *str; ++ ++ pool = [[NSAutoreleasePool alloc] init]; ++ str = [[NSString alloc] initWithUTF8String:tag]; ++ ++ dict = g_new0 (EnchantDict, 1); ++ ++ dict->check = applespell_dict_check; ++ dict->suggest = applespell_dict_suggest; ++ ++ dict->user_data = dictionary_new (provider->user_data, ++ str); ++ ++ [str retain]; ++ ++ [pool release]; ++ return dict; ++} ++ ++static void ++applespell_provider_dispose_dict (EnchantProvider *provider, ++ EnchantDict *dict) ++{ ++ NSAutoreleasePool *pool; ++ ++ pool = [[NSAutoreleasePool alloc] init]; ++ ++ dictionary_free (dict->user_data); ++ g_free (dict); ++ ++ [pool release]; ++} ++ ++#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 ++static gchar const *available_languages[] = { ++ "en", ++ "en_GB", ++ "en_AU", ++ "de", ++ "fr", ++ "nl", ++ "pl", ++ NULL ++}; ++ ++#endif ++ ++static gint ++applespell_provider_dictionary_exists (EnchantProvider *provider, ++ const gchar * const tag) ++{ ++ NSAutoreleasePool *pool; ++ gint result = 0; ++ NSSpellChecker *checker; ++#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 ++ NSArray *languages; ++ guint i; ++#else ++ gchar const **ptr; ++#endif ++ ++ pool = [[NSAutoreleasePool alloc] init]; ++ ++ checker = provider->user_data; ++ ++#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 ++ languages = [checker availableLanguages]; ++ ++ for (i = 0; i < [languages count]; ++i) ++ { ++ if (g_strcmp0 (tag, [[languages objectAtIndex:i] UTF8String]) == 0) ++ { ++ result = 1; ++ break; ++ } ++ } ++#else ++ ptr = available_languages; ++ ++ while (ptr && *ptr) ++ { ++ if (g_strcmp0 (tag, *ptr) == 0) ++ { ++ result = 1; ++ break; ++ } ++ ++ptr; ++ } ++#endif ++ ++ [pool release]; ++ ++ return result; ++} ++ ++static void ++applespell_provider_dispose (EnchantProvider *provider) ++{ ++ g_free (provider); ++} ++ ++static const gchar * ++applespell_provider_identify (EnchantProvider *provider) ++{ ++ return "AppleSpell"; ++} ++ ++static const gchar * ++applespell_provider_describe (EnchantProvider *provider) ++{ ++ return "AppleSpell Provider"; ++} ++ ++static gchar ** ++applespell_provider_list_dicts (EnchantProvider *provider, ++ size_t *out_n_dicts) ++{ ++ NSSpellChecker *checker; ++ NSAutoreleasePool *pool; ++ gchar **ret = NULL; ++#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 ++ NSArray *languages; ++ guint i = 0; ++#endif ++ ++ pool = [[NSAutoreleasePool alloc] init]; ++ ++ checker = provider->user_data; ++ ++#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 ++ languages = [checker availableLanguages]; ++ *out_n_dicts = [languages count]; ++ ++ ret = g_new0 (gchar *, *out_n_dicts + 1); ++ ++ for (i = 0; i < [languages count]; ++i) ++ { ++ ret[i] = g_strdup ([[languages objectAtIndex:i] UTF8String]); ++ } ++#else ++ ret = g_strdupv ((gchar **)available_languages); ++#endif ++ ++ [pool release]; ++ ++ return ret; ++} ++ ++ENCHANT_MODULE_EXPORT (EnchantProvider *) ++init_enchant_provider (void) ++{ ++ NSAutoreleasePool *pool; ++ EnchantProvider *provider; ++ ++ pool = [[NSAutoreleasePool alloc] init]; ++ ++ provider = g_new0 (EnchantProvider, 1); ++ ++ provider->dispose = applespell_provider_dispose; ++ provider->request_dict = applespell_provider_request_dict; ++ provider->dispose_dict = applespell_provider_dispose_dict; ++ provider->dictionary_exists = applespell_provider_dictionary_exists; ++ provider->identify = applespell_provider_identify; ++ provider->describe = applespell_provider_describe; ++ provider->list_dicts = applespell_provider_list_dicts; ++ ++ provider->user_data = [NSSpellChecker sharedSpellChecker]; ++ ++ [pool release]; ++ ++ return provider; ++} ++ ++ENCHANT_MODULE_EXPORT (void) ++configure_enchant_provider (EnchantProvider *provider, ++ const gchar *module_dir) ++{ ++ return; ++} diff --git a/build-aux/osx/build/updater/patches/enchant-relocatable.patch b/build-aux/osx/build/updater/patches/enchant-relocatable.patch new file mode 100644 index 0000000..7e56eb7 --- /dev/null +++ b/build-aux/osx/build/updater/patches/enchant-relocatable.patch @@ -0,0 +1,40 @@ +--- a/src/enchant.c 2010-04-01 22:53:37.000000000 +0200 ++++ b/src/enchant.c 2014-08-26 21:32:21.000000000 +0200 +@@ -210,6 +210,13 @@ + char * module_dir = NULL; + char * prefix = NULL; + ++ const char *envdir = g_getenv ("ENCHANT_MODULES_DIR"); ++ ++ if (envdir != NULL && *envdir != '\0') ++ { ++ module_dirs = enchant_slist_append_unique_path (module_dirs, g_strdup (envdir)); ++ } ++ + { + char* user_module_dir; + +@@ -239,7 +246,8 @@ + module_dirs = enchant_slist_append_unique_path (module_dirs, module_dir); + + #if defined(ENCHANT_GLOBAL_MODULE_DIR) +- module_dirs = enchant_slist_append_unique_path (module_dirs, g_strdup (ENCHANT_GLOBAL_MODULE_DIR)); ++ if (envdir == NULL || *envdir == '\0') ++ module_dirs = enchant_slist_append_unique_path (module_dirs, g_strdup (ENCHANT_GLOBAL_MODULE_DIR)); + #else + /* Dynamically locate library and search for modules relative to it. */ + prefix = enchant_get_prefix_dir(); +@@ -278,6 +286,13 @@ + if (ordering_dir) + conf_dirs = enchant_slist_append_unique_path (conf_dirs, ordering_dir); + ++ const char *envdir = g_getenv ("ENCHANT_DATA_DIR"); ++ ++ if (envdir != NULL && *envdir != '\0') ++ { ++ conf_dirs = enchant_slist_append_unique_path (conf_dirs, g_strdup (envdir)); ++ } ++ + /* Dynamically locate library and search for files relative to it. */ + prefix = enchant_get_prefix_dir(); + if(prefix) diff --git a/build-aux/osx/build/updater/patches/gedit-plugins-disable-terminal.patch b/build-aux/osx/build/updater/patches/gedit-plugins-disable-terminal.patch new file mode 100644 index 0000000..e1d2928 --- /dev/null +++ b/build-aux/osx/build/updater/patches/gedit-plugins-disable-terminal.patch @@ -0,0 +1,30 @@ +--- a/configure.ac 2011-10-16 22:03:19.000000000 +0200 ++++ b/configure.ac 2012-01-15 13:57:54.000000000 +0100 +@@ -246,6 +246,27 @@ + fi + fi + ++# ================================================================ ++# Terminal (vte) ++# ================================================================ ++plugin_defined terminal ++ ++if test "$?" = 1 ++then ++ AC_CHECK_LIB([vte], [vte_terminal_new], [have_vte=yes], [have_vte=no]) ++ ++ if test "x$have_vte" = "xno"; then ++ plugin_defined_explicit terminal ++ if test "$?" = 1 ++ then ++ AC_MSG_ERROR([vte could not be found, needed for terminal plugin]) ++ else ++ AC_MSG_WARN([vte could not be found, terminal plugin will be disabled]) ++ undef_plugin terminal "vte not found" ++ fi ++ fi ++fi ++ + if test -z "$disabled_plugins" + then + disabled_plugins="none" diff --git a/build-aux/osx/build/updater/update_modulesets.py b/build-aux/osx/build/updater/update_modulesets.py new file mode 100755 index 0000000..1382297 --- /dev/null +++ b/build-aux/osx/build/updater/update_modulesets.py @@ -0,0 +1,320 @@ +#!/usr/bin/env python + +import lxml.etree as ET +import lxml.objectify + +import subprocess, shutil, os, glob, urllib2, json, sys, difflib + +if not os.path.exists('.gtk-osx'): + subprocess.call(['git', 'clone', 'git://git.gnome.org/gtk-osx', '.gtk-osx']) + +try: + os.makedirs('.cache') +except: + pass + +class Merger: + def __init__(self): + self.repos = {} + self.modules = {} + + def normalize_xml(self, xml): + s = ET.tostring(xml) + o = lxml.objectify.fromstring(s) + + return ET.tostring(o, pretty_print=True) + + def extract_repos(self, t): + default = None + + for repo in t.findall('./repository'): + name = repo.attrib['name'] + + if 'default' in repo.attrib: + default = repo + + if not name in self.repos: + self.repos[name] = repo + + return default + + def parse_module(self, f): + t = ET.parse(f) + drepo = self.extract_repos(t) + + tags = {} + + for x in t.getroot().findall('./'): + if x.tag == 'include' or x.tag == 'repository': + continue + + branch = x.find('./branch') + + if not branch is None and not 'repo' in branch.attrib: + branch.attrib['repo'] = drepo.attrib['name'] + + id = x.attrib['id'] + + if id in self.modules: + print('Overriding existing module {0}:'.format(id)) + + a = self.normalize_xml(self.modules[id]).splitlines(True) + b = self.normalize_xml(x).splitlines(True) + + print(''.join(difflib.unified_diff(a, b, fromfile='old', tofile='new'))) + print('\n') + + sys.stdout.write('Do you want to keep the original, or the new file? [(o)riginal, (n)new] ') + sys.stdout.flush() + answer = sys.stdin.readline().rstrip() + + if answer == '' or answer == 'n' or answer == 'new': + self.modules[id] = x + print('Using new version\n') + else: + print('Used original version\n') + else: + self.modules[id] = x + + def copy_patches(self, mod): + # Copy patches locally + patches = mod.findall('./branch/patch') + + if len(patches) == 0: + return + + dname = 'modulesets/patches/' + mod.attrib['id'] + + try: + os.makedirs(dname) + except: + pass + + locc = 'http://git.gnome.org/browse/gtk-osx/plain/' + + for p in patches: + f = p.attrib['file'] + + pname = os.path.basename(f) + + if f.startswith(locc): + shutil.copyfile('.gtk-osx/' + f[len(locc):], dname + '/' + pname) + elif f.startswith('patches/'): + shutil.copyfile(f, dname + '/' + pname) + else: + content = self.from_cache_or_url(os.path.join('patches', mod.attrib['id'], pname), f) + + with open(dname + '/' + pname, 'w') as patch: + patch.write(content) + + p.attrib['file'] = mod.attrib['id'] + '/' + pname + + def from_cache_or_url(self, filename, url): + cfile = os.path.join('.cache', filename) + + try: + with open(cfile) as f: + return f.read() + except: + pass + + resp = urllib2.urlopen(url) + ret = resp.read() + resp.close() + + dname = os.path.dirname(cfile) + + try: + os.makedirs(dname) + except: + pass + + try: + with open(cfile, 'w') as f: + f.write(ret) + except: + pass + + return ret + + def update_module(self, mod): + branch = mod.find('./branch') + + if branch is None: + return + + if not branch.attrib['repo'].endswith('.gnome.org'): + return + + # Check for latest versions + repo = self.repos[branch.attrib['repo']] + + if repo.attrib['type'] != 'tarball': + return + + module = branch.attrib['module'] + + modname = module.split('/', 2)[0] + version = [int(x) for x in branch.attrib['version'].split('.')] + + # Skip updating gtk+ 2.x + if modname == 'gtk+' and version[0] == 2: + return + + href = repo.attrib['href'] + versions = self.from_cache_or_url(mod.attrib['id'] + '.json', href + modname + '/cache.json') + versions = json.loads(versions) + + latest = [version, version] + + for v in versions[1][modname]: + vv = [int(x) for x in v.split('.')] + + if vv[1] % 2 == 0: + if vv > latest[0] and vv[0] == latest[0][0]: + latest[0] = vv + else: + if vv > latest[1] and vv[0] == latest[1][0]: + latest[1] = vv + + if latest[0] > version or latest[1] > version: + choices = [] + + if latest[0] > version: + choices.append('stable = {0}'.format('.'.join([str(x) for x in latest[0]]))) + + if latest[1] > version: + choices.append('unstable = {0}'.format('.'.join([str(x) for x in latest[1]]))) + + sversion = '.'.join([str(x) for x in version]) + print('Found new versions for {0} = {1}: {2}'.format(modname, sversion, ', '.join(choices))) + + sys.stdout.write('Do you want to update? [(s)table/(u)nstable/(n)o]: ') + sys.stdout.flush() + answer = sys.stdin.readline().rstrip() + + nv = None + + if answer == '': + if latest[0] > latest[1]: + answer = 'stable' + else: + answer = 'unstable' + + if (answer == 'stable' or answer == 's') and latest[0] > version: + nv = latest[0] + elif (answer =='unstable' or answer == 'u') and latest[1] > version: + nv = latest[1] + + if not nv is None: + v = '.'.join([str(x) for x in nv]) + info = versions[1][modname][v] + branch.attrib['version'] = v + branch.attrib['module'] = '{0}/{1}'.format(modname, info['tar.xz']) + + hfile = href + modname + '/' + info['sha256sum'] + + ret = self.from_cache_or_url(os.path.join('hashes', modname, info['sha256sum']), hfile) + + for line in ret.splitlines(): + hash, fname = line.rstrip().split(None, 2) + + if fname == os.path.basename(info['tar.xz']): + branch.attrib['hash'] = 'sha256:{0}'.format(hash) + + print('Updated to version {0}\n'.format(v)) + else: + print('Keep version {0}\n'.format(sversion)) + + def merge(self, modules, entry_point, overrides): + self.modules = {} + self.repos = {} + + for mod in modules: + self.parse_module(mod) + + self.required_modules = [] + processed = set() + + self.parse_module(overrides) + + process = [self.modules[entry_point]] + processed.add(entry_point) + + while len(process) != 0: + mod = process.pop() + id = mod.attrib['id'] + + self.required_modules.insert(0, mod) + + deps = mod.findall('./dependencies/dep') + mod.findall('./after/dep') + mod.findall('./suggests/dep') + + for dep in deps: + package = dep.attrib['package'] + + if package in processed: + continue + + if not package in self.modules: + sys.stderr.write('Package dependency is not in modules... {0}\n'.format(package)) + sys.exit(1) + + processed.add(package) + process.insert(0, self.modules[package]) + + def write(self, f): + needed_repos = {} + + for mod in self.required_modules: + branch = mod.find('./branch') + + if not branch is None and 'repo' in branch.attrib: + needed_repos[branch.attrib['repo']] = self.repos[branch.attrib['repo']] + + try: + os.makedirs('.cache') + except: + pass + + for mod in self.required_modules: + self.copy_patches(mod) + self.update_module(mod) + + with open(f, 'w') as f: + root = ET.Element('moduleset') + + repos = needed_repos.values() + repos.sort(lambda a, b: cmp(a.attrib['name'], b.attrib['name'])) + + for repo in repos: + root.append(repo) + + for mod in self.required_modules: + root.append(mod) + + ret = ET.ElementTree(root) + + content = ET.tostring(ret, pretty_print=True, xml_declaration=True, encoding='utf-8', doctype='<!DOCTYPE moduleset SYSTEM "moduleset.dtd">') + f.write(content) + +shutil.rmtree('modulesets', ignore_errors=True) + +os.makedirs('modulesets') +os.makedirs('modulesets/patches') + +allf = glob.glob('.gtk-osx/modulesets-stable/*.modules') + +nobs = [x for x in allf if os.path.basename(x) != 'bootstrap.modules'] +bs = [x for x in allf if os.path.basename(x) == 'bootstrap.modules'] + +m = Merger() + +m.merge(nobs, 'gedit-meta', 'gedit-overrides.modules') +m.write('modulesets/gedit.modules') + +m.merge(bs, 'meta-bootstrap', 'gedit-bootstrap-overrides.modules') +m.write('modulesets/bootstrap.modules') + +print('New modules have been written to "modulesets"') + +# vi:ts=4:et |