diff options
Diffstat (limited to 'keymanager/pkg')
| -rw-r--r-- | keymanager/pkg/__init__.py | 0 | ||||
| -rwxr-xr-x | keymanager/pkg/generate_wheels.sh | 13 | ||||
| -rwxr-xr-x | keymanager/pkg/pip_install_requirements.sh | 84 | ||||
| -rw-r--r-- | keymanager/pkg/requirements-latest.pip | 8 | ||||
| -rw-r--r-- | keymanager/pkg/requirements-leap.pip | 1 | ||||
| -rw-r--r-- | keymanager/pkg/requirements-testing.pip | 11 | ||||
| -rw-r--r-- | keymanager/pkg/requirements.pip | 3 | ||||
| -rwxr-xr-x | keymanager/pkg/tools/get_authors.sh | 2 | ||||
| -rwxr-xr-x | keymanager/pkg/tools/with_venvwrapper.sh | 15 | ||||
| -rw-r--r-- | keymanager/pkg/utils.py | 101 | 
10 files changed, 238 insertions, 0 deletions
| diff --git a/keymanager/pkg/__init__.py b/keymanager/pkg/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/keymanager/pkg/__init__.py diff --git a/keymanager/pkg/generate_wheels.sh b/keymanager/pkg/generate_wheels.sh new file mode 100755 index 0000000..a13e2c7 --- /dev/null +++ b/keymanager/pkg/generate_wheels.sh @@ -0,0 +1,13 @@ +#!/bin/sh +# Generate wheels for dependencies +# Use at your own risk. + +if [ "$WHEELHOUSE" = "" ]; then +    WHEELHOUSE=$HOME/wheelhouse +fi + +pip wheel --wheel-dir $WHEELHOUSE pip +pip wheel --wheel-dir $WHEELHOUSE -r pkg/requirements.pip +if [ -f pkg/requirements-testing.pip ]; then +   pip wheel --wheel-dir $WHEELHOUSE -r pkg/requirements-testing.pip +fi diff --git a/keymanager/pkg/pip_install_requirements.sh b/keymanager/pkg/pip_install_requirements.sh new file mode 100755 index 0000000..8ca0956 --- /dev/null +++ b/keymanager/pkg/pip_install_requirements.sh @@ -0,0 +1,84 @@ +#!/bin/bash +# Update pip and install LEAP base/testing requirements. +# For convenience, $insecure_packages are allowed with insecure flags enabled. +# Use at your own risk. +# See $usage for help + +insecure_packages="" +leap_wheelhouse=https://lizard.leap.se/wheels + +show_help() { +    usage="Usage: $0 [--testing] [--use-leap-wheels]\n --testing\t\tInstall dependencies from requirements-testing.pip\n +\t\t\tOtherwise, it will install requirements.pip\n +--use-leap-wheels\tUse wheels from leap.se" +    echo -e $usage + +    exit 1 +} + +process_arguments() { +    testing=false +    while [ "$#" -gt 0 ]; do +	# From http://stackoverflow.com/a/31443098 +	case "$1" in +	    --help) show_help;; +	    --testing) testing=true; shift 1;; +	    --use-leap-wheels) use_leap_wheels=true; shift 1;; + +	    -h) show_help;; +	    -*) echo "unknown option: $1" >&2; exit 1;; +	esac +    done +} + +return_wheelhouse() { +    if $use_leap_wheels ; then +	WHEELHOUSE=$leap_wheelhouse +    elif [ "$WHEELHOUSE" = "" ]; then +	WHEELHOUSE=$HOME/wheelhouse +    fi + +    # Tested with bash and zsh +    if [[ $WHEELHOUSE != http* && ! -d "$WHEELHOUSE" ]]; then +	    mkdir $WHEELHOUSE +    fi + +    echo "$WHEELHOUSE" +} + +return_install_options() { +    wheelhouse=`return_wheelhouse` +    install_options="-U --find-links=$wheelhouse" +    if $use_leap_wheels ; then +	install_options="$install_options --trusted-host lizard.leap.se" +    fi + +    echo $install_options +} + +return_insecure_flags() { +    for insecure_package in $insecure_packages; do +	flags="$flags --allow-external $insecure_package --allow-unverified $insecure_package" +    done + +    echo $flags +} + +return_packages() { +    if $testing ; then +	packages="-r pkg/requirements-testing.pip" +    else +	packages="-r pkg/requirements.pip" +    fi + +    echo $packages +} + +process_arguments $@ +install_options=`return_install_options` +insecure_flags=`return_insecure_flags` +packages=`return_packages` + +pip install -U wheel +pip install $install_options pip +pip install $install_options $insecure_flags $packages diff --git a/keymanager/pkg/requirements-latest.pip b/keymanager/pkg/requirements-latest.pip new file mode 100644 index 0000000..148d42b --- /dev/null +++ b/keymanager/pkg/requirements-latest.pip @@ -0,0 +1,8 @@ +--index-url https://pypi.python.org/simple/ + +--allow-external u1db  --allow-unverified u1db +--allow-external dirspec  --allow-unverified dirspec +-e 'git+https://github.com/pixelated-project/leap_pycommon.git@develop#egg=leap.common' +-e 'git+https://github.com/pixelated-project/soledad.git@develop#egg=leap.soledad.common&subdirectory=common/' +-e 'git+https://github.com/pixelated-project/soledad.git@develop#egg=leap.soledad.client&subdirectory=client/' +-e . diff --git a/keymanager/pkg/requirements-leap.pip b/keymanager/pkg/requirements-leap.pip new file mode 100644 index 0000000..4ba1d81 --- /dev/null +++ b/keymanager/pkg/requirements-leap.pip @@ -0,0 +1 @@ +leap.common>=0.4.3 diff --git a/keymanager/pkg/requirements-testing.pip b/keymanager/pkg/requirements-testing.pip new file mode 100644 index 0000000..addda19 --- /dev/null +++ b/keymanager/pkg/requirements-testing.pip @@ -0,0 +1,11 @@ +mock +setuptools-trial +pep8 + +#----------------------------------------------------------------------------- +#Although it's not a package dependency, tests also depend on having +#soledad client installed. Commenting to avoid versioning problem, you should +#know what you are testing against :) +#----------------------------------------------------------------------------- + +#leap.soledad.client diff --git a/keymanager/pkg/requirements.pip b/keymanager/pkg/requirements.pip new file mode 100644 index 0000000..386b85c --- /dev/null +++ b/keymanager/pkg/requirements.pip @@ -0,0 +1,3 @@ +# if we bump the gnupg version, bump also the sanity check +# in keymanager.__init__ +gnupg>=1.4.0 diff --git a/keymanager/pkg/tools/get_authors.sh b/keymanager/pkg/tools/get_authors.sh new file mode 100755 index 0000000..0169bb1 --- /dev/null +++ b/keymanager/pkg/tools/get_authors.sh @@ -0,0 +1,2 @@ +#!/bin/sh +git log --format='%aN <%aE>' | awk '{arr[$0]++} END{for (i in arr){print arr[i], i;}}' | sort -rn | cut -d' ' -f2- diff --git a/keymanager/pkg/tools/with_venvwrapper.sh b/keymanager/pkg/tools/with_venvwrapper.sh new file mode 100755 index 0000000..2622978 --- /dev/null +++ b/keymanager/pkg/tools/with_venvwrapper.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +#Wraps a command in a virtualenwrapper passed as first argument. +#Example: +#with_virtualenvwrapper.sh leap-bitmask ./run_tests.sh + +wd=`pwd` +source `which virtualenvwrapper.sh` +echo "Activating virtualenv " $1 +echo "------------------------------------" +workon $1 +cd $wd +echo "running version: " `pyver leap.keymanager` +echo "soledad version: " `pyver leap.soledad.common` +$2 $3 $4 $5 diff --git a/keymanager/pkg/utils.py b/keymanager/pkg/utils.py new file mode 100644 index 0000000..9c9211b --- /dev/null +++ b/keymanager/pkg/utils.py @@ -0,0 +1,101 @@ +# -*- coding: utf-8 -*- +# utils.py +# Copyright (C) 2013 LEAP +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program.  If not, see <http://www.gnu.org/licenses/>. +""" +Utils to help in the setup process +""" +import os +import re +import sys + + +def is_develop_mode(): +    """ +    Returns True if we're calling the setup script using the argument for +    setuptools development mode. + +    This avoids messing up with dependency pinning and order, the +    responsibility of installing the leap dependencies is left to the +    developer. +    """ +    args = sys.argv +    devflags = "setup.py", "develop" +    if (args[0], args[1]) == devflags: +        return True +    return False + + +def get_reqs_from_files(reqfiles): +    """ +    Returns the contents of the top requirement file listed as a +    string list with the lines. + +    @param reqfiles: requirement files to parse +    @type reqfiles: list of str +    """ +    for reqfile in reqfiles: +        if os.path.isfile(reqfile): +            return open(reqfile, 'r').read().split('\n') + + +def parse_requirements(reqfiles=['requirements.txt', +                                 'requirements.pip', +                                 'pkg/requirements.pip']): +    """ +    Parses the requirement files provided. + +    The passed reqfiles list is a list of possible locations to try, the +    function will return the contents of the first path found. + +    Checks the value of LEAP_VENV_SKIP_PYSIDE to see if it should +    return PySide as a dep or not. Don't set, or set to 0 if you want +    to install it through pip. + +    @param reqfiles: requirement files to parse +    @type reqfiles: list of str +    """ + +    requirements = [] +    skip_pyside = os.getenv("LEAP_VENV_SKIP_PYSIDE", "0") != "0" +    for line in get_reqs_from_files(reqfiles): +        # -e git://foo.bar/baz/master#egg=foobar +        if re.match(r'\s*-e\s+', line): +            pass +            # do not try to do anything with externals on vcs +            # requirements.append(re.sub(r'\s*-e\s+.*#egg=(.*)$', r'\1', +            #                     line)) +            # http://foo.bar/baz/foobar/zipball/master#egg=foobar +        elif re.match(r'\s*https?:', line): +            requirements.append(re.sub(r'\s*https?:.*#egg=(.*)$', r'\1', +                                line)) +        # -f lines are for index locations, and don't get used here +        elif re.match(r'\s*-f\s+', line): +            pass + +        # argparse is part of the standard library starting with 2.7 +        # adding it to the requirements list screws distro installs +        elif line == 'argparse' and sys.version_info >= (2, 7): +            pass +        elif line == 'PySide' and skip_pyside: +            pass +        # do not include comments +        elif line.lstrip().startswith('#'): +            pass +        else: +            if line != '': +                requirements.append(line) + +    return requirements | 
