diff options
| -rw-r--r-- | client/pkg/requirements-leap.pip | 2 | ||||
| -rw-r--r-- | client/pkg/requirements.pip | 4 | ||||
| -rw-r--r-- | client/pkg/utils.py | 24 | ||||
| -rw-r--r-- | client/setup.py | 19 | ||||
| -rw-r--r-- | common/pkg/requirements-leap.pip | 1 | ||||
| -rw-r--r-- | common/pkg/requirements.pip | 3 | ||||
| -rw-r--r-- | common/pkg/utils.py | 29 | ||||
| -rw-r--r-- | common/setup.py | 18 | ||||
| -rw-r--r-- | server/pkg/requirements-leap.pip | 1 | ||||
| -rw-r--r-- | server/pkg/requirements.pip | 3 | ||||
| -rw-r--r-- | server/pkg/utils.py | 29 | ||||
| -rw-r--r-- | server/setup.py | 18 | 
12 files changed, 121 insertions, 30 deletions
| diff --git a/client/pkg/requirements-leap.pip b/client/pkg/requirements-leap.pip new file mode 100644 index 00000000..c5fbcd5f --- /dev/null +++ b/client/pkg/requirements-leap.pip @@ -0,0 +1,2 @@ +leap.common>=0.4.1 +leap.soledad.common>=0.6.5 diff --git a/client/pkg/requirements.pip b/client/pkg/requirements.pip index 570cd09e..b676b67c 100644 --- a/client/pkg/requirements.pip +++ b/client/pkg/requirements.pip @@ -7,10 +7,6 @@ cchardet  zope.proxy  twisted -# leap deps -- bump me! -leap.common>=0.4.1 -leap.soledad.common>=0.6.5 -  # XXX -- fix me!  # oauth is not strictly needed by us, but we need it until u1db adds it to its  # release as a dep. diff --git a/client/pkg/utils.py b/client/pkg/utils.py index deace14b..e4253549 100644 --- a/client/pkg/utils.py +++ b/client/pkg/utils.py @@ -14,16 +14,30 @@  #  # 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 @@ -58,9 +72,9 @@ def parse_requirements(reqfiles=['requirements.txt',          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 +            # 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)) diff --git a/client/setup.py b/client/setup.py index c3e4936f..5d9955e6 100644 --- a/client/setup.py +++ b/client/setup.py @@ -106,8 +106,25 @@ def get_versions(default={}, verbose=False):  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 +else: +    requirements += utils.parse_requirements( +        reqfiles=["pkg/requirements-leap.pip"]) +  setup(      name='leap.soledad.client',      version=VERSION, @@ -130,6 +147,6 @@ setup(      namespace_packages=["leap", "leap.soledad"],      packages=find_packages('src'),      package_dir={'': 'src'}, -    install_requires=utils.parse_requirements(), +    install_requires=requirements,      extras_require={'signaling': ['leap.common>=0.3.0']},  ) diff --git a/common/pkg/requirements-leap.pip b/common/pkg/requirements-leap.pip new file mode 100644 index 00000000..b311859e --- /dev/null +++ b/common/pkg/requirements-leap.pip @@ -0,0 +1 @@ +leap.common>=0.4.0 diff --git a/common/pkg/requirements.pip b/common/pkg/requirements.pip index b91186e7..287741d2 100644 --- a/common/pkg/requirements.pip +++ b/common/pkg/requirements.pip @@ -1,9 +1,6 @@  simplejson  u1db -# leap deps -- bump me! -leap.common>=0.4.0 -  # XXX -- fix me!  # oauth is not strictly needed by us, but we need it until u1db adds it to its  # release as a dep. diff --git a/common/pkg/utils.py b/common/pkg/utils.py index deace14b..d1680102 100644 --- a/common/pkg/utils.py +++ b/common/pkg/utils.py @@ -14,20 +14,34 @@  #  # 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 +    string list with the lines.      @param reqfiles: requirement files to parse      @type reqfiles: list of str @@ -43,6 +57,9 @@ def parse_requirements(reqfiles=['requirements.txt',      """      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. @@ -58,9 +75,9 @@ def parse_requirements(reqfiles=['requirements.txt',          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 +            # 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)) diff --git a/common/setup.py b/common/setup.py index f4d8bc65..49d94dad 100644 --- a/common/setup.py +++ b/common/setup.py @@ -250,6 +250,22 @@ cmdclass["develop"] = cmd_develop  # 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 +else: +    requirements += utils.parse_requirements( +        reqfiles=["pkg/requirements-leap.pip"]) +  setup(      name='leap.soledad.common',      version=VERSION, @@ -273,7 +289,7 @@ setup(      packages=find_packages('src', exclude=['*.tests', '*.tests.*']),      package_dir={'': 'src'},      test_suite='leap.soledad.common.tests', -    install_requires=utils.parse_requirements(), +    install_requires=requirements,      tests_require=utils.parse_requirements(          reqfiles=['pkg/requirements-testing.pip']),      extras_require={ diff --git a/server/pkg/requirements-leap.pip b/server/pkg/requirements-leap.pip new file mode 100644 index 00000000..aaad340c --- /dev/null +++ b/server/pkg/requirements-leap.pip @@ -0,0 +1 @@ +leap.soledad.common>=0.6.5 diff --git a/server/pkg/requirements.pip b/server/pkg/requirements.pip index 43088222..53f7db57 100644 --- a/server/pkg/requirements.pip +++ b/server/pkg/requirements.pip @@ -6,9 +6,6 @@ routes  PyOpenSSL  twisted -# leap deps -- bump me! -leap.soledad.common>=0.6.5 -  # XXX -- fix me!  # oauth is not strictly needed by us, but we need it until u1db adds it to its  # release as a dep. diff --git a/server/pkg/utils.py b/server/pkg/utils.py index deace14b..d1680102 100644 --- a/server/pkg/utils.py +++ b/server/pkg/utils.py @@ -14,20 +14,34 @@  #  # 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 +    string list with the lines.      @param reqfiles: requirement files to parse      @type reqfiles: list of str @@ -43,6 +57,9 @@ def parse_requirements(reqfiles=['requirements.txt',      """      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. @@ -58,9 +75,9 @@ def parse_requirements(reqfiles=['requirements.txt',          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 +            # 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)) diff --git a/server/setup.py b/server/setup.py index 124ddd32..e7ccb4dc 100644 --- a/server/setup.py +++ b/server/setup.py @@ -116,6 +116,22 @@ 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 +else: +    requirements += utils.parse_requirements( +        reqfiles=["pkg/requirements-leap.pip"]) +  setup(      name='leap.soledad.server',      version=VERSION, @@ -138,6 +154,6 @@ setup(      namespace_packages=["leap", "leap.soledad"],      packages=find_packages('src'),      package_dir={'': 'src'}, -    install_requires=utils.parse_requirements(), +    install_requires=requirements,      data_files=data_files  ) | 
