summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changes/bug_update-deps2
-rw-r--r--pkg/__init__.py0
-rw-r--r--pkg/requirements.pip10
-rw-r--r--pkg/utils.py84
-rw-r--r--setup.py20
5 files changed, 94 insertions, 22 deletions
diff --git a/changes/bug_update-deps b/changes/bug_update-deps
new file mode 100644
index 0000000..e34ff59
--- /dev/null
+++ b/changes/bug_update-deps
@@ -0,0 +1,2 @@
+ o Requirements in setup are taken fro requirements.pip
+ o Updated requirements.
diff --git a/pkg/__init__.py b/pkg/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/pkg/__init__.py
diff --git a/pkg/requirements.pip b/pkg/requirements.pip
index 141c325..9617d92 100644
--- a/pkg/requirements.pip
+++ b/pkg/requirements.pip
@@ -1,10 +1,8 @@
-jsonschema<=0.8
+jsonschema #<=0.8 -- are we done with this conflict?
pyxdg
-protobuf
+protobuf>=2.4.1
+protobuf.socketrpc
pyopenssl
python-dateutil
-autopep8
-python-gnupg
-PyCrypto
-https://protobuf-socket-rpc.googlecode.com/files/protobuf.socketrpc-1.3.2.tar.gz
+#autopep8 -- ???
diff --git a/pkg/utils.py b/pkg/utils.py
new file mode 100644
index 0000000..deace14
--- /dev/null
+++ b/pkg/utils.py
@@ -0,0 +1,84 @@
+# -*- 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 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/setup.py b/setup.py
index 59700e5..21426ca 100644
--- a/setup.py
+++ b/setup.py
@@ -19,27 +19,15 @@ setup file for leap.common
"""
from setuptools import setup, find_packages
+from pkg import utils
+parsed_reqs = utils.parse_requirements()
+
import versioneer
versioneer.versionfile_source = 'src/leap/common/_version.py'
versioneer.versionfile_build = 'leap/common/_version.py'
versioneer.tag_prefix = '' # tags are like 1.2.0
versioneer.parentdir_prefix = 'leap.common-'
-# XXX parse pkg/requirements.pip
-requirements = [
- "jsonschema",
- "pyxdg",
- 'protobuf>=2.4.1',
- 'protobuf.socketrpc',
- "PyOpenSSL",
- "python-dateutil",
- "PyCrypto",
-]
-
-#dependency_links = [
- #"https://protobuf-socket-rpc.googlecode.com/files/protobuf.socketrpc-1.3.2.tar.gz#egg=protobuf.socketrpc"
-#]
-
tests_requirements = [
'mock',
]
@@ -78,7 +66,7 @@ setup(
#packages=find_packages('src', exclude=['leap.common.tests']),
packages=find_packages('src'),
test_suite='leap.common.tests',
- install_requires=requirements,
+ install_requires=parsed_reqs,
#dependency_links=dependency_links,
tests_require=tests_requirements,
include_package_data=True