summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2017-03-31 17:05:13 +0200
committerKali Kaneko <kali@leap.se>2017-04-10 18:27:46 +0200
commit8a1d160f9e753b8a201bca964b44df3832d3bee8 (patch)
tree4b00ea614cfb4ed81196f7252ecf225f007819a8
parent93fa3fe830b188f3a135fd85ac593bde2c755c2e (diff)
[pkg] do not pass weird information to install_requires
this commit deliberately *duplicates* the dependency information between the setup.py and requirements.pip. The rationale behind it is that one of them is the generic dependency information, to be passed to system helpers in order to package it. The requirements.pip has any pinning information that we want to impose during development, and it behaves as a well-known set. Read https://caremad.io/posts/2013/07/setup-vs-requirement/ for more explanations. - Resolves: #8830
-rw-r--r--client/pkg/utils.py98
-rw-r--r--client/setup.py29
2 files changed, 11 insertions, 116 deletions
diff --git a/client/pkg/utils.py b/client/pkg/utils.py
deleted file mode 100644
index e4253549..00000000
--- a/client/pkg/utils.py
+++ /dev/null
@@ -1,98 +0,0 @@
-# -*- 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.
-
- 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
diff --git a/client/setup.py b/client/setup.py
index 235e731c..1954ba17 100644
--- a/client/setup.py
+++ b/client/setup.py
@@ -18,14 +18,12 @@
setup file for leap.soledad.client
"""
import re
+import sys
from setuptools import setup
from setuptools import find_packages
from setuptools import Command
import versioneer
-from pkg import utils
-
-
trove_classifiers = (
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
@@ -110,21 +108,16 @@ cmdclass["freeze_debianver"] = freeze_debianver
# XXX add ref to docs
-requirements = utils.parse_requirements()
-
-if utils.is_develop_mode():
- print
- print("[WARNING] Skipping leap-specific dependencies "
- "because development mode is detected.")
- print("[WARNING] You can install "
- "the latest published versions with "
- "'pip install -r pkg/requirements-leap.pip'")
- print("[WARNING] Or you can instead do 'python setup.py develop' "
- "from the parent folder of each one of them.")
- print
+install_requires = [
+ 'twisted', 'scrypt', 'zope.proxy', 'cryptography',
+ 'leap.common', 'leap.soledad.common', 'treq']
+
+# needed until kali merges the py3 fork back into the main pysqlcipher repo
+if sys.version_info >= (3, 0):
+ install_requires += ['pysqlcipher3']
else:
- requirements += utils.parse_requirements(
- reqfiles=["pkg/requirements-leap.pip"])
+ install_requires += ['pysqlcipher']
+
setup(
name='leap.soledad.client',
@@ -148,6 +141,6 @@ setup(
namespace_packages=["leap", "leap.soledad"],
packages=find_packages('src'),
package_dir={'': 'src'},
- install_requires=requirements,
+ install_requires=install_requires,
extras_require={'signaling': ['leap.common>=0.3.0']},
)