From: Brian Warner Date: Tue, 19 Mar 2013 22:26:21 +0000 (-0700) Subject: Remove darcs from setup.py, remove darcsver egg. Closes #1908. X-Git-Tag: allmydata-tahoe-1.10a2~14 X-Git-Url: https://git.rkrishnan.org/%5B/frontends/%22file:/%22doc.html/nxhtml.html?a=commitdiff_plain;h=19b2ef9764bdb201670d185e417cb93ed9282fd4;p=tahoe-lafs%2Ftahoe-lafs.git Remove darcs from setup.py, remove darcsver egg. Closes #1908. Also remove lingering traces of darcs from MANIFEST.in, .darcs-boringfile, setup.cfg, and unit tests. --- diff --git a/.darcs-boringfile b/.darcs-boringfile deleted file mode 100644 index e26aa6dd..00000000 --- a/.darcs-boringfile +++ /dev/null @@ -1,83 +0,0 @@ -# Boring file regexps: -\.hi$ -\.o$ -\.o\.cmd$ -# *.ko files aren't boring by default because they might -# be Korean translations rather than kernel modules. -# \.ko$ -\.ko\.cmd$ -\.mod\.c$ -(^|/)\.tmp_versions($|/) -(^|/)CVS($|/) -(^|/)RCS($|/) -~$ -#(^|/)\.[^/] -(^|/)_darcs($|/) -\.bak$ -\.BAK$ -\.orig$ -(^|/)vssver\.scc$ -\.swp$ -(^|/)MT($|/) -(^|/)\{arch\}($|/) -(^|/).arch-ids($|/) -(^|/), -\.class$ -\.prof$ -(^|/)\.DS_Store$ -(^|/)BitKeeper($|/) -(^|/)ChangeSet($|/) -(^|/)\.svn($|/) -(^|/)\.git($|/) -\.py[co]$ -\# -\.cvsignore$ -(^|/)Thumbs\.db$ -(^|/)autom4te\.cache($|/) - -^_trial_temp.*($|/) -^\.buildbot($|/) -^MANIFEST$ -^dist($|/) -^debian($|/) - -^build($|/) -^build-stamp$ -^python-build-stamp-2.[4567]$ -^\.coverage$ -^coverage-html($|/) -^twisted/plugins/dropin\.cache$ -^\.coverage\.el$ -^_test_memory($|/) - -# _version.py is generated at build time, and never checked in -^src/allmydata/_version\.py$ -# _appname.py is generated at build time, and never checked in -^src/allmydata/_appname\.py$ - -# bin/tahoe scripts (not including tahoe-script.template) are generated files -^bin/tahoe$ -^bin/tahoe\.pyscript$ -^bin/tahoe-script\.py$ - -# this file is maintained by the buildbot -^\.buildbot-sourcedata$ - -# automatically-built dependencies (using the 'build-deps' target) go here -^support - -# creating a tahoe egg puts files here -allmydata_tahoe.egg-info$ -^Twisted-.*\.egg/ - -# zipped .eggs are boring, contents of .egg directories are not -^.*\.egg$ - -^\.checked-deps$ -^\.built$ - -^misc/dependencies/build($|/) -^misc/dependencies/temp($|/) - -^tahoe-deps($|/) -^tahoe-deps\.tar\.gz$ diff --git a/MANIFEST.in b/MANIFEST.in index 407b6814..da07b99c 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,12 +1,11 @@ include COPYING.GPL COPYING.TGPPL.rst CREDITS Makefile NEWS.rst Tahoe.home -include relnotes.txt .darcs-boringfile +include relnotes.txt include bin/tahoe-script.template recursive-include src *.xhtml *.js *.png *.css recursive-include twisted *.py graft docs graft misc graft static -graft darcsver-1.7.2.egg graft setuptools-0.6c16dev4.egg global-exclude *~ *.pyc diff --git a/darcsver-1.7.2.egg/EGG-INFO/PKG-INFO b/darcsver-1.7.2.egg/EGG-INFO/PKG-INFO deleted file mode 100644 index b59e3084..00000000 --- a/darcsver-1.7.2.egg/EGG-INFO/PKG-INFO +++ /dev/null @@ -1,121 +0,0 @@ -Metadata-Version: 1.0 -Name: darcsver -Version: 1.7.2 -Summary: generate a version number from darcs history -Home-page: http://tahoe-lafs.org/trac/darcsver -Author: Zooko O'Whielacronx -Author-email: zooko@zooko.com -License: BSD -Description: darcsver - generate version numbers from darcs revision control history - ======================================================================= - - What Does It Do - --------------- - - Create files containing version numbers, based upon the latest darcs - release tag. - - If your source tree is coming from darcs (i.e. it is in a darcs - repository), this tool will determine the most recent release tag, - count the patches that have been applied since then, and compute a - version number to be written into _version.py (and optionally other - version files). This version number will be available by doing: - - from your_package_name import __version__ - - Source trees that do not come from darcs (e.g. release tarballs, nightly - tarballs) and are not within a darcs repository should instead, come with a - _version.py that was generated before the tarball was produced. In this case, - this tool will quietly exit without modifying the existing _version.py . - - 'release tags' are tags in the source repository that match the following - regexp: - - ^your_package_name-(\d+)(\.(\d+)(\.(\d+))?)?((a|b|c|rc)(\d+))? - - - Installation - ------------ - - With easy_install: - - easy_install darcsver - - Alternative manual installation: - - tar -zxvf darcsver-X.Y.Z.tar.gz - cd darcsver-X.Y.Z - python setup.py install - - Where X.Y.Z is a version number. - - Alternative to make a specific package use darcsver without installing - darcsver into the system: - - Put "setup_requires=['darcsver']" in the call to setup() in the - package's setup.py file. - - - Usage - ----- - - There are two ways to use this: the command-line tool and the - setuptools plugin. - - To use the command-line tool, execute it as: - - darcsver $PACKAGE_NAME $PATH_TO_VERSION_PY - - - To use the setuptools plugin (which enables you to write "./setup.py - darcsver" and which cleverly figures out where the _version.py file - ought to go), you must first package your python module with - `setup.py` and use setuptools. - - The former is well documented in the distutils manual: - - http://docs.python.org/dist/dist.html - - To use setuptools instead of distutils, just edit `setup.py` and - change - - from distutils.core import setup - - to - - from setuptools import setup - - - References - ---------- - - How to distribute Python modules with Distutils: - - http://docs.python.org/dist/dist.html - - - Setuptools complete manual: - - http://peak.telecommunity.com/DevCenter/setuptools - - - Thanks to Yannick Gingras for providing the prototype for this - README.txt. - -Keywords: distutils setuptools plugin setup darcs -Platform: UNKNOWN -Classifier: Framework :: Setuptools Plugin -Classifier: Development Status :: 5 - Production/Stable -Classifier: License :: OSI Approved :: BSD License -Classifier: License :: DFSG approved -Classifier: Intended Audience :: Developers -Classifier: Operating System :: OS Independent -Classifier: Natural Language :: English -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.4 -Classifier: Programming Language :: Python :: 2.5 -Classifier: Programming Language :: Python :: 2.6 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Topic :: Utilities -Classifier: Topic :: Software Development :: Libraries diff --git a/darcsver-1.7.2.egg/EGG-INFO/SOURCES.txt b/darcsver-1.7.2.egg/EGG-INFO/SOURCES.txt deleted file mode 100644 index 7ae9be9a..00000000 --- a/darcsver-1.7.2.egg/EGG-INFO/SOURCES.txt +++ /dev/null @@ -1,16 +0,0 @@ -README.txt -setup.py -darcsver/__init__.py -darcsver/_version.py -darcsver/darcsvermodule.py -darcsver/setuptools_command.py -darcsver.egg-info/PKG-INFO -darcsver.egg-info/SOURCES.txt -darcsver.egg-info/dependency_links.txt -darcsver.egg-info/entry_points.txt -darcsver.egg-info/not-zip-safe -darcsver.egg-info/top_level.txt -darcsver/test/__init__.py -darcsver/test/test_darcsver.py -scripts/__init__.py -scripts/darcsverscript.py \ No newline at end of file diff --git a/darcsver-1.7.2.egg/EGG-INFO/dependency_links.txt b/darcsver-1.7.2.egg/EGG-INFO/dependency_links.txt deleted file mode 100644 index 8b137891..00000000 --- a/darcsver-1.7.2.egg/EGG-INFO/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/darcsver-1.7.2.egg/EGG-INFO/entry_points.txt b/darcsver-1.7.2.egg/EGG-INFO/entry_points.txt deleted file mode 100644 index 569b4e41..00000000 --- a/darcsver-1.7.2.egg/EGG-INFO/entry_points.txt +++ /dev/null @@ -1,10 +0,0 @@ -[distutils.setup_keywords] -versionbodies = darcsver.setuptools_command:validate_versionbodies -versionfiles = darcsver.setuptools_command:validate_versionfiles - -[console_scripts] -darcsver = scripts.darcsverscript:main - -[distutils.commands] -darcsver = darcsver.setuptools_command:DarcsVer - diff --git a/darcsver-1.7.2.egg/EGG-INFO/not-zip-safe b/darcsver-1.7.2.egg/EGG-INFO/not-zip-safe deleted file mode 100644 index 8b137891..00000000 --- a/darcsver-1.7.2.egg/EGG-INFO/not-zip-safe +++ /dev/null @@ -1 +0,0 @@ - diff --git a/darcsver-1.7.2.egg/EGG-INFO/top_level.txt b/darcsver-1.7.2.egg/EGG-INFO/top_level.txt deleted file mode 100644 index 4eebf095..00000000 --- a/darcsver-1.7.2.egg/EGG-INFO/top_level.txt +++ /dev/null @@ -1,2 +0,0 @@ -darcsver -scripts diff --git a/darcsver-1.7.2.egg/darcsver/__init__.py b/darcsver-1.7.2.egg/darcsver/__init__.py deleted file mode 100644 index 3421c135..00000000 --- a/darcsver-1.7.2.egg/darcsver/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -__version__ = "unknown" -try: - from _version import __version__ -except ImportError: - # We're running in a tree that hasn't run darcsver, and didn't come with a - # _version.py, so we don't know what our version is. This should not happen - # very often. - pass diff --git a/darcsver-1.7.2.egg/darcsver/_version.py b/darcsver-1.7.2.egg/darcsver/_version.py deleted file mode 100644 index fa9c1060..00000000 --- a/darcsver-1.7.2.egg/darcsver/_version.py +++ /dev/null @@ -1,17 +0,0 @@ - -# This is the version of this tree, as created by setup.py darcsver from the darcs patch -# information: the main version number is taken from the most recent release -# tag. If some patches have been added since the last release, this will have a -# -NN "build number" suffix, or else a -rNN "revision number" suffix. Please see -# pyutil.version_class for a description of what the different fields mean. - -__pkgname__ = "darcsver" -verstr = "1.7.2" -try: - from pyutil.version_class import Version as pyutil_Version - __version__ = pyutil_Version(verstr) -except (ImportError, ValueError): - # Maybe there is no pyutil installed, or this may be an older version of - # pyutil.version_class which does not support SVN-alike revision numbers. - from distutils.version import LooseVersion as distutils_Version - __version__ = distutils_Version(verstr) diff --git a/darcsver-1.7.2.egg/darcsver/darcsvermodule.py b/darcsver-1.7.2.egg/darcsver/darcsvermodule.py deleted file mode 100644 index aabd1c9e..00000000 --- a/darcsver-1.7.2.egg/darcsver/darcsvermodule.py +++ /dev/null @@ -1,200 +0,0 @@ -import os, string, sys, re -import xml.dom.minidom -import subprocess -PIPE=subprocess.PIPE -from distutils import log - -def all(iterable): - for thing in iterable: - if not thing: - return False - return True - -OUR_VERSION_BASE_RE_STR="(\d+)(\.(\d+)(\.(\d+))?)?((a|b|c)(\d+))?(\.dev(\d+))?" -try: - # If we can import pyutil.version_class then use its regex. - from pyutil import version_class - VERSION_BASE_RE_STR = version_class.VERSION_BASE_RE_STR -except (ImportError, AttributeError): - # Else (perhaps a bootstrapping problem),then we'll use this - # regex, which was copied from the pyutil source code on - # 2010-09-02. - VERSION_BASE_RE_STR=OUR_VERSION_BASE_RE_STR - -def get_text(nodelist): - rc = "" - for node in nodelist: - if node.nodeType == node.TEXT_NODE: - rc = rc + node.data - return rc - -VERSION_BODY = ''' -# This is the version of this tree, as created by %(versiontool)s from the darcs patch -# information: the main version number is taken from the most recent release -# tag. If some patches have been added since the last release, this will have a -# -NN "build number" suffix, or else a -rNN "revision number" suffix. Please see -# pyutil.version_class for a description of what the different fields mean. - -__pkgname__ = "%(pkgname)s" -verstr = "%(pkgversion)s" -try: - from pyutil.version_class import Version as pyutil_Version - __version__ = pyutil_Version(verstr) -except (ImportError, ValueError): - # Maybe there is no pyutil installed. - from distutils.version import LooseVersion as distutils_Version - __version__ = distutils_Version(verstr) -''' - -def write_version_py(verstr, outfname, EXE_NAME, version_body, pkgname): - f = open(outfname, "wb+") - f.write(version_body % { - 'versiontool': EXE_NAME, - 'pkgversion': verstr, - 'pkgname': pkgname, - }) - f.close() - -def read_version_py(infname): - try: - verstrline = open(infname, "rt").read() - except EnvironmentError: - return None - else: - VSRE = r"^verstr = ['\"]([^'\"]*)['\"]" - mo = re.search(VSRE, verstrline, re.M) - if mo: - return mo.group(1) - -def update(pkgname, verfilename, revision_number=False, loud=False, abort_if_snapshot=False, EXE_NAME="darcsver", version_body=VERSION_BODY): - """ - @param revision_number If true, count the total number of patches in all - history. If false, count the total number of patches since the most recent - release tag. - - Returns a tuple of (exit code, new version string). - """ - if isinstance(verfilename, basestring): - verfilenames = [verfilename] - else: - verfilenames = verfilename - assert all([isinstance(vfn, basestring) for vfn in verfilenames]), [vfn for vfn in verfilenames if not isinstance(vfn, basestring)] - if isinstance(version_body, basestring): - verbodies = [version_body] - else: - verbodies = version_body - rc = -1 - - # First we try "darcs query repo" because if that fails then we - # won't try "darcs changes" at all, because "darcs changes" emits - # an ugly error message when run in not-a-repo. - try: - p = subprocess.Popen(["darcs", 'query', 'repo'], stdout=PIPE, stderr=PIPE, universal_newlines=True) - except OSError, ose: - if ose.errno == 2 and '~' in os.environ['PATH']: - expanded_path = os.environ['PATH'].replace('~', os.path.expanduser('~')) - msg = ("WARNING: 'darcs' was not found. However '~' was found in your PATH. \n" - "Please note that bugs in python cause it to fail to traverse '~' in \n" - "the user's PATH. Please fix your path, e.g. \nPATH=%s" ) - log.warn(msg % (expanded_path,)) - pass - else: - (output, errput) = p.communicate() - rc = p.returncode - - if rc == 0: - cmd = ["changes", "--xml-output"] - if not revision_number: - cmd.append("--from-tag=^%s" % (pkgname,)) - try: - p = subprocess.Popen(["darcs"] + cmd, stdout=PIPE, stderr=PIPE, universal_newlines=True) - except OSError: - pass - else: - (output, errput) = p.communicate() - rc = p.returncode - if rc != 0 and errput: - log.info("%s: darcs wrote to stderr: '%s'" % (EXE_NAME, errput,)) - errput = None - else: - if all([os.path.exists(vfn) for vfn in verfilenames]): - log.info("%s: using extant version file %s" % (EXE_NAME, verfilenames)) - return (0, read_version_py(verfilenames[0])) - else: - log.warn("%s: didn't find version tags with darcs, and %s don't exist." % (EXE_NAME, verfilenames)) - return (rc, None) - - # Filter out bad chars that can cause the XML parser to give up in despair. - # (Thanks to lelit of the tailor project and ndurner and warner for this hack.) - allbadchars = "".join([chr(i) for i in range(0x0a) + [0x0b, 0x0c] + range(0x0e, 0x20) + range(0x7f,0x100)]) - tt = string.maketrans(allbadchars, "-"*len(allbadchars)) - output = output.translate(tt) - regexstr = "^TAG %s-(%s)$" % (pkgname, VERSION_BASE_RE_STR) - last_tag = None - - # strip off trailing warning messages that darcs 2.3.1 writes to stdout - endi = output.find("")+len("") - if endi != -1: - output = output[:endi] - try: - doc = xml.dom.minidom.parseString(output) - except xml.parsers.expat.ExpatError: - # Okay maybe this is an error message instead of an XML output. - pass - else: - changelog = doc.getElementsByTagName("changelog")[0] - patches = changelog.getElementsByTagName("patch") - version_re = re.compile(regexstr) - count_since_last_patch = 0 - if abort_if_snapshot: - for patch in patches: - name = get_text(patch.getElementsByTagName("name")[0].childNodes) - m = version_re.match(name) - if m: - last_tag = m.group(1) - last_tag = last_tag.encode("utf-8") - break - else: - sys.exit(0) # because abort_if_snapshot - else: - for patch in patches: - name = get_text(patch.getElementsByTagName("name")[0].childNodes) - m = version_re.match(name) - if m: - last_tag = m.group(1) - last_tag = last_tag.encode("utf-8") - break - else: - count_since_last_patch += 1 - - if not last_tag: - if errput: - log.info("%s: darcs wrote to stderr: '%s'" % (EXE_NAME, errput,)) - errput = None - assert all([isinstance(vfn, basestring) for vfn in verfilenames]), [vfn for vfn in verfilenames if not isinstance(vfn, basestring)] - if all([os.path.exists(vfn) for vfn in verfilenames]): - log.warn("%s: I'm unable to find a tag in the darcs history matching \"%s\", so I'm leaving %s alone." % (EXE_NAME, regexstr, verfilenames,)) - return (0, read_version_py(verfilenames[0])) - else: - log.warn("%s: I'm unable to find a tag in the darcs history matching \"%s\", and %s don't exist." % (EXE_NAME, regexstr, verfilenames,)) - return (-1, None) - - if revision_number: - if count_since_last_patch: - # this is an interim version - verstr = "%s-r%d" % (last_tag, len(patches)) - else: - # this is a release - verstr = last_tag - else: - if count_since_last_patch: - # this is an interim version - verstr = "%s-%d" % (last_tag, count_since_last_patch) - else: - # this is a release - verstr = last_tag - - for verfn, verbod in zip(verfilenames, verbodies): - write_version_py(verstr, verfn, EXE_NAME, verbod, pkgname) - log.info("%s: wrote '%s' into %s" % (EXE_NAME, verstr, verfn,)) - return (0, verstr) diff --git a/darcsver-1.7.2.egg/darcsver/setuptools_command.py b/darcsver-1.7.2.egg/darcsver/setuptools_command.py deleted file mode 100644 index 466a0ab4..00000000 --- a/darcsver-1.7.2.egg/darcsver/setuptools_command.py +++ /dev/null @@ -1,126 +0,0 @@ -import os - -import setuptools - -from darcsver import darcsvermodule - -from distutils.errors import DistutilsSetupError - -def validate_string_or_iter_of_strings(dist, attr, value): - # value is required to be a string or else a list of strings - if isinstance(value, basestring): - return - try: - for thing in value: - if not isinstance(thing, basestring): - raise DistutilsSetupError("%r is required to be a string or an iterable of strings (got %r)" % (attr, value)) - except TypeError: - raise DistutilsSetupError("%r is required to be a string or an iterable of strings (got %r)" % (attr, value)) - -def validate_versionfiles(dist, attr, value): - return validate_string_or_iter_of_strings(dist, attr, value) - -def validate_versionbodies(dist, attr, value): - return validate_string_or_iter_of_strings(dist, attr, value) - -def all(iterator): - for thing in iterator: - if not thing: - return False - return True - -PYTHON_VERSION_BODY=''' -# This is the version of this tree, as created by %(versiontool)s from the darcs patch -# information: the main version number is taken from the most recent release -# tag. If some patches have been added since the last release, this will have a -# -NN "build number" suffix, or else a -rNN "revision number" suffix. Please see -# pyutil.version_class for a description of what the different fields mean. - -__pkgname__ = "%(pkgname)s" -verstr = "%(pkgversion)s" -try: - from pyutil.version_class import Version as pyutil_Version - __version__ = pyutil_Version(verstr) -except (ImportError, ValueError): - # Maybe there is no pyutil installed, or this may be an older version of - # pyutil.version_class which does not support SVN-alike revision numbers. - from distutils.version import LooseVersion as distutils_Version - __version__ = distutils_Version(verstr) -''' - -class DarcsVer(setuptools.Command): - description = "generate a version number from darcs history" - user_options = [ - ('project-name', None, "name of the project as it appears in the project's release tags (default's the to the distribution name)"), - ('filename', None, "path to file into which the version number should be written (defaults to the package directory's _version.py)"), - ('count-all-patches', None, "If true, count the total number of patches in all history. If false, count the total number of patches since the most recent release tag."), - ('abort-if-snapshot', None, "If true, the if the current version is a snapshot (not a release tag), then immediately exit the process with exit code 0."), - ] - - def initialize_options(self): - self.project_name = None - self.filename = None - self.count_all_patches = None - self.abort_if_snapshot = None - - def finalize_options(self): - if self.project_name is None: - self.project_name = self.distribution.get_name() - - # If the user passed --filename on the cmdline, override - # the setup.py's versionfiles argument. - if self.filename is not None: - if not isinstance(self.filename, basestring): - raise TypeError("filename is required to be a string, not %s, filename: %s" % (type(self.filename), self.filename)) - self.distribution.versionfiles = [self.filename] - - if self.abort_if_snapshot is None: - self.abort_if_snapshot=False - - def run(self): - if self.distribution.versionfiles is None: - toppackage = '' - # If there is a package with the same name as the project name and - # there is a directory by that name then use that. - packagedir = None - if self.distribution.packages and self.project_name in self.distribution.packages: - toppackage = self.project_name - srcdir = '' - if self.distribution.package_dir: - srcdir = self.distribution.package_dir.get(toppackage) - if not srcdir is None: - srcdir = self.distribution.package_dir.get('', '') - packagedir = os.path.join(srcdir, toppackage) - - if packagedir is None or not os.path.isdir(packagedir): - # Else, if there is a singly-rooted tree of packages, use the - # root of that. - if self.distribution.packages: - for package in self.distribution.packages: - if not toppackage: - toppackage = package - else: - if toppackage.startswith(package+"."): - toppackage = package - else: - if not package.startswith(toppackage+"."): - # Not singly-rooted - toppackage = '' - break - - srcdir = '' - if self.distribution.package_dir: - srcdir = self.distribution.package_dir.get(toppackage) - if srcdir is None: - srcdir = self.distribution.package_dir.get('', '') - packagedir = os.path.join(srcdir, toppackage) - - self.distribution.versionfiles = [os.path.join(packagedir, '_version.py')] - - if self.distribution.versionbodies is None: - self.distribution.versionbodies = [PYTHON_VERSION_BODY] - - assert all([isinstance(vfn, basestring) for vfn in self.distribution.versionfiles]), self.distribution.versionfiles - (rc, verstr) = darcsvermodule.update(self.project_name, self.distribution.versionfiles, self.count_all_patches, abort_if_snapshot=self.abort_if_snapshot, EXE_NAME="setup.py darcsver", version_body=self.distribution.versionbodies) - if rc == 0: - self.distribution.metadata.version = verstr diff --git a/darcsver-1.7.2.egg/scripts/__init__.py b/darcsver-1.7.2.egg/scripts/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/darcsver-1.7.2.egg/scripts/darcsverscript.py b/darcsver-1.7.2.egg/scripts/darcsverscript.py deleted file mode 100644 index 7c54f534..00000000 --- a/darcsver-1.7.2.egg/scripts/darcsverscript.py +++ /dev/null @@ -1,46 +0,0 @@ -#! /usr/bin/env python - -from optparse import OptionParser -import os, sys - -from darcsver import darcsvermodule, __version__ - -try: - EXE_NAME=os.path.basename(sys.argv[0]) -except: - EXE_NAME="darcsver" - -def main(): - parser = OptionParser(usage="Usage: %prog [options] [pkgname [verfilename]]", - version="%prog " + str(__version__), - prog=EXE_NAME) - parser.add_option("-q", "--quiet", default=False, action="store_true", - help="Be quiet, do the job without any output.") - parser.add_option("--count-all-patches", "--revision-number", default=False, - action="store_true", dest="count_all_patches", - help="By default %s counts the number of patches since the " - "most recent release tag. With this option, it counts " - "all the patches in the repository." % EXE_NAME) - - options, args = parser.parse_args() - - if args: - pkgname = args.pop(0) - else: - pkgname = os.path.basename(os.getcwd()) - if not options.quiet: - print "%s: You didn't pass a pkg-name on the command-line, so I'm going to take the name of the current working directory: \"%s\"" % (EXE_NAME, pkgname,) - - if args: - verfilename = args.pop(0) - else: - verfilename = os.path.join(pkgname, "_version.py") - if not options.quiet: - print "%s: You didn't pass a verfilename on the command-line, so I'm going to build one from the name of the package: \"%s\"" % (EXE_NAME, verfilename,) - - (rc, newverstr) = darcsvermodule.update(pkgname=pkgname, verfilename=verfilename, revision_number=options.count_all_patches, quiet=options.quiet, EXE_NAME=EXE_NAME) - return rc - -if __name__ == "__main__": - rc = main() - sys.exit(rc) diff --git a/darcsver-1.7.2.egg/share/doc/python-darcsver/README.txt b/darcsver-1.7.2.egg/share/doc/python-darcsver/README.txt deleted file mode 100644 index 8f0ffa76..00000000 --- a/darcsver-1.7.2.egg/share/doc/python-darcsver/README.txt +++ /dev/null @@ -1,95 +0,0 @@ -darcsver - generate version numbers from darcs revision control history -======================================================================= - -What Does It Do ---------------- - -Create files containing version numbers, based upon the latest darcs -release tag. - -If your source tree is coming from darcs (i.e. it is in a darcs -repository), this tool will determine the most recent release tag, -count the patches that have been applied since then, and compute a -version number to be written into _version.py (and optionally other -version files). This version number will be available by doing: - - from your_package_name import __version__ - -Source trees that do not come from darcs (e.g. release tarballs, nightly -tarballs) and are not within a darcs repository should instead, come with a -_version.py that was generated before the tarball was produced. In this case, -this tool will quietly exit without modifying the existing _version.py . - -'release tags' are tags in the source repository that match the following -regexp: - - ^your_package_name-(\d+)(\.(\d+)(\.(\d+))?)?((a|b|c|rc)(\d+))? - - -Installation ------------- - -With easy_install: - - easy_install darcsver - -Alternative manual installation: - - tar -zxvf darcsver-X.Y.Z.tar.gz - cd darcsver-X.Y.Z - python setup.py install - -Where X.Y.Z is a version number. - -Alternative to make a specific package use darcsver without installing -darcsver into the system: - - Put "setup_requires=['darcsver']" in the call to setup() in the - package's setup.py file. - - -Usage ------ - -There are two ways to use this: the command-line tool and the -setuptools plugin. - -To use the command-line tool, execute it as: - -darcsver $PACKAGE_NAME $PATH_TO_VERSION_PY - - -To use the setuptools plugin (which enables you to write "./setup.py -darcsver" and which cleverly figures out where the _version.py file -ought to go), you must first package your python module with -`setup.py` and use setuptools. - -The former is well documented in the distutils manual: - - http://docs.python.org/dist/dist.html - -To use setuptools instead of distutils, just edit `setup.py` and -change - - from distutils.core import setup - -to - - from setuptools import setup - - -References ----------- - -How to distribute Python modules with Distutils: - - http://docs.python.org/dist/dist.html - - -Setuptools complete manual: - - http://peak.telecommunity.com/DevCenter/setuptools - - -Thanks to Yannick Gingras for providing the prototype for this -README.txt. diff --git a/setup.cfg b/setup.cfg index 0d682035..bf392cfb 100644 --- a/setup.cfg +++ b/setup.cfg @@ -14,12 +14,13 @@ zip_ok=False # PyPI. # https://tahoe-lafs.org/source/tahoe-lafs/deps/tahoe-deps.tar.gz contains a -# bundle of these dependencies (as Python source distributions or "sdists"). So -# it you want to avoid the build-time download (say, if you're on an airplane, -# or a desert island), just grab a copy and unpack it in your tahoe darcs tree. +# bundle of these dependencies (as Python source distributions or "sdists"). +# So it you want to avoid the build-time download (say, if you're on an +# airplane, or a desert island), just grab a copy and unpack it in your tahoe +# source tree. # Alternatively, if you're building from a release/nightly tarball instead of -# a darcs tree, the 'sumo' tarball variant will include all of these +# a git tree, the 'sumo' tarball variant will include all of these # dependencies in the tahoe-deps/ directory. find_links=misc/dependencies tahoe-deps ../tahoe-deps diff --git a/setup.py b/setup.py index 35017770..e78f2a48 100644 --- a/setup.py +++ b/setup.py @@ -72,8 +72,6 @@ __requires__ = install_requires[:] 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) import setuptools; setuptools.bootstrap_install_from = egg from setuptools import setup @@ -120,20 +118,6 @@ trove_classifiers=[ setup_requires = [] -# The darcsver command from the darcsver plugin is needed to initialize the -# distribution's .version attribute correctly. (It does this either by -# examining darcs history, or if that fails by reading the -# src/allmydata/_version.py file). darcsver will also write a new version -# stamp in src/allmydata/_version.py, with a version number derived from -# darcs history. Note that the setup.cfg file has an "[aliases]" section -# which enumerates commands that you might run and specifies that it will run -# darcsver before each one. If you add different commands (or if I forgot -# some that are already in use), you may need to add it to setup.cfg and -# configure it to run darcsver before your command, if you want the version -# number to be correct when that command runs. -# http://pypi.python.org/pypi/darcsver -setup_requires.append('darcsver >= 1.7.2') - # 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 @@ -256,15 +240,6 @@ class MakeExecutable(Command): raise -DARCS_VERSION_BODY = ''' -# This _version.py is generated from darcs metadata by the tahoe setup.py -# and the "darcsver" package. - -__pkgname__ = "%(pkgname)s" -verstr = "%(pkgversion)s" -__version__ = verstr -''' - GIT_VERSION_BODY = ''' # This _version.py is generated from git metadata by the tahoe setup.py. @@ -343,6 +318,11 @@ def versions_from_git(tag_prefix, verbose=False): normalized_version += ".dev0" return {"version": version, "normalized": normalized_version, "full": full} +# setup.cfg has an [aliases] section which runs "update_version" before many +# commands (like "build" and "sdist") that need to know our package version +# ahead of time. If you add different commands (or if we forgot some), you +# may need to add it to setup.cfg and configure it to run update_version +# before your command. class UpdateVersion(Command): description = "update _version.py from revision-control metadata" @@ -353,38 +333,26 @@ class UpdateVersion(Command): def finalize_options(self): pass def run(self): - target = self.distribution.versionfiles[0] - if os.path.isdir(os.path.join(basedir, "_darcs")): - verstr = self.try_from_darcs(target) - elif os.path.isdir(os.path.join(basedir, ".git")): - verstr = self.try_from_git(target) + 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 - def try_from_darcs(self, target): - from darcsver.darcsvermodule import update - (rc, verstr) = update(pkgname=self.distribution.get_name(), - verfilename=self.distribution.versionfiles, - revision_number=True, - version_body=DARCS_VERSION_BODY) - if rc == 0: - return verstr - - def try_from_git(self, target): + def try_from_git(self): versions = versions_from_git("allmydata-tahoe-", verbose=True) if versions: - for fn in self.distribution.versionfiles: - f = open(fn, "wb") - f.write(GIT_VERSION_BODY % - { "pkgname": self.distribution.get_name(), - "version": versions["version"], - "normalized": versions["normalized"], - "full": versions["full"] }) - f.close() - print("git-version: wrote '%s' into '%s'" % (versions["version"], fn)) + fn = 'src/allmydata/_version.py' + f = open(fn, "wb") + f.write(GIT_VERSION_BODY % + { "pkgname": self.distribution.get_name(), + "version": versions["version"], + "normalized": versions["normalized"], + "full": versions["full"] }) + f.close() + print("git-version: wrote '%s' into '%s'" % (versions["version"], fn)) return versions.get("normalized", None) @@ -479,6 +447,5 @@ setup(name=APPNAME, setup_requires=setup_requires, entry_points = { 'console_scripts': [ 'tahoe = allmydata.scripts.runner:run' ] }, zip_safe=False, # We prefer unzipped for easier access. - versionfiles=['src/allmydata/_version.py',], **setup_args ) diff --git a/src/allmydata/test/test_runner.py b/src/allmydata/test/test_runner.py index 59624626..a7be1357 100644 --- a/src/allmydata/test/test_runner.py +++ b/src/allmydata/test/test_runner.py @@ -154,7 +154,7 @@ class BinTahoe(common_util.SignalMixin, unittest.TestCase, RunBinTahoeMixin): self.failIfEqual(required_verstr, "unknown", "We don't know our version, because this distribution didn't come " - "with a _version.py and 'setup.py darcsver' hasn't been run.") + "with a _version.py and 'setup.py update_version' hasn't been run.") srcdir = os.path.dirname(os.path.dirname(os.path.normcase(os.path.realpath(srcfile)))) info = repr((res, allmydata.__appname__, required_verstr, srcdir))