osx-app.sh revision 408e9460dd70bf3c99f32030e78a901bf959da89
# Copyright 2005, Kees Cook <kees@outflux.net>
# Licensed under GNU General Public License
#
#
# This attempts to build an Inkscape.app package for OSX, resolving
# Dynamic libraries, etc. Strips the executable and libraries if
# '-s' is given.
#
# Thanks to GNUnet's "build_app" script for help with library dep resolution.
#
# Fixes and modifications to use Gimp.app style launcher:
# Michael Wybrow <mjwybrow@users.sourceforge.net>
#
#
# Notes:
# The Info.plist file can be found in the base inkscape directory once
# configure has been run.
#
# When packaging Inkscape for OS X, configure should be run with the
# "--enable-osxapp" option which sets the correct paths for support
# files inside the app bundle.
#
# Thus, the usual use of this file would be to run it from the within the
# ./osx-app.sh /path/to/bin/inkscape ../Info.plist macosx
# Handle some version specific details.
# We're on Tiger (10.4) or later.
# XCode behaves a little differently in Tiger and later.
XCODEFLAGS="-configuration Deployment"
# libXinerama.1.dylib is not installed as part of X11 on Panther but
# is introduced as a dependency if Inkscape is compiled on Tiger or
# later. Thus, add the library to the bundle for Panther users
else
# Panther (10.3) or earlier.
XCODEFLAGS="-buildstyle Deployment"
EXTRALIBS=""
fi
# Package always has the same name. Version information is stored in
# the Info.plist file which is filled in by the configure script.
# TODO: Rewrite handling of command line args and make more robust.
strip=false
if [ "$1" = "-s" ]; then
strip=true
shift
fi
binary="$1"
if [ ! -x "$binary" ]; then
echo "Not executable: $binary" >&2
exit 1
fi
shift
plist="$1"
if [ ! -f "$plist" ]; then
echo "Need plist file" >&2
exit 1
fi
shift
resdir=$1
if [ ! -d $resdir ]; then
echo "Need the macosx packaging directory" >&2
exit 1
fi
shift
# Fix a given executable or library to be relocatable
if [ ! -d "$1" ]; then
echo $1
echo " $lib"
to=@executable_path/../lib/$base
to=@executable_path/../lib/$base
fi
done
fi
fi
done
fi
}
# Build and add the launcher.
(
# Build fails if CC happens to be set (to anything other than CompileC)
unset CC
cd "$resdir/ScriptExec"
)
# Pull down all the share files
# PkgInfo must match bundle type and creator code from Info.plist
# Pull in extra requirements.
# Need to adjust path and quote incase of spaces in path.
sed -e "s,$SW,\"\${CWD},g" -e 's,\.so ,.so" ,g' $SW/etc/pango/pango.modules > $pkgetc/pango/pango.modules
[Pango]
ModuleFiles = "\${HOME}/.inkscape-etc/pango.modules"
[PangoX]
AliasFiles = "\${HOME}/.inkscape-etc/pangox.aliases"
END_PANGO
# We use a modified fonts.conf file so only need the dtd
do
done
# Find out libs we need from fink (e.g. $SW) - loop until no changes
a=1
nfiles=0
endl=true
while $endl; do
echo "Looking for dependencies. Round " $a
libs="`otool -L $pkglib/gtk-2.0/2.4.0/loaders/* $pkglib/gtk-2.0/2.4.0/immodules/* $pkglib/gtk-2.0/2.4.0/engines/*.so $pkglib/pango/1.4.0/modules/* $pkglib/gnome-vfs-2.0/modules/* $package/Contents/Resources/lib/* $binary 2>/dev/null | fgrep compatibility | cut -d\( -f1 | grep $SW | sort | uniq`"
let "a+=1"
endl=false
else
fi
done
do
done
if [ "$strip" = "true" ]; then
fi
# NOTE: This works for all the dylibs but causes GTK to crash at startup.
# Instead we leave them with their original install_names and set
# DYLD_LIBRARY_PATH within the app bundle before running Inkscape.
#
# Fix package deps
# for file in *; do
# fixlib "$file"
# done
# cd ../lib
# for file in *; do
# fixlib "$file"
# done)
# Get all the icons and the rest of the script framework
# Make an image
( cd macosx && ./osx-dmg.sh )