From adb934701975f6b0214475d1a8d0d1ce727b9d4d Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 27 Apr 2024 16:32:59 +0200 Subject: Adding upstream version 3.38.1. Signed-off-by: Daniel Baumann --- build-aux/osx/build/.gitignore | 5 + build-aux/osx/build/README | 131 +++++ build-aux/osx/build/build | 336 +++++++++++++ build-aux/osx/build/config/jhbuildrc-gedit | 40 ++ build-aux/osx/build/modulesets/bootstrap.modules | 249 ++++++++++ build-aux/osx/build/modulesets/gedit.modules | 553 +++++++++++++++++++++ .../patches/berkeleydb-nonsrctree/atomic.patch | 20 + .../modulesets/patches/berkeleydb/atomic.patch | 20 + .../patches/enchant/enchant-applespell.patch | 368 ++++++++++++++ .../modulesets/patches/enchant/enchant-gsize.patch | 97 ++++ .../patches/enchant/enchant-relocatable.patch | 40 ++ .../gettext-runtime/gettext-bug33999-stpncpy.patch | 63 +++ .../gettext-tools/gettext-bug33999-stpncpy.patch | 63 +++ ...1-Bug-724590-GSlice-slab_stack-corruption.patch | 28 ++ .../gobject-introspection/girscanner-objc.patch | 20 + ...722-Drag-and-Drop-sometimes-stops-working.patch | 274 ++++++++++ ...GtkDragSourceOwner-pasteboardChangedOwner.patch | 39 ++ .../patches/gtk+/gtk+-2-m4-creation.patch | 5 + ...ed-exception-from-attempting-to-access-me.patch | 39 ++ .../itstool/itstool.use-correct-libxml.patch | 28 ++ .../patches/libgcrypt/libgcrypt-build-clang.patch | 97 ++++ .../libxml2-Bug-686118-pthreads_once_init.patch | 33 ++ .../modulesets/patches/readline/readline62-001 | 46 ++ .../modulesets/patches/readline/readline62-002 | 57 +++ .../modulesets/patches/readline/readline62-003 | 76 +++ .../modulesets/patches/readline/readline62-004 | 108 ++++ ...0001-Bug-70255-Build-fails-with-glib-2.38.patch | 42 ++ .../updater/gedit-bootstrap-overrides.modules | 119 +++++ .../osx/build/updater/gedit-overrides.modules | 211 ++++++++ .../build/updater/patches/enchant-applespell.patch | 368 ++++++++++++++ .../updater/patches/enchant-relocatable.patch | 40 ++ .../patches/gedit-plugins-disable-terminal.patch | 30 ++ build-aux/osx/build/updater/update_modulesets.py | 320 ++++++++++++ 33 files changed, 3965 insertions(+) create mode 100644 build-aux/osx/build/.gitignore create mode 100644 build-aux/osx/build/README create mode 100755 build-aux/osx/build/build create mode 100644 build-aux/osx/build/config/jhbuildrc-gedit create mode 100644 build-aux/osx/build/modulesets/bootstrap.modules create mode 100644 build-aux/osx/build/modulesets/gedit.modules create mode 100644 build-aux/osx/build/modulesets/patches/berkeleydb-nonsrctree/atomic.patch create mode 100644 build-aux/osx/build/modulesets/patches/berkeleydb/atomic.patch create mode 100644 build-aux/osx/build/modulesets/patches/enchant/enchant-applespell.patch create mode 100644 build-aux/osx/build/modulesets/patches/enchant/enchant-gsize.patch create mode 100644 build-aux/osx/build/modulesets/patches/enchant/enchant-relocatable.patch create mode 100644 build-aux/osx/build/modulesets/patches/gettext-runtime/gettext-bug33999-stpncpy.patch create mode 100644 build-aux/osx/build/modulesets/patches/gettext-tools/gettext-bug33999-stpncpy.patch create mode 100644 build-aux/osx/build/modulesets/patches/glib/0001-Bug-724590-GSlice-slab_stack-corruption.patch create mode 100644 build-aux/osx/build/modulesets/patches/gobject-introspection/girscanner-objc.patch create mode 100644 build-aux/osx/build/modulesets/patches/gtk+/0006-Bug-658722-Drag-and-Drop-sometimes-stops-working.patch create mode 100644 build-aux/osx/build/modulesets/patches/gtk+/0008-Implement-GtkDragSourceOwner-pasteboardChangedOwner.patch create mode 100644 build-aux/osx/build/modulesets/patches/gtk+/gtk+-2-m4-creation.patch create mode 100644 build-aux/osx/build/modulesets/patches/gtk-mac-integration/0001-Fix-unhandled-exception-from-attempting-to-access-me.patch create mode 100644 build-aux/osx/build/modulesets/patches/itstool/itstool.use-correct-libxml.patch create mode 100644 build-aux/osx/build/modulesets/patches/libgcrypt/libgcrypt-build-clang.patch create mode 100644 build-aux/osx/build/modulesets/patches/libxml2/libxml2-Bug-686118-pthreads_once_init.patch create mode 100644 build-aux/osx/build/modulesets/patches/readline/readline62-001 create mode 100644 build-aux/osx/build/modulesets/patches/readline/readline62-002 create mode 100644 build-aux/osx/build/modulesets/patches/readline/readline62-003 create mode 100644 build-aux/osx/build/modulesets/patches/readline/readline62-004 create mode 100644 build-aux/osx/build/modulesets/patches/shared-mime-info/0001-Bug-70255-Build-fails-with-glib-2.38.patch create mode 100644 build-aux/osx/build/updater/gedit-bootstrap-overrides.modules create mode 100644 build-aux/osx/build/updater/gedit-overrides.modules create mode 100644 build-aux/osx/build/updater/patches/enchant-applespell.patch create mode 100644 build-aux/osx/build/updater/patches/enchant-relocatable.patch create mode 100644 build-aux/osx/build/updater/patches/gedit-plugins-disable-terminal.patch create mode 100755 build-aux/osx/build/updater/update_modulesets.py (limited to 'build-aux/osx/build') 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 ++#include ++#include ++#include ++ ++#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(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(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 + #include /* for strcpy */ + /* The stpncpy prototype is missing in 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 + #include /* for strcpy */ + /* The stpncpy prototype is missing in 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 +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 +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 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 +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 +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 +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 +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 +Bug-Reference-ID: +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 +Bug-Reference-ID: +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 +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 +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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 ++#include ++#include ++#include ++ ++#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='') + 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 -- cgit v1.2.3