From 207f1db04c149ae91ca54a934d2b059356f84b81 Mon Sep 17 00:00:00 2001 From: tamarrow Date: Thu, 28 Apr 2016 14:12:09 -0700 Subject: [PATCH] add support for creating a dcos-cli binary on linux + osx (#547) --- cli/Makefile | 6 +++++ cli/bin/test-binary.sh | 11 ++++++++++ cli/binary/Dockerfile.linux-binary | 26 ++++++++++++++++++++++ cli/binary/binary.spec | 35 ++++++++++++++++++++++++++++++ cli/dcoscli/main.py | 3 +++ cli/requirements.txt | 1 + cli/setup.py | 3 +-- 7 files changed, 83 insertions(+), 2 deletions(-) create mode 100755 cli/bin/test-binary.sh create mode 100644 cli/binary/Dockerfile.linux-binary create mode 100644 cli/binary/binary.spec diff --git a/cli/Makefile b/cli/Makefile index 9a4a81a..5a1af59 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -9,6 +9,12 @@ env: test: env bin/test.sh +binary: clean env packages + pyinstaller binary/binary.spec + +test-binary: binary + bin/test-binary.sh + doc: env bin/doc.sh diff --git a/cli/bin/test-binary.sh b/cli/bin/test-binary.sh new file mode 100755 index 0000000..82ae365 --- /dev/null +++ b/cli/bin/test-binary.sh @@ -0,0 +1,11 @@ +#!/bin/bash -e + +BASEDIR=`dirname $0`/.. + +cd $BASEDIR + +PATH=$(pwd)/dist:$PATH +cp tests/data/dcos.toml $DCOS_CONFIG +source env/bin/activate +py.test tests/integrations +deactivate diff --git a/cli/binary/Dockerfile.linux-binary b/cli/binary/Dockerfile.linux-binary new file mode 100644 index 0000000..3941214 --- /dev/null +++ b/cli/binary/Dockerfile.linux-binary @@ -0,0 +1,26 @@ +# This image runs the dcos-cli test suite. + +FROM ubuntu:15.04 +MAINTAINER support@mesosphere.com + +RUN apt-get update && apt-get install -y \ + httpie \ + jq \ + make \ + openssh-client \ + git \ + sudo \ +&& sudo apt-get update --fix-missing \ +&& sudo apt-get install -y python-dev build-essential \ +&& sudo apt-get install -y python-pip python-virtualenv \ +&& pip install pip --upgrade \ +&& pip install pyinstaller + +ADD . /dcos-cli +WORKDIR /dcos-cli +RUN make clean env packages + +WORKDIR /dcos-cli/cli +RUN make clean env packages + +RUN make binary && PATH=/dcos-cli/cli/dist:$PATH diff --git a/cli/binary/binary.spec b/cli/binary/binary.spec new file mode 100644 index 0000000..726e31f --- /dev/null +++ b/cli/binary/binary.spec @@ -0,0 +1,35 @@ +# -*- mode: python -*- + +block_cipher = None + + +a = Analysis(['../dcoscli/main.py'], + pathex=[os.path.dirname(os.getcwd()), + os.getcwd(), + 'env/lib/python2.7/site-packages', + '../env/lib/python2.7/site-packages', + ], + binaries=None, + datas=[('../dcoscli/data/help/*', 'dcoscli/data/help'), + ('../../dcos/data/config-schema/*', 'dcos/data/config-schema'), + ('../dcoscli/data/config-schema/*', 'dcoscli/data/config-schema') + ], + hiddenimports=[], + hookspath=[], + runtime_hooks=[], + excludes=[], + win_no_prefer_redirects=False, + win_private_assemblies=False, + cipher=block_cipher) +pyz = PYZ(a.pure, a.zipped_data, + cipher=block_cipher) +exe = EXE(pyz, + a.scripts, + a.binaries, + a.zipfiles, + a.datas, + name='dcos', + debug=False, + strip=False, + upx=True, + console=True ) diff --git a/cli/dcoscli/main.py b/cli/dcoscli/main.py index 4fbff74..9cbbad8 100644 --- a/cli/dcoscli/main.py +++ b/cli/dcoscli/main.py @@ -129,3 +129,6 @@ def set_ssl_info_env_vars(config): os.environ[constants.DCOS_SSL_VERIFY_ENV] = str( config['core.ssl_verify']) + +if __name__ == "__main__": + main() diff --git a/cli/requirements.txt b/cli/requirements.txt index a292853..bd3e707 100644 --- a/cli/requirements.txt +++ b/cli/requirements.txt @@ -1,4 +1,5 @@ sphinx>=1.3.1, <2.0 tox>=2.2, <3.0 wheel>=0.24.0, <1.0 +pytest>=2.9.1 -e .. # Install the DCOS package diff --git a/cli/setup.py b/cli/setup.py index da31fad..681cc00 100644 --- a/cli/setup.py +++ b/cli/setup.py @@ -71,8 +71,7 @@ setup( 'toml>=0.9, <1.0', 'virtualenv>=13.0, <14.0', 'rollbar>=0.9, <1.0', - 'futures>=3.0, <4.0', - 'oauth2client>=1.4, <2.0', + 'futures>=3.0, <4.0' ], # If there are data files included in your packages that need to be