From 4ad663b935fa1845d426dde99a8272942b620e11 Mon Sep 17 00:00:00 2001 From: kali Date: Wed, 2 Jan 2013 18:06:13 +0900 Subject: initial OSX packaging --- .gitignore | 3 +++ data/images/leap-client.icns | Bin 0 -> 27456 bytes pkg/osx/Info.plist | 22 ++++++++++++++++++++++ pkg/osx/Makefile | 17 +++++++++++++++++ pkg/osx/README.rst | 10 ++++++++++ pkg/osx/leap-client.spec | 32 ++++++++++++++++++++++++++++++++ pkg/postmkvenv.sh | 17 ++++++++++++++++- src/leap/util/leap_argparse.py | 2 +- 8 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 data/images/leap-client.icns create mode 100644 pkg/osx/Info.plist create mode 100644 pkg/osx/Makefile create mode 100644 pkg/osx/README.rst create mode 100644 pkg/osx/leap-client.spec diff --git a/.gitignore b/.gitignore index 276f782a..bbe004c4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ *.swp *.swo *.pyc +*.log .* !.coveragerc !.tx @@ -21,4 +22,6 @@ src/leap_client.egg-info src/leap/_branding.py src/leap/certs/*.pem src/*.egg-info +pkg/osx/dist +pkg/osx/build MANIFEST diff --git a/data/images/leap-client.icns b/data/images/leap-client.icns new file mode 100644 index 00000000..d5d52cdc Binary files /dev/null and b/data/images/leap-client.icns differ diff --git a/pkg/osx/Info.plist b/pkg/osx/Info.plist new file mode 100644 index 00000000..e90d920a --- /dev/null +++ b/pkg/osx/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDisplayName + leap-client + CFBundleExecutable + MacOS/app + CFBundleIconFile + icon-windowed.icns + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + leap-client + CFBundlePackageType + APPL + CFBundleShortVersionString + 1 + LSBackgroundOnly + + + diff --git a/pkg/osx/Makefile b/pkg/osx/Makefile new file mode 100644 index 00000000..54fbf14a --- /dev/null +++ b/pkg/osx/Makefile @@ -0,0 +1,17 @@ +pkg : dist dmg + +dist : + ~/pyinstaller/pyinstaller.py -w -s leap-client.spec + cp -r /opt/local/Library/Frameworks/QtGui.framework/Versions/4/Resources/qt_menu.nib "dist/LEAP Client.app/Contents/Resources" + cp Info.plist "dist/LEAP Client.app/Contents/Info.plist" + cp ../../data/images/leap-client.icns "dist/LEAP Client.app/Contents/Resources/icon-windowed.icns" + + +dmg : + #TODO: remove if already present + #rm dist/LEAPClient.dmg + hdiutil create -format UDBZ -srcfolder "dist/LEAP Client.app/" "dist/LEAP Client.dmg" + +clean : + rm -rf dist/ build/ + diff --git a/pkg/osx/README.rst b/pkg/osx/README.rst new file mode 100644 index 00000000..dfd8fc16 --- /dev/null +++ b/pkg/osx/README.rst @@ -0,0 +1,10 @@ +freezing the app +---------------- +just type, from this dir:: + + $ make dist + $ make dmg + +For doing both things:: + + $ make pkg diff --git a/pkg/osx/leap-client.spec b/pkg/osx/leap-client.spec new file mode 100644 index 00000000..4a34bb7c --- /dev/null +++ b/pkg/osx/leap-client.spec @@ -0,0 +1,32 @@ +# -*- mode: python -*- +a = Analysis(['../../src/leap/app.py'], + pathex=[ + '../../src/leap', + '/Users/kaliy/leap/leap-client-testbuild/src/leap-client/pkg/osx'], + hiddenimports=['atexit'], + hookspath=None) +pyz = PYZ(a.pure) +exe = EXE(pyz, + a.scripts, + exclude_binaries=1, + name=os.path.join('build/pyi.darwin/leap-client', 'app'), + debug=False, + strip=True, + upx=True, + console=False) +coll = COLLECT(exe, + a.binaries, + a.zipfiles, + a.datas, + strip=True, + upx=True, + name=os.path.join('dist', 'app')) +app = BUNDLE(coll, + name=os.path.join('dist', 'leap-client.app')) + +import sys +if sys.platform.startswith("darwin"): + app = BUNDLE(coll, + name=os.path.join('dist', 'LEAP Client.app'), + appname='LEAP Client', + version=1) diff --git a/pkg/postmkvenv.sh b/pkg/postmkvenv.sh index efdbc2fb..593b11da 100755 --- a/pkg/postmkvenv.sh +++ b/pkg/postmkvenv.sh @@ -8,6 +8,14 @@ # script fails in ubuntu, with path: /usr/lib/pymodules/python2.7/PyQt4 # use import PyQt4; PyQt4.__path__ instead +platform='unknown' +unamestr=`uname` +if [[ "$unamestr" == 'Linux' ]]; then + platform='linux' +elif [[ "$unamestr" == 'Darwin' ]]; then + platform='darwin' +fi + LIBS=( PyQt4 sip.so ) PYTHON_VERSION=python$(python -c "import sys; print (str(sys.version_info[0])+'.'+str(sys.version_info[1]))") @@ -15,7 +23,14 @@ VAR=( $(which -a $PYTHON_VERSION) ) GET_PYTHON_LIB_CMD="from distutils.sysconfig import get_python_lib; print (get_python_lib())" LIB_VIRTUALENV_PATH=$(python -c "$GET_PYTHON_LIB_CMD") -LIB_SYSTEM_PATH=$(${VAR[-1]} -c "$GET_PYTHON_LIB_CMD") + +if [[ $platform == 'linux' ]]; then + LIB_SYSTEM_PATH=$(${VAR[-1]} -c "$GET_PYTHON_LIB_CMD") +elif [[ $platform == 'darwin' ]]; then + LIB_SYSTEM_PATH=$(/opt/local/bin/python2.6 -c "$GET_PYTHON_LIB_CMD") +else + echo "unsupported platform; not doing symlinks" +fi for LIB in ${LIBS[@]} do diff --git a/src/leap/util/leap_argparse.py b/src/leap/util/leap_argparse.py index 2f996a31..5b0775cc 100644 --- a/src/leap/util/leap_argparse.py +++ b/src/leap/util/leap_argparse.py @@ -37,5 +37,5 @@ Launches main LEAP Client""", epilog=epilog) def init_leapc_args(): parser = build_parser() - opts = parser.parse_args() + opts, unknown = parser.parse_known_args() return parser, opts -- cgit v1.2.3