diff --git a/setup-bundle.sh b/setup-bundle.sh index fdd622bab6..eef534eb95 100755 --- a/setup-bundle.sh +++ b/setup-bundle.sh @@ -1,14 +1,36 @@ #!/bin/sh VERSION=`python -c "import os; execfile(os.path.join('tryton', 'version.py')); print VERSION"` +GTK_INST_DIR=~/gtk/inst +GTK_VERSION=2.10.0 +PANGO_VERSION=1.6.0 -for i in dist/tryton.app/Contents/Resources/share/pixmaps/tryton/*.svg; do - rsvg-convert $i -o ${i/svg/png}; +mkdir -p dist/tryton.app/Contents/Resources/lib/pango/${PANGO_VERSION}/modules +cp -r ${GTK_INST_DIR}/lib/pango/${PANGO_VERSION}/modules/*.so dist/tryton.app/Contents/Resources/lib/pango/${PANGO_VERSION}/modules/ + +pango-querymodules | sed -e "s#${GTK_INST_DIR}#@executable_path/../Resources#" >dist/tryton.app/Contents/Resources/pango.modules +echo -e "[Pango]\nModuleFiles=./pango.modules\n" >dist/tryton.app/Contents/Resources/pangorc + +mkdir -p dist/tryton.app/Contents/Resources/lib/gtk-2.0/${GTK_VERSION}/loaders/ +cp -r ${GTK_INST_DIR}/lib/gtk-2.0/${GTK_VERSION}/loaders/*.so dist/tryton.app/Contents/Resources/lib/gtk-2.0/${GTK_VERSION}/loaders/ + +gdk-pixbuf-query-loaders | sed -e "s#${GTK_INST_DIR}#@executable_path/../Resources#" >dist/tryton.app/Contents/Resources/gdk-pixbuf.loaders + +for library in dist/tryton.app/Contents/Resources/lib/gtk-2.0/${GTK_VERSION}/loaders/*.so dist/tryton.app/Contents/Resources/lib/pango/${PANGO_VERSION}/modules/*.so; do + libs="`otool -L $library 2>/dev/null | fgrep compatibility | cut -d\( -f1 | grep ${GTK_INST_DIR} | sort | uniq`" + for lib in $libs; do + fixed=`echo $lib | sed -e s,\${GTK_INST_DIR}/lib,@executable_path/../Frameworks,` + install_name_tool -change $lib $fixed $library + done done -rm -f dist/tryton.app/Contents/Resources/share/pixmaps/tryton/*.svg + for i in CHANGELOG COPYRIGHT LICENSE README TODO; do cp ${i} dist/${i}.txt done +if [[ -e tryton-${VERSION}.dmg ]]; then + rm tryton-${VERSION}.dmg +fi + hdiutil create tryton-${VERSION}.dmg -volname "Tryton Client ${VERSION}" -fs HFS+ -srcfolder dist diff --git a/setup.py b/setup.py index b0703ba6be..bf5d64a56e 100644 --- a/setup.py +++ b/setup.py @@ -88,6 +88,7 @@ elif os.name == 'mac' \ 'includes': 'pygtk, gtk, glib, cairo, pango, pangocairo, atk, ' \ 'gobject, gio, gtk.keysyms', 'resources': 'tryton/plugins', + 'frameworks': 'librsvg-2.2.dylib', 'plist': { 'CFBundleIdentifier': 'org.tryton', }, diff --git a/tryton/client.py b/tryton/client.py index 6ead7b3438..8aac5fced1 100644 --- a/tryton/client.py +++ b/tryton/client.py @@ -15,6 +15,16 @@ if os.name == 'nt': os.environ['PATH'] = os.path.join(os.getcwd(), os.path.dirname(sys.argv[0]), 'GTK\\lib') + ';' + os.environ['PATH'] +elif os.name == 'mac' or \ + (hasattr(os, 'uname') and os.uname()[0] == 'Darwin'): + resources = os.path.join(os.path.dirname(sys.argv[0]), '..', 'Resources') + pixbuf_loader = os.path.join(resources, 'gdk-pixbuf.loaders') + if os.path.isfile(pixbuf_loader): + os.environ['GDK_PIXBUF_MODULE_FILE'] = pixbuf_loader + pangorc = os.path.join(resources, 'pangorc') + if os.path.isfile(pangorc): + os.environ['PANGO_RC_FILE'] = pangorc + import pygtk pygtk.require('2.0') import gtk