From 9b60287eb2c7d24c7c9e1121d03a4f583a208c91 Mon Sep 17 00:00:00 2001 From: David Vierra Date: Tue, 16 Aug 2016 22:55:59 -1000 Subject: [PATCH] Get builds going for OS X --- mcedit2.icns | Bin 0 -> 69633 bytes mcedit2.spec | 54 ++++++++++++++++++++++++++++++-------------- requirements.txt | 2 +- setup_mcedit2.py | 9 ++++++-- setup_mceditlib.py | 7 +++++- src/mcedit2/main.py | 10 ++++---- 6 files changed, 57 insertions(+), 25 deletions(-) create mode 100644 mcedit2.icns diff --git a/mcedit2.icns b/mcedit2.icns new file mode 100644 index 0000000000000000000000000000000000000000..7d8e7a81b8827f5ec015ce188aad21028ebec89e GIT binary patch literal 69633 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 %Iy&#&=hZ|jLyl-32JF; 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 literal 0 HcmV?d00001 diff --git a/mcedit2.spec b/mcedit2.spec index 55a1649..4a6fbdb 100644 --- a/mcedit2.spec +++ b/mcedit2.spec @@ -20,7 +20,8 @@ except ImportError: # --- Configurations --- -onefile = True # if False, also skips the distribution packaging +is_win = sys.platform == 'win32' +is_osx = sys.platform == 'darwin' SEVENZIP = r"C:\Program Files\7-Zip\7z.exe" @@ -32,10 +33,18 @@ if 'APPVEYOR_BUILD_FOLDER' in os.environ: arch_plat = os.environ.get('PYTHON_ARCH_PLAT') if arch_plat is None: _arch = platform.architecture()[0][:2] - _plat = "win" if os.name == 'nt' else os.name + _plat = "win" if sys.platform == 'win32' else os.name arch_plat = _plat + _arch +if is_win: + exe_name = dist_app_name = "mcedit2.exe" + exclude_binaries = False + +if is_osx: + exe_name = "MCEdit 2" + dist_app_name = "MCEdit 2.app" + exclude_binaries = True # --- Get version number and write to _version.py --- @@ -152,20 +161,20 @@ def apply_filter(toc): a.datas = apply_filter(a.datas) a.binaries = apply_filter(a.binaries) -if onefile: +if is_win: a.scripts += a.binaries + a.zipfiles + a.datas + a.zipped_data exe = EXE(pyz, a.scripts, - exclude_binaries=not onefile, - name='mcedit2.exe', + exclude_binaries=exclude_binaries, + name=exe_name, debug=True, strip=None, upx=False, console=True, icon="mcediticon.ico") -if not onefile: +if is_osx: coll = COLLECT(exe, a.binaries, a.zipfiles, @@ -174,20 +183,31 @@ if not onefile: upx=True, name='mcedit2') + bundle = BUNDLE(coll, + name=dist_app_name, + icon="mcedit2.icns", + bundle_identifier='net.mcedit.mcedit2', + ) + # --- Distribution packaging --- -if onefile: - dist_folder_path = path.join("dist", dist_folder_name) - os.makedirs(dist_folder_path) - shutil.copy(path.join("dist", "mcedit2.exe"), dist_folder_path) - - userdata_path = path.join(dist_folder_path, "MCEdit 2 Files") - plugins_path = path.join(userdata_path, "plugins") - - os.makedirs(userdata_path) - - shutil.copytree(path.join('src', 'plugins'), plugins_path) + +dist_folder_path = path.join("dist", dist_folder_name) +os.makedirs(dist_folder_path) + +if is_osx: + shutil.copytree(path.join("dist", dist_app_name), path.join(dist_folder_path, dist_app_name)) +else: + shutil.copy(path.join("dist", dist_app_name), dist_folder_path) + +userdata_path = path.join(dist_folder_path, "MCEdit 2 Files") +plugins_path = path.join(userdata_path, "plugins") + +os.makedirs(userdata_path) + +shutil.copytree(path.join('src', 'plugins'), plugins_path) +if is_win: sfx_exe_path = path.join("dist", sfx_exe_name) subprocess.check_call( diff --git a/requirements.txt b/requirements.txt index e6d3108..1f7a743 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ -r requirements-mceditlib.txt pyzmq==15.0.0 # v15.4.0 fails to freeze with PyInstaller - see pyinstaller/issues/2147 -pyside>=1.2.0 +pyside>=1.2.0 ; sys.platform != 'darwin' # install this via homebrew, not visible to pip pyopengl ipython qtconsole diff --git a/setup_mcedit2.py b/setup_mcedit2.py index 0320659..4dc1b86 100644 --- a/setup_mcedit2.py +++ b/setup_mcedit2.py @@ -18,13 +18,18 @@ install_requires = [ "numpy", ] +include_dirs = [numpy.get_include()] + mcedit2_ext_modules = cythonize( [ "src/mcedit2/rendering/blockmodels.pyx", "src/mcedit2/rendering/modelmesh.pyx", - ] + ], ) +for m in mcedit2_ext_modules: + m.include_dirs = include_dirs + setup(name='mcedit2', version=version, description="Interactive 3D World Editor for Minecraft Levels", @@ -49,7 +54,7 @@ setup(name='mcedit2', packages=["mcedit2"], package_dir={'': 'src'}, ext_modules=mcedit2_ext_modules, - include_dirs=numpy.get_include(), + include_dirs=include_dirs, include_package_data=True, zip_safe=False, install_requires=install_requires, diff --git a/setup_mceditlib.py b/setup_mceditlib.py index a961003..fa05df2 100644 --- a/setup_mceditlib.py +++ b/setup_mceditlib.py @@ -18,11 +18,16 @@ install_requires = [ "numpy", ] +include_dirs = [numpy.get_include()] + mceditlib_ext_modules = cythonize([ "src/mceditlib/nbt.pyx", "src/mceditlib/relight/with_cython.pyx" ]) +for m in mceditlib_ext_modules: + m.include_dirs = include_dirs + setup(name='mceditlib', version=version, description="Python library for editing Minecraft levels", @@ -45,7 +50,7 @@ setup(name='mceditlib', packages=["mceditlib"], package_dir={'': 'src'}, ext_modules=mceditlib_ext_modules, - include_dirs=numpy.get_include(), + include_dirs=include_dirs, include_package_data=True, zip_safe=False, install_requires=install_requires, diff --git a/src/mcedit2/main.py b/src/mcedit2/main.py index c5e8e70..d1ec8d2 100644 --- a/src/mcedit2/main.py +++ b/src/mcedit2/main.py @@ -32,8 +32,10 @@ def writer(stream): return _write -sys.stdout = codecs.getwriter(sys.stdin.encoding)(sys.stdout, errors='ignore') -sys.stderr = codecs.getwriter(sys.stdin.encoding)(sys.stderr, errors='ignore') +ioencoding = sys.stdin.encoding or 'utf-8' + +sys.stdout = codecs.getwriter(ioencoding)(sys.stdout, errors='ignore') +sys.stderr = codecs.getwriter(ioencoding)(sys.stderr, errors='ignore') sys.stdout.write = writer(sys.stdout) sys.stderr.write = writer(sys.stderr) @@ -109,7 +111,7 @@ def setup_logging(): logging.captureWarnings(True) from mcedit2.util.directories import getUserFilesDirectory mceditUserData = getUserFilesDirectory() - logfilename = os.path.join(mceditUserData, 'mcedit.log') + logfilename = os.path.join(mceditUserData, 'mcedit2.log') abslogfile = os.path.abspath(logfilename) if hasattr(sys, 'frozen'): @@ -117,7 +119,7 @@ def setup_logging(): if sys.platform == "darwin": log_debug("OS X found.") - logfile = os.path.expanduser(b"~/Library/Logs/" + logfilename) + logfile = os.path.expanduser(b"~/Library/Logs/" + 'mcedit2.log') else: logfile = abslogfile else: