From 3afea21ccea732a3045e0f2db3873aa469478bdc Mon Sep 17 00:00:00 2001 From: Joey Payne Date: Thu, 15 Jan 2015 11:06:58 +1300 Subject: [PATCH] Added new build scripts for mac. --- build_mac.bash | 51 +++++++++------------------------------------ build_mac_setup.py | 22 +++++++++++++++++++ command_line.py | 6 +----- icon.icns | Bin 0 -> 42695 bytes 4 files changed, 33 insertions(+), 46 deletions(-) create mode 100644 build_mac_setup.py create mode 100644 icon.icns diff --git a/build_mac.bash b/build_mac.bash index f81b717..8fe282e 100755 --- a/build_mac.bash +++ b/build_mac.bash @@ -1,44 +1,13 @@ -rm -rf freeze - -cxfreeze main.py --target-dir=freeze --include-modules=PySide.QtGui,PySide,PySide.QtNetwork,PySide.QtCore,PIL -chmod 755 freeze/* -cp -rf freeze/* Web2Executable.app/Contents/MacOS/ - -install_name_tool -change /usr/local/Cellar/pyside/1.2.1/lib/libpyside-python2.7.1.2.dylib @executable_path/libpyside-python2.7.1.2.dylib Web2Executable.app/Contents/MacOS/PySide.QtCore.so -install_name_tool -change /usr/local/lib/libshiboken-python2.7.1.2.1.dylib @executable_path/libshiboken-python2.7.1.2.1.dylib Web2Executable.app/Contents/MacOS/PySide.QtCore.so -install_name_tool -change /usr/local/lib/QtCore.framework/Versions/4/QtCore @executable_path/QtCore Web2Executable.app/Contents/MacOS/PySide.QtCore.so - -install_name_tool -change /usr/local/Cellar/pyside/1.2.1/lib/libpyside-python2.7.1.2.dylib @executable_path/libpyside-python2.7.1.2.dylib Web2Executable.app/Contents/MacOS/PySide.QtGui.so -install_name_tool -change /usr/local/lib/libshiboken-python2.7.1.2.1.dylib @executable_path/libshiboken-python2.7.1.2.1.dylib Web2Executable.app/Contents/MacOS/PySide.QtGui.so -install_name_tool -change /usr/local/lib/QtCore.framework/Versions/4/QtCore @executable_path/QtCore Web2Executable.app/Contents/MacOS/PySide.QtGui.so -install_name_tool -change /usr/local/lib/QtGui.framework/Versions/4/QtGui @executable_path/QtGui Web2Executable.app/Contents/MacOS/PySide.QtGui.so - -install_name_tool -change /usr/local/Cellar/pyside/1.2.1/lib/libpyside-python2.7.1.2.dylib @executable_path/libpyside-python2.7.1.2.dylib Web2Executable.app/Contents/MacOS/PySide.QtNetwork.so -install_name_tool -change /usr/local/lib/libshiboken-python2.7.1.2.1.dylib @executable_path/libshiboken-python2.7.1.2.1.dylib Web2Executable.app/Contents/MacOS/PySide.QtNetwork.so -install_name_tool -change /usr/local/lib/QtCore.framework/Versions/4/QtCore @executable_path/QtCore Web2Executable.app/Contents/MacOS/PySide.QtNetwork.so -install_name_tool -change /usr/local/lib/QtNetwork.framework/Versions/4/QtNetwork @executable_path/QtNetwork Web2Executable.app/Contents/MacOS/PySide.QtNetwork.so - -install_name_tool -change /usr/local/lib/libpyside-python2.7.1.2.1.dylib @executable_path/libpyside-python2.7.1.2.1.dylib Web2Executable.app/Contents/MacOS/libpyside-python2.7.1.2.dylib -install_name_tool -change /usr/local/lib/libshiboken-python2.7.1.2.1.dylib @executable_path/libshiboken-python2.7.1.2.1.dylib Web2Executable.app/Contents/MacOS/libpyside-python2.7.1.2.dylib -install_name_tool -change /usr/local/lib/QtCore.framework/Versions/4/QtCore @executable_path/QtCore Web2Executable.app/Contents/MacOS/libpyside-python2.7.1.2.dylib - -install_name_tool -change /usr/local/lib/libpyside-python2.7.1.2.1.dylib @executable_path/libpyside-python2.7.1.2.1.dylib Web2Executable.app/Contents/MacOS/libpyside-python2.7.1.2.1.dylib -install_name_tool -change /usr/local/lib/libshiboken-python2.7.1.2.1.dylib @executable_path/libshiboken-python2.7.1.2.1.dylib Web2Executable.app/Contents/MacOS/libpyside-python2.7.1.2.1.dylib -install_name_tool -change /usr/local/lib/QtCore.framework/Versions/4/QtCore @executable_path/QtCore Web2Executable.app/Contents/MacOS/libpyside-python2.7.1.2.1.dylib - - -install_name_tool -change /usr/local/lib/QtGui.framework/Versions/4/QtGui @executable_path/QtGui Web2Executable.app/Contents/MacOS/QtGui -install_name_tool -change /usr/local/Cellar/qt/4.8.5/lib/QtCore.framework/Versions/4/QtCore @executable_path/QtCore Web2Executable.app/Contents/MacOS/QtGui - - -install_name_tool -change /usr/local/lib/QtCore.framework/Versions/4/QtCore @executable_path/QtCore Web2Executable.app/Contents/MacOS/QtCore - - -install_name_tool -change /usr/local/lib/QtNetwork.framework/Versions/4/QtNetwork @executable_path/QtNetwork Web2Executable.app/Contents/MacOS/QtNetwork -install_name_tool -change /usr/local/Cellar/qt/4.8.5/lib/QtCore.framework/Versions/4/QtCore @executable_path/QtCore Web2Executable.app/Contents/MacOS/QtNetwork - -install_name_tool -change /usr/local/lib/libjpeg.8.dylib @executable_path/libjpeg.8.dylib Web2Executable.app/Contents/MacOS/PIL._imaging.so - rm -rf command_line_builds/files pyinstaller --hidden-import configobj --distpath command_line_builds --onefile -n web2exe-mac command_line.py cp -rf files command_line_builds/files/ + +rm -rf build dist Web2Executable.app + +sudo python build_mac_setup.py py2app --iconfile icon.icns + +sudo chown -R joey dist/main.app +sudo chown -R joey dist/ build/ +mv dist/main.app Web2Executable.app + +rm -rf build dist diff --git a/build_mac_setup.py b/build_mac_setup.py new file mode 100644 index 0000000..77ca266 --- /dev/null +++ b/build_mac_setup.py @@ -0,0 +1,22 @@ +""" +This is a setup.py script generated by py2applet + +Usage: + python setup.py py2app +""" + +from setuptools import setup + +APP = ['main.py'] +DATA_FILES = ['files'] +OPTIONS = { + 'iconfile': 'icon.icns', + 'includes': ['PySide.QtCore', 'PySide.QtGui', 'PySide.QtNetwork', 'configobj'], + } + +setup( + app=APP, + data_files=DATA_FILES, + options={'py2app': OPTIONS}, + setup_requires=['py2app'], +) diff --git a/command_line.py b/command_line.py index e16dd59..bb284d9 100644 --- a/command_line.py +++ b/command_line.py @@ -32,11 +32,7 @@ from configobj import ConfigObj inside_packed_exe = getattr(sys, 'frozen', '') -if inside_packed_exe: - CWD = os.path.dirname(sys.executable) - os.chdir(CWD) -else: - CWD = os.getcwd() +CWD = os.getcwd() TEMP_DIR = get_temp_dir() DEFAULT_DOWNLOAD_PATH = os.path.join(CWD, diff --git a/icon.icns b/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..dea37dc5d3f045a043234d280efeda5f0171d94d GIT binary patch literal 42695 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 literal 0 HcmV?d00001