]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blobdiff - setup.py
Makefile: re-enable tarball uploads for "master" branch
[tahoe-lafs/tahoe-lafs.git] / setup.py
index e690dc7b8e6bed37bf0bcafeead503e3b015a823..3501777080d425f7df57cb81e4b784361e0cf557 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -1,15 +1,16 @@
 #! /usr/bin/env python
 # -*- coding: utf-8 -*-
+import sys; assert sys.version_info < (3,), ur"Tahoe-LAFS does not run under Python 3. Please use a version of Python between 2.6 and 2.7.x inclusive."
 
 # Tahoe-LAFS -- secure, distributed storage grid
 #
-# Copyright © 2008-2011 Allmydata, Inc.
+# Copyright © 2006-2012 The Tahoe-LAFS Software Foundation
 #
 # This file is part of Tahoe-LAFS.
 #
 # See the docs/about.rst file for licensing information.
 
-import glob, os, stat, subprocess, sys, re
+import glob, os, stat, subprocess, re
 
 ##### sys.path management
 
@@ -48,7 +49,7 @@ except EnvironmentError:
     open(APPNAMEFILE, "w").write(APPNAMEFILESTR)
 else:
     if curappnamefilestr.strip() != APPNAMEFILESTR:
-        print "Error -- this setup.py file is configured with the 'application name' to be '%s', but there is already a file in place in '%s' which contains the contents '%s'.  If the file is wrong, please remove it and setup.py will regenerate it and write '%s' into it." % (APPNAME, APPNAMEFILE, curappnamefilestr, APPNAMEFILESTR)
+        print("Error -- this setup.py file is configured with the 'application name' to be '%s', but there is already a file in place in '%s' which contains the contents '%s'.  If the file is wrong, please remove it and setup.py will regenerate it and write '%s' into it." % (APPNAME, APPNAMEFILE, curappnamefilestr, APPNAMEFILESTR))
         sys.exit(-1)
 
 # setuptools/zetuptoolz looks in __main__.__requires__ for a list of
@@ -73,11 +74,9 @@ egg = os.path.realpath(glob.glob('setuptools-*.egg')[0])
 sys.path.insert(0, egg)
 egg = os.path.realpath(glob.glob('darcsver-*.egg')[0])
 sys.path.insert(0, egg)
-egg = os.path.realpath(glob.glob('setuptools_darcs-*.egg')[0])
-sys.path.insert(0, egg)
 import setuptools; setuptools.bootstrap_install_from = egg
 
-from setuptools import find_packages, setup
+from setuptools import setup
 from setuptools.command import sdist
 from setuptools import Command
 
@@ -150,25 +149,6 @@ setup_requires.append('darcsver >= 1.7.2')
 # https://bugs.launchpad.net/nevow/+bug/812537 has been fixed.
 setup_requires += [req for req in install_requires if req.startswith('Twisted') or req.startswith('zope.interface')]
 
-# setuptools_darcs is required to produce complete distributions (such
-# as with "sdist" or "bdist_egg"), unless there is a
-# src/allmydata_tahoe.egg-info/SOURCE.txt file present which contains
-# a complete list of files that should be included.
-
-# http://pypi.python.org/pypi/setuptools_darcs
-
-# However, requiring it runs afoul of a bug in Distribute, which was
-# shipped in Ubuntu Lucid, so for now you have to manually install it
-# before building sdists or eggs:
-# http://bitbucket.org/tarek/distribute/issue/55/revision-control-plugin-automatically-installed-as-a-build-dependency-is-not-present-when-another-build-dependency-is-being
-
-# Note that we explicitly inject setuptools_darcs at the beginning of
-# this setup.py file, so it is still in effect when building dists
-# using this setup.py file even when the following requirement is
-# disabled.
-if False:
-    setup_requires.append('setuptools_darcs >= 1.1.0')
-
 # trialcoverage is required if you want the "trial" unit test runner to have a
 # "--reporter=bwverbose-coverage" option which produces code-coverage results.
 # The required version is 0.3.3, because that is the latest version that only
@@ -187,7 +167,9 @@ tests_require=[]
 class Trial(Command):
     description = "run trial (use 'bin%stahoe debug trial' for the full set of trial options)" % (os.sep,)
     # This is just a subset of the most useful options, for compatibility.
-    user_options = [ ("rterrors", "e", "Print out tracebacks as soon as they occur."),
+    user_options = [ ("no-rterrors", None, "Don't print out tracebacks as they occur."),
+                     ("rterrors", "e", "Print out tracebacks as they occur (default, so ignored)."),
+                     ("until-failure", "u", "Repeat a test (specified by -s) until it fails."),
                      ("reporter=", None, "The reporter to use for this test run."),
                      ("suite=", "s", "Specify the test suite."),
                      ("quiet", None, "Don't display version numbers and paths of Tahoe dependencies."),
@@ -195,6 +177,8 @@ class Trial(Command):
 
     def initialize_options(self):
         self.rterrors = False
+        self.no_rterrors = False
+        self.until_failure = False
         self.reporter = None
         self.suite = "allmydata"
         self.quiet = False
@@ -207,8 +191,12 @@ class Trial(Command):
         if not self.quiet:
             args.append('--version-and-path')
         args += ['debug', 'trial']
-        if self.rterrors:
+        if self.rterrors and self.no_rterrors:
+            raise AssertionError("--rterrors and --no-rterrors conflict.")
+        if not self.no_rterrors:
             args.append('--rterrors')
+        if self.until_failure:
+            args.append('--until-failure')
         if self.reporter:
             args.append('--reporter=' + self.reporter)
         if self.suite:
@@ -291,15 +279,15 @@ def run_command(args, cwd=None, verbose=False):
     try:
         # remember shell=False, so use git.cmd on windows, not just git
         p = subprocess.Popen(args, stdout=subprocess.PIPE, cwd=cwd)
-    except EnvironmentError, e:
+    except EnvironmentError as e:  # if this gives a SyntaxError, note that Tahoe-LAFS requires Python 2.6+
         if verbose:
-            print "unable to run %s" % args[0]
-            print e
+            print("unable to run %s" % args[0])
+            print(e)
         return None
     stdout = p.communicate()[0].strip()
     if p.returncode != 0:
         if verbose:
-            print "unable to run %s (error)" % args[0]
+            print("unable to run %s (error)" % args[0])
         return None
     return stdout
 
@@ -338,7 +326,7 @@ def versions_from_git(tag_prefix, verbose=False):
         return {}
     if not stdout.startswith(tag_prefix):
         if verbose:
-            print "tag '%s' doesn't start with prefix '%s'" % (stdout, tag_prefix)
+            print("tag '%s' doesn't start with prefix '%s'" % (stdout, tag_prefix))
         return {}
     version = stdout[len(tag_prefix):]
     pieces = version.split("-")
@@ -371,7 +359,7 @@ class UpdateVersion(Command):
         elif os.path.isdir(os.path.join(basedir, ".git")):
             verstr = self.try_from_git(target)
         else:
-            print "no version-control data found, leaving _version.py alone"
+            print("no version-control data found, leaving _version.py alone")
             return
         if verstr:
             self.distribution.metadata.version = verstr
@@ -396,7 +384,7 @@ class UpdateVersion(Command):
                           "normalized": versions["normalized"],
                           "full": versions["full"] })
                 f.close()
-                print "git-version: wrote '%s' into '%s'" % (versions["version"], fn)
+                print("git-version: wrote '%s' into '%s'" % (versions["version"], fn))
         return versions.get("normalized", None)
 
 
@@ -467,12 +455,27 @@ setup(name=APPNAME,
                 "sdist": MySdist,
                 },
       package_dir = {'':'src'},
-      packages=find_packages("src"),
+      packages=['allmydata',
+                'allmydata.frontends',
+                'allmydata.immutable',
+                'allmydata.immutable.downloader',
+                'allmydata.introducer',
+                'allmydata.mutable',
+                'allmydata.scripts',
+                'allmydata.storage',
+                'allmydata.test',
+                'allmydata.util',
+                'allmydata.web',
+                'allmydata.web.static',
+                'allmydata.windows',
+                'buildtest'],
       classifiers=trove_classifiers,
       test_suite="allmydata.test",
       install_requires=install_requires,
       tests_require=tests_require,
-      include_package_data=True,
+      package_data={"allmydata.web": ["*.xhtml"],
+                    "allmydata.web.static": ["*.js", "*.png", "*.css"],
+                    },
       setup_requires=setup_requires,
       entry_points = { 'console_scripts': [ 'tahoe = allmydata.scripts.runner:run' ] },
       zip_safe=False, # We prefer unzipped for easier access.