summaryrefslogtreecommitdiffstats
path: root/packaging/macosx/Resources/script
diff options
context:
space:
mode:
authorsu_v <suv-sf@users.sourceforge.net>2014-09-02 22:07:52 +0000
committer~suv <suv-sf@users.sourceforge.net>2014-09-02 22:07:52 +0000
commitae2c67ac8b6c0a03457042abb8e4cab728aae8a5 (patch)
treedeec660daa87eadeb55e00f3cdcfa7630101f89e /packaging/macosx/Resources/script
parentosx-build.sh: don't attempt to update a bound branch (diff)
downloadinkscape-ae2c67ac8b6c0a03457042abb8e4cab728aae8a5.tar.gz
inkscape-ae2c67ac8b6c0a03457042abb8e4cab728aae8a5.zip
Simplify nested structure of launcher scripts (needs testing)
(bzr r13506.1.55)
Diffstat (limited to 'packaging/macosx/Resources/script')
-rwxr-xr-xpackaging/macosx/Resources/script161
1 files changed, 153 insertions, 8 deletions
diff --git a/packaging/macosx/Resources/script b/packaging/macosx/Resources/script
index de839484d..9951922ab 100755
--- a/packaging/macosx/Resources/script
+++ b/packaging/macosx/Resources/script
@@ -4,19 +4,164 @@
# Inkscape Modifications: Michael Wybrow <mjwybrow@users.sourceforge.net>
# Inkscape Modifications: ~suv <suv-sf@users.sourceforge.net>
-#export _DEBUG=true
+if test "x$GTK_DEBUG_LAUNCHER" != x; then
+ set -x
+fi
+if test "x$GTK_DEBUG_GDB" != x; then
+ EXEC="gdb --args"
+elif test "x$GTK_DEBUG_LLDB" != x; then
+ EXEC="lldb -- "
+elif test "x$GTK_DEBUG_DTRUSS" != x; then
+ EXEC="dtruss"
+else
+ EXEC=exec
+fi
+
+# store absolute path to current script
CWD="$(cd "$(dirname "$0")" && pwd)"
+# read xdg user configuration
source "${CWD}/xdg_setup.sh"
-source "${CWD}/alert_fccache.sh"
-BASE="$(echo "$0" | sed -e 's/\/Contents\/Resources\/script/\//')"
+# if this is the main script, check if this is the first run for current user
+if [ $(basename "$0") == "script" ]; then
+ source "${CWD}/alert_fccache.sh"
+fi
+
+# set prefix for bundled libs and resources
+TOP="$CWD"
+
+# change into path prefix (top-level app dir) for osxapp-enabled binary
+BASE="$(echo "$CWD" | sed -e 's/\/Contents\/Resources/\//')"
cd "$BASE"
-# TODO examine whether it would be wisest to move the code from inkscape shell
-# script and getdisplay.sh to here and only keep the real binary in bin. This
-# may make things easier on Leopard and may also help using Inkscape on the
-# command line.
+# Brutally add many things to the PATH. If the directories do not exist, they won't be used anyway.
+# the 'classic' PATH additions:
+# /usr/local/bin which, though standard, doesn't seem to be in the PATH
+# Fink
+# MacPorts (former DarwinPorts)
+# LaTeX distribution for Mac OS X
+export PATH="/usr/texbin:/opt/local/bin:/sw/bin/:/usr/local/bin:$PATH"
+
+# Put /usr/bin at beginning of path so we make sure we use Apple's python
+# over one that may be installed be Macports, Fink or some other means.
+export PATH="/usr/bin:$PATH"
+
+# Put $CWD/bin at beginning of path so we make sure that recursive calls
+# to inkscape don't pull in other inkscape binaries with different setup
+# also allows to override system python with custom wrapper script
+export PATH="$CWD/bin:$PATH"
+
+# Set up PYTHONPATH to use python modules bundled with Inkscape
+OSXMINORNO="$(/usr/bin/sw_vers -productVersion | cut -d. -f2)"
+build_arch=__build_arch__
+if [ $OSXMINORNO -gt "5" ]; then
+ if [ $OSXMINORNO -eq "6" ]; then
+ export VERSIONER_PYTHON_VERSION=2.6
+ else # if [ $OSXMINORNO -ge "7" ]; then
+ export VERSIONER_PYTHON_VERSION=2.7
+ fi
+ if [ $build_arch = "i386" ]; then
+ export VERSIONER_PYTHON_PREFER_32_BIT=yes
+ else # build & runtime arch x86_64
+ export VERSIONER_PYTHON_PREFER_32_BIT=no
+ fi
+fi
+PYTHON_VERS="$(python -V 2>&1 | cut -c 8-10)"
+export PYTHONPATH="$TOP/lib/python$PYTHON_VERS/site-packages/"
+
+# fallback for missing $INK_CACHE_DIR
+if [ -z "$INK_CACHE_DIR" ]; then
+ INK_CACHE_DIR="${HOME}/.cache/inkscape"
+ mkdir -p "$INK_CACHE_DIR"
+ [ $_DEBUG ] && echo "INK_CACHE_DIR: falling back to $INK_CACHE_DIR"
+fi
+
+export FONTCONFIG_PATH="$TOP/etc/fonts"
+export PANGO_RC_FILE="${INK_CACHE_DIR}/pangorc"
+export GTK_IM_MODULE_FILE="${INK_CACHE_DIR}/immodules.cache"
+export GDK_PIXBUF_MODULE_FILE="${INK_CACHE_DIR}/loaders.cache"
+export GTK_DATA_PREFIX="$TOP"
+export GTK_EXE_PREFIX="$TOP"
+export GTK_PATH="$TOP"
+export GNOME_VFS_MODULE_CONFIG_PATH="$TOP/etc/gnome-vfs-2.0/modules"
+export GNOME_VFS_MODULE_PATH="$TOP/lib/gnome-vfs-2.0/modules"
+export XDG_DATA_DIRS="$TOP/share"
+export ASPELL_CONF="prefix $TOP;"
+export POPPLER_DATADIR="$TOP/share/poppler"
+
+# Note: This requires the path with the exact ImageMagic version number.
+# Also, that ImageMagick will only work if it does not find a
+# version installed into the same PREFIX as it was originally
+# installed. Luckily, this is very unlikely given the extra long
+# and strangely named install prefix we use.
+# The actual version is inserted by the packaging script.
+export MAGICK_CONFIGURE_PATH="$TOP/lib/ImageMagick-IMAGEMAGICKVER/config:$TOP/share/ImageMagick-IMAGEMAGICKVER_MAJOR/config"
+export MAGICK_CODER_FILTER_PATH="$TOP/lib/ImageMagick-IMAGEMAGICKVER/modules-Q16/filters"
+export MAGICK_CODER_MODULE_PATH="$TOP/lib/ImageMagick-IMAGEMAGICKVER/modules-Q16/coders"
+
+export INKSCAPE_SHAREDIR="$TOP/share/inkscape"
+export INKSCAPE_PLUGINDIR="$TOP/lib/inkscape"
+export INKSCAPE_LOCALEDIR="$TOP/share/locale"
+
+# Handle the case where the directory storing Inkscape has special characters
+# ('#', '&', '|') in the name. These need to be escaped to work properly for
+# various configuration files.
+ESCAPEDTOP=`echo "$TOP" | sed 's/#/\\\\\\\\#/' | sed 's/&/\\\\\\&/g' | sed 's/|/\\\\\\|/g'`
+
+# Set GTK theme (only if there is no .gtkrc-2.0 in the user's home)
+if [[ ! -e "$HOME/.gtkrc-2.0" ]]; then
+ export GTK2_RC_FILES="$ESCAPEDTOP/etc/gtk-2.0/gtkrc"
+fi
+
+# If the AppleCollationOrder preference doesn't exist, we fall back to using
+# the AppleLocale preference.
+LANGSTR=`defaults read .GlobalPreferences AppleCollationOrder 2>/dev/null`
+if [ "x$LANGSTR" == "x" -o "x$LANGSTR" == "xroot" ]
+then
+ LANGSTR=`defaults read .GlobalPreferences AppleLocale 2>/dev/null | \
+ sed 's/_.*//'`
+ [ $_DEBUG ] && echo "Setting LANGSTR from AppleLocale: $LANGSTR" 1>&2
+else
+ [ $_DEBUG ] && echo "Setting LANGSTR from AppleCollationOrder: $LANGSTR" 1>&2
+fi
+
+# NOTE: Have to add ".UTF-8" to the LANG since omitting causes Inkscape
+# to crash on startup in locale_from_utf8().
+if [ "x$LANGSTR" == "x" ]
+then
+ # override broken script
+ [ $_DEBUG ] && echo "Overriding empty LANGSTR" 1>&2
+ export LANG="en_US.UTF-8"
+else
+ tmpLANG="`grep \"\`echo $LANGSTR\`_\" /usr/share/locale/locale.alias | \
+ tail -n1 | sed 's/\./ /' | awk '{print $2}'`"
+ if [ "x$tmpLANG" == "x" ]
+ then
+ # override broken script
+ [ $_DEBUG ] && echo "Overriding empty LANG from /usr/share/locale/locale.alias" 1>&2
+ export LANG="en_US.UTF-8"
+ else
+ [ $_DEBUG ] && echo "Setting LANG from /usr/share/locale/locale.alias" 1>&2
+ export LANG="$tmpLANG.UTF-8"
+ fi
+fi
+[ $_DEBUG ] && echo "Setting Language: $LANG" 1>&2
+export LC_ALL="$LANG"
+
+sed 's|${INK_CACHE_DIR}|'"$INK_CACHE_DIR|g" "$TOP/etc/pango/pangorc" > "${INK_CACHE_DIR}/pangorc"
+sed 's|${CWD}|'"$ESCAPEDTOP|g" "$TOP/etc/pango/pango.modules" \
+ > "${INK_CACHE_DIR}/pango.modules"
+sed 's|${CWD}|'"$ESCAPEDTOP|g" "$TOP/lib/gtk-2.0/__gtk_version__/immodules.cache" \
+ > "${INK_CACHE_DIR}/immodules.cache"
+sed 's|${CWD}|'"$ESCAPEDTOP|g" "$TOP/lib/gdk-pixbuf-2.0/__gdk_pixbuf_version__/loaders.cache" \
+ > "${INK_CACHE_DIR}/loaders.cache"
+
+if [ "x$GTK_DEBUG_SHELL" != "x" ]; then
+ exec bash
+else
+ $EXEC "$CWD/bin/inkscape" "$@"
+fi
-exec "$CWD/bin/inkscape" "$@"
+# eof