summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKali Kaneko <kali@futeisha.org>2015-07-22 16:34:45 -0400
committerKali Kaneko <kali@futeisha.org>2015-07-22 16:34:45 -0400
commit3215a470f701962fadfd26a996e8eef6f21444b5 (patch)
tree3188437ce6d4b95905c6c86a34203a4b72397977
parentf3261e937390fa703392d1234d47c00647285d42 (diff)
[pkg] separate leap requirements
this is part of a process to make the setup of the development mode less troublesome. from now on, setting up a virtualenv in pure development mode will be as easy as telling pip to just install the external dependencies:: pip install -r pkg/requirements.pip and traversing all the leap repos for the needed leap dependencies doing:: python setup.py develop - Related: #7288
-rw-r--r--pkg/requirements-leap.pip3
-rw-r--r--pkg/requirements.pip4
-rw-r--r--pkg/utils/reqs.py16
-rw-r--r--setup.py24
4 files changed, 40 insertions, 7 deletions
diff --git a/pkg/requirements-leap.pip b/pkg/requirements-leap.pip
new file mode 100644
index 0000000..482d1e2
--- /dev/null
+++ b/pkg/requirements-leap.pip
@@ -0,0 +1,3 @@
+leap.common>=0.3.5
+leap.soledad.common>=0.4.5
+leap.keymanager>=0.3.4
diff --git a/pkg/requirements.pip b/pkg/requirements.pip
index ed3ad0d..328b1c3 100644
--- a/pkg/requirements.pip
+++ b/pkg/requirements.pip
@@ -7,7 +7,3 @@ paisley>=0.3.1
# in soledad-common, but we need to declare here
# for the time being.
couchdb
-
-leap.common>=0.3.5
-leap.soledad.common>=0.4.5
-leap.keymanager>=0.3.4
diff --git a/pkg/utils/reqs.py b/pkg/utils/reqs.py
index 5e2324f..f10051e 100644
--- a/pkg/utils/reqs.py
+++ b/pkg/utils/reqs.py
@@ -22,6 +22,22 @@ 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
diff --git a/setup.py b/setup.py
index 3e89eec..50c7dc6 100644
--- a/setup.py
+++ b/setup.py
@@ -27,7 +27,7 @@ versioneer.versionfile_build = 'leap/mx/_version.py'
versioneer.tag_prefix = '' # tags are like 1.2.0
versioneer.parentdir_prefix = 'leap.mx-'
-from pkg.utils.reqs import parse_requirements
+from pkg.utils.reqs import parse_requirements, is_develop_mode
trove_classifiers = [
'Development Status :: 3 - Alpha',
@@ -114,6 +114,24 @@ else:
# placed by distutils, using whatever interpreter is
# available.
data_files = [("/usr/local/bin/", ["pkg/mx.tac"])]
+
+
+requirements = parse_requirements()
+
+if 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
+else:
+ requirements += parse_requirements(
+ reqfiles=["pkg/requirements-leap.pip"])
+
setup(
name='leap.mx',
version=VERSION,
@@ -134,8 +152,8 @@ setup(
namespace_packages=["leap"],
package_dir={'': 'src'},
packages=find_packages('src'),
- #test_suite='leap.mx.tests',
- install_requires=parse_requirements(),
+ # test_suite='leap.mx.tests',
+ install_requires=requirements,
classifiers=trove_classifiers,
data_files=data_files
)