X-Git-Url: https://git.rkrishnan.org/?a=blobdiff_plain;f=setup.py;h=63697e004a4c7113b18d6733d8a7973719e97c72;hb=HEAD;hp=11b2461467235520e19a11016941321619ac4b8e;hpb=d29e956a0f09888951f61c1dbae7da2a4e752879;p=tahoe-lafs%2Ftahoe-lafs.git diff --git a/setup.py b/setup.py index 11b24614..63697e00 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ #! /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." +import sys; assert sys.version_info < (3,), ur"Tahoe-LAFS does not run under Python 3. Please use Python 2.7.x." # Tahoe-LAFS -- secure, distributed storage grid # @@ -10,7 +10,7 @@ import sys; assert sys.version_info < (3,), ur"Tahoe-LAFS does not run under Pyt # # See the docs/about.rst file for licensing information. -import glob, os, stat, subprocess, re +import os, stat, subprocess, re ##### sys.path management @@ -37,7 +37,8 @@ def read_version_py(infname): if mo: return mo.group(1) -version = read_version_py("src/allmydata/_version.py") +VERSION_PY_FILENAME = 'src/allmydata/_version.py' +version = read_version_py(VERSION_PY_FILENAME) APPNAME='allmydata-tahoe' APPNAMEFILE = os.path.join('src', 'allmydata', '_appname.py') @@ -63,6 +64,7 @@ else: adglobals = {} execfile('src/allmydata/_auto_deps.py', adglobals) install_requires = adglobals['install_requires'] +setup_requires = adglobals['setup_requires'] if len(sys.argv) > 1 and sys.argv[1] == '--fakedependency': del sys.argv[1] @@ -70,7 +72,7 @@ if len(sys.argv) > 1 and sys.argv[1] == '--fakedependency': __requires__ = install_requires[:] -egg = os.path.realpath(glob.glob('setuptools-*.egg')[0]) +egg = os.path.realpath('setuptools-0.6c16dev6.egg') sys.path.insert(0, egg) import setuptools; setuptools.bootstrap_install_from = egg @@ -99,7 +101,6 @@ trove_classifiers=[ "Programming Language :: C", "Programming Language :: Python", "Programming Language :: Python :: 2", - "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Topic :: Utilities", "Topic :: System :: Systems Administration", @@ -112,23 +113,6 @@ trove_classifiers=[ ] -setup_requires = [] - -# Nevow imports itself when building, which causes Twisted and zope.interface -# to be imported. We need to make sure that the versions of Twisted and -# zope.interface used at build time satisfy Nevow's requirements. If not -# then there are two problems: -# - prior to Nevow v0.9.33, Nevow didn't declare its dependency on Twisted -# in a way that enabled setuptools to satisfy that requirement at -# build time. -# - some versions of zope.interface, e.g. v3.6.4, are incompatible with -# Nevow, and we need to avoid those both at build and run-time. -# -# This only matters when compatible versions of Twisted and zope.interface -# are not already installed. Retire this hack when -# 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')] - # We no longer have any requirements specific to tests. tests_require=[] @@ -260,25 +244,23 @@ verstr = %(normalized)r __version__ = verstr ''' -def run_command(args, cwd=None, verbose=False): +def run_command(args, cwd=None): + use_shell = sys.platform == "win32" try: - # remember shell=False, so use git.cmd on windows, not just git - p = subprocess.Popen(args, stdout=subprocess.PIPE, cwd=cwd) - 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) + p = subprocess.Popen(args, stdout=subprocess.PIPE, cwd=cwd, shell=use_shell) + except EnvironmentError as e: # if this gives a SyntaxError, note that Tahoe-LAFS requires Python 2.7+ + print("Warning: unable to run %r." % (" ".join(args),)) + print(e) return None stdout = p.communicate()[0].strip() if p.returncode != 0: - if verbose: - print("unable to run %s (error)" % args[0]) + print("Warning: %r returned error code %r." % (" ".join(args), p.returncode)) return None return stdout -def versions_from_git(tag_prefix, verbose=False): - # this runs 'git' from the directory that contains this file. That either +def versions_from_git(tag_prefix): + # This runs 'git' from the directory that contains this file. That either # means someone ran a setup.py command (and this code is in # versioneer.py, thus the containing directory is the root of the source # tree), or someone ran a project-specific entry point (and this code is @@ -299,19 +281,18 @@ def versions_from_git(tag_prefix, verbose=False): try: source_dir = os.path.dirname(os.path.abspath(__file__)) - except NameError: + except NameError as e: # some py2exe/bbfreeze/non-CPython implementations don't do __file__ - return {} # not always correct - GIT = "git" - if sys.platform == "win32": - GIT = "git.cmd" - stdout = run_command([GIT, "describe", "--tags", "--dirty", "--always"], + print("Warning: unable to find version because we could not obtain the source directory.") + print(e) + return {} + stdout = run_command(["git", "describe", "--tags", "--dirty", "--always"], cwd=source_dir) if stdout is None: + # run_command already complained. return {} if not stdout.startswith(tag_prefix): - if verbose: - print("tag '%s' doesn't start with prefix '%s'" % (stdout, tag_prefix)) + print("Warning: tag %r doesn't start with prefix %r." % (stdout, tag_prefix)) return {} version = stdout[len(tag_prefix):] pieces = version.split("-") @@ -320,8 +301,9 @@ def versions_from_git(tag_prefix, verbose=False): else: normalized_version = "%s.post%s" % (pieces[0], pieces[1]) - stdout = run_command([GIT, "rev-parse", "HEAD"], cwd=source_dir) + stdout = run_command(["git", "rev-parse", "HEAD"], cwd=source_dir) if stdout is None: + # run_command already complained. return {} full = stdout.strip() if version.endswith("-dirty"): @@ -329,7 +311,7 @@ def versions_from_git(tag_prefix, verbose=False): normalized_version += ".dev0" # Thanks to Jistanidiot at . - stdout = run_command([GIT, "rev-parse", "--abbrev-ref", "HEAD"], cwd=source_dir) + stdout = run_command(["git", "rev-parse", "--abbrev-ref", "HEAD"], cwd=source_dir) branch = (stdout or "unknown").strip() return {"version": version, "normalized": normalized_version, "full": full, "branch": branch} @@ -349,19 +331,25 @@ class UpdateVersion(Command): def finalize_options(self): pass def run(self): + global version + verstr = version if os.path.isdir(os.path.join(basedir, ".git")): verstr = self.try_from_git() - else: - print("no version-control data found, leaving _version.py alone") - return + if verstr: self.distribution.metadata.version = verstr + else: + print("""\ +******************************************************************** +Warning: no version information found. This may cause tests to fail. +******************************************************************** +""") def try_from_git(self): - versions = versions_from_git("allmydata-tahoe-", verbose=True) + # If we change APPNAME, the release tag names should also change from then on. + versions = versions_from_git(APPNAME + '-') if versions: - fn = 'src/allmydata/_version.py' - f = open(fn, "wb") + f = open(VERSION_PY_FILENAME, "wb") f.write(GIT_VERSION_BODY % { "pkgname": self.distribution.get_name(), "version": versions["version"], @@ -370,7 +358,8 @@ class UpdateVersion(Command): "branch": versions["branch"], }) f.close() - print("git-version: wrote '%s' into '%s'" % (versions["version"], fn)) + print("Wrote normalized version %r into '%s'" % (versions["normalized"], VERSION_PY_FILENAME)) + return versions.get("normalized", None) @@ -429,7 +418,7 @@ if version: setup_args["version"] = version setup(name=APPNAME, - description='secure, decentralized, fault-tolerant filesystem', + description='secure, decentralized, fault-tolerant file store', long_description=open('README.rst', 'rU').read(), author='the Tahoe-LAFS project', author_email='tahoe-dev@tahoe-lafs.org',