From e4f510685e38dcea85fad7ffa747eeb4b3195b53 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sun, 28 Dec 2014 17:39:44 +1300 Subject: [PATCH] Generalize binary building, add static resources, add spec files for mitmproxy, mitmdump and mitmweb We're now ready to use the same script (more or less) to build Windows binaries. --- release/mitmdump.spec | 32 +++++++++++++++++++++++ release/mitmproxy.spec | 32 +++++++++++++++++++++++ release/mitmweb.spec | 40 ++++++++++++++++++++++++++++ release/osx-binaries | 59 ++++++++++++++++++++++++------------------ 4 files changed, 138 insertions(+), 25 deletions(-) create mode 100644 release/mitmdump.spec create mode 100644 release/mitmproxy.spec create mode 100644 release/mitmweb.spec diff --git a/release/mitmdump.spec b/release/mitmdump.spec new file mode 100644 index 000000000..a84908f56 --- /dev/null +++ b/release/mitmdump.spec @@ -0,0 +1,32 @@ +# -*- mode: python -*- + +from glob import glob +block_cipher = None + +a = Analysis(['./mitmdump'], + hiddenimports=[], + hookspath=None, + runtime_hooks=None, + excludes=None, + cipher=block_cipher, + ) +a.datas = Tree( + "./libmproxy/onboarding/templates", + prefix="libmproxy/onboarding/templates" +) +a.datas += Tree( + "./libmproxy/onboarding/static", + prefix="libmproxy/onboarding/static" +) +pyz = PYZ(a.pure, + cipher=block_cipher) +exe = EXE(pyz, + a.scripts, + a.binaries, + a.zipfiles, + a.datas, + name='mitmdump', + debug=False, + strip=None, + upx=True, + console=True ) diff --git a/release/mitmproxy.spec b/release/mitmproxy.spec new file mode 100644 index 000000000..546c28991 --- /dev/null +++ b/release/mitmproxy.spec @@ -0,0 +1,32 @@ +# -*- mode: python -*- + +from glob import glob +block_cipher = None + +a = Analysis(['./mitmproxy'], + hiddenimports=[], + hookspath=None, + runtime_hooks=None, + excludes=None, + cipher=block_cipher, + ) +a.datas = Tree( + "./libmproxy/onboarding/templates", + prefix="libmproxy/onboarding/templates" +) +a.datas += Tree( + "./libmproxy/onboarding/static", + prefix="libmproxy/onboarding/static" +) +pyz = PYZ(a.pure, + cipher=block_cipher) +exe = EXE(pyz, + a.scripts, + a.binaries, + a.zipfiles, + a.datas, + name='mitmproxy', + debug=False, + strip=None, + upx=True, + console=True ) diff --git a/release/mitmweb.spec b/release/mitmweb.spec new file mode 100644 index 000000000..4e99da38a --- /dev/null +++ b/release/mitmweb.spec @@ -0,0 +1,40 @@ +# -*- mode: python -*- + +from glob import glob +block_cipher = None + +a = Analysis(['./mitmweb'], + hiddenimports=[], + hookspath=None, + runtime_hooks=None, + excludes=None, + cipher=block_cipher, + ) +a.datas = Tree( + "./libmproxy/onboarding/templates", + prefix="libmproxy/onboarding/templates" +) +a.datas += Tree( + "./libmproxy/onboarding/static", + prefix="libmproxy/onboarding/static" +) +a.datas += Tree( + "./libmproxy/web/templates", + prefix="libmproxy/web/templates" +) +a.datas += Tree( + "./libmproxy/web/static", + prefix="libmproxy/web/static" +) +pyz = PYZ(a.pure, + cipher=block_cipher) +exe = EXE(pyz, + a.scripts, + a.binaries, + a.zipfiles, + a.datas, + name='mitmweb', + debug=False, + strip=None, + upx=True, + console=True ) diff --git a/release/osx-binaries b/release/osx-binaries index 8d37d74b0..6a24b3da3 100755 --- a/release/osx-binaries +++ b/release/osx-binaries @@ -5,36 +5,45 @@ # A few quirks to note, which should be re-checked every release: # - We require the latest development version of PyInstaller. -# - PyInstaller has trouble detecting the zope.interfaces package. This is -# required by Twisted, which for mysterious reasons is required by Urwid. The -# answer is to touch the __init__.py file in the zope directory. On my system: -# touch /Library/Python/2.7/site-packages/zope/__init__.py +# To run, first install netlib and mitmproxy, then run +# +# ./release/osx-binaries +# +# From the top-level mitmproxy directory. -# To run, first install netlib and mitmproxy, then change into the pyinstaller -# directory, and then run this script. +usage () +{ + echo 'Usage : ./release/osx-binaries /path/to/pyinstaller.py' + echo 'Run from the top-level mitmproxy directory' + exit +} -TMPDIR=/tmp -DST=$TMPDIR/osx-mitmproxy -MITMPROXY=~/mitmproxy/mitmproxy -PYINST_CMD="./pyinstaller.py -F --clean" +if [ "$1" = "" ] +then + usage +fi -rm -rf $TMPDIR/osx-mitmproxy* -mkdir -p $DST -rm -rf mitmproxy -rm -rf mitmdump -$PYINST_CMD $MITMPROXY/mitmproxy -$MITMPROXY/mitmproxy --version || exit 1 -cp mitmproxy/dist/mitmproxy $DST +TMPDIR=./tmp +PYINST_CMD=$1" -F --clean" -$PYINST_CMD $MITMPROXY/mitmdump -$MITMPROXY/mitmdump --version || exit 1 -cp mitmdump/dist/mitmdump $DST +rm -f dist/* +rm -rf $TMPDIR -cshape $MITMPROXY/doc-src $DST/doc +$PYINST_CMD ./release/mitmdump.spec +./dist/mitmdump --version || exit 1 + +$PYINST_CMD ./release/mitmproxy.spec +./dist/mitmproxy --version || exit 1 + +$PYINST_CMD ./release/mitmweb.spec +./dist/mitmweb --version || exit 1 + +DST=osx-mitmproxy-`./dist/mitmdump --shortversion 2>&1` +mkdir -p $TMPDIR/$DST +cp ./dist/mitmproxy $TMPDIR/$DST +cp ./dist/mitmdump $TMPDIR/$DST +cshape ./doc-src $TMPDIR/$DST/doc -VBASE=osx-mitmproxy-`$MITMPROXY/mitmdump --shortversion 2>&1` -mv $DST $TMPDIR/$VBASE -TGZDST=$TMPDIR/$VBASE.tgz cd $TMPDIR -tar -czvf $VBASE.tgz $VBASE +tar -czvf $DST.tgz $DST