From 726d70b481c33a210bba17c156e7485247d983d9 Mon Sep 17 00:00:00 2001 From: Youssef Adnan Date: Wed, 29 Nov 2017 21:01:51 -0800 Subject: [PATCH] Update build for python3 compay for Mac --- osx/build_app.sh | 1 + osx/conf.py | 85 +++++++++++++++++++++++++++++++++++++++++++----- setup_py2app.py | 15 +++++---- 3 files changed, 85 insertions(+), 16 deletions(-) diff --git a/osx/build_app.sh b/osx/build_app.sh index 6d31635de..94ec8b485 100755 --- a/osx/build_app.sh +++ b/osx/build_app.sh @@ -12,6 +12,7 @@ glib-compile-schemas data python setup_py2app.py build python setup_py2app.py py2app +rm -fr $FRAMEWORKS/Python.framework # icon themes mkdir -p $RES/share/icons rsync -r -t --ignore-existing $INSTROOT/share/icons/Adwaita $RES/share/icons diff --git a/osx/conf.py b/osx/conf.py index 6fc79cfb9..f9565230e 100644 --- a/osx/conf.py +++ b/osx/conf.py @@ -21,17 +21,84 @@ def frozen(): global DATADIR, LOCALEDIR, UNINSTALLED_SCHEMA - melddir = os.path.dirname(sys.executable) - - DATADIR = os.path.join(melddir, "share", "meld") - LOCALEDIR = os.path.join(melddir, "share", "mo") UNINSTALLED_SCHEMA = True - # This first bit should be unnecessary, but some things (GTK icon theme - # location, GSettings schema location) don't fall back correctly. - data_dir = os.environ.get('XDG_DATA_DIRS', "/usr/local/share/:/usr/share/") - data_dir = ":".join((melddir, data_dir)) - os.environ['XDG_DATA_DIRS'] = data_dir + try: + from Foundation import NSBundle + bundle = NSBundle.mainBundle() + resource_path = bundle.resourcePath().fileSystemRepresentation().decode("utf-8") + bundle_path = bundle.bundlePath().fileSystemRepresentation().decode("utf-8") + frameworks_path = bundle.privateFrameworksPath().fileSystemRepresentation().decode("utf-8") + executable_path = bundle.executablePath().fileSystemRepresentation().decode("utf-8") + etc_path = os.path.join(resource_path , "etc") + lib_path = os.path.join(resource_path , "lib") + share_path = os.path.join(resource_path , "share") + + # Default to Adwaita GTK Theme or override with user's environment var + gtk_theme= os.environ.get('GTK_THEME', "Adwaita") + os.environ['GTK_THEME'] = gtk_theme + + # Main libraries environment variables + #dyld_library_path = os.environ.get('DYLD_LIBRARY_PATH', '').split(':') + #dyld_library_path.insert(0, lib_path) + #dyld_library_path.insert(1, frameworks_path) + #os.environ['DYLD_LIBRARY_PATH'] = ':'.join(dyld_library_path) + #print "DYLD_LIBRARY_PATH %s" % os.environ.get('DYLD_LIBRARY_PATH', '') + + # Glib and GI environment variables + os.environ['GSETTINGS_SCHEMA_DIR'] = os.path.join( + share_path, "glib-2.0") + os.environ['GI_TYPELIB_PATH'] = os.path.join( + lib_path, "girepository-1.0") + + # Avoid GTK warnings unless user specifies otherwise + debug_gtk = os.environ.get('G_ENABLE_DIAGNOSTIC', "0") + os.environ['G_ENABLE_DIAGNOSTIC'] = debug_gtk + + # GTK environment variables + os.environ['GTK_DATA_PREFIX'] = resource_path + os.environ['GTK_EXE_PREFIX'] = resource_path + os.environ['GTK_PATH'] = resource_path + + # XDG environment variables + os.environ['XDG_CONFIG_DIRS'] = os.path.join(etc_path, "xdg") + os.environ['XDG_DATA_DIRS'] = ":".join((share_path, + os.path.join(share_path, "meld"))) + + # Pango environment variables + os.environ['PANGO_RC_FILE'] = os.path.join(etc_path, "pango", "pangorc") + os.environ['PANGO_SYSCONFDIR'] = etc_path + os.environ['PANGO_LIBDIR'] = lib_path + + # Gdk environment variables + os.environ['GDK_PIXBUF_MODULEDIR'] = os.path.join( + lib_path, "gdk-pixbuf-2.0", "2.10.0", "loaders") + os.environ['GDK_RENDERING'] = "image" + + # Python environment variables + os.environ['PYTHONHOME'] = resource_path + original_python_path = os.environ.get('PYTHONPATH', "") + python_path = ":".join((lib_path, + os.path.join(lib_path, "python", "lib-dynload"), + os.path.join(lib_path, "python"), + original_python_path)) + os.environ['PYTHONPATH'] = python_path + + # meld specific + DATADIR = os.path.join(share_path, "meld") + LOCALEDIR = os.path.join(share_path, "mo") + + except ImportError: + print ("frozen: ImportError") + melddir = os.path.dirname(sys.executable) + DATADIR = os.path.join(melddir, "share", "meld") + LOCALEDIR = os.path.join(melddir, "share", "mo") + + # This first bit should be unnecessary, but some things (GTK icon theme + # location, GSettings schema location) don't fall back correctly. + data_dir = os.environ.get('XDG_DATA_DIRS', "/usr/local/share/:/usr/share/") + data_dir = ":".join((melddir, data_dir)) + os.environ['XDG_DATA_DIRS'] = data_dir def uninstalled(): diff --git a/setup_py2app.py b/setup_py2app.py index f9b9f1a80..74abdcb20 100644 --- a/setup_py2app.py +++ b/setup_py2app.py @@ -1,13 +1,13 @@ # -*- coding: utf-8 -*- -#!/usr/bin/env python +#!/usr/bin/env python3 import glob import os import site -from setuptools import setup -import meld.meldapp +import meld.build_helpers import meld.conf +from setuptools import setup APP_NAME = 'MeldMerge' VERSION_STRING = meld.conf.__version__ @@ -47,11 +47,12 @@ PY_SUFFIXES.append('') setup( - name='Meld', + name="Meld", version=meld.conf.__version__, description='Visual diff and merge tool', - author='Kai Willadsen', - author_email='kai.willadsen@gmail.com', + author='The Meld project', + author_email='meld-list@gnome.org', + maintainer='Kai Willadsen', url='http://meldmerge.org', license='GPLv2+', classifiers=[ @@ -68,8 +69,8 @@ ], packages=[ 'meld', + 'meld.matchers', 'meld.ui', - 'meld.util', 'meld.vc', ], package_data={