This is to work-around https://bitbucket.org/tarek/distribute/issue/55/revision-control-plugin-automatically-installed-as-a-build-dependency-is-not-present-when-another-build-dependency-is-being . refs #1054.
--- /dev/null
+Metadata-Version: 1.0
+Name: setuptools-darcs
+Version: 1.2.12
+Summary: setuptools plugin for darcs
+Home-page: http://tahoe-lafs.org/trac/setuptools_darcs
+Author: Zooko O'Whielacronx
+Author-email: zooko@zooko.com
+License: BSD
+Description: UNKNOWN
+Keywords: distutils setuptools 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 :: Microsoft
+Classifier: Operating System :: Microsoft :: Windows
+Classifier: Operating System :: Unix
+Classifier: Operating System :: POSIX :: Linux
+Classifier: Operating System :: POSIX
+Classifier: Operating System :: MacOS :: MacOS X
+Classifier: Operating System :: Microsoft :: Windows :: Windows NT/2000
+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: Topic :: Utilities
+Classifier: Topic :: Software Development :: Libraries
--- /dev/null
+
+README.txt
+setup.cfg
+setup.py
+setuptools_darcs/__init__.py
+setuptools_darcs/_version.py
+setuptools_darcs/setuptools_darcs.py
+setuptools_darcs.egg-info/PKG-INFO
+setuptools_darcs.egg-info/SOURCES.txt
+setuptools_darcs.egg-info/dependency_links.txt
+setuptools_darcs.egg-info/entry_points.txt
+setuptools_darcs.egg-info/not-zip-safe
+setuptools_darcs.egg-info/top_level.txt
\ No newline at end of file
--- /dev/null
+[setuptools.file_finders]
+darcs = setuptools_darcs.setuptools_darcs:find_files_for_darcs
+
--- /dev/null
+setuptools_darcs
--- /dev/null
+__version__ = "unknown"
+try:
+ from _version import __version__
+except ImportError:
+ # We're running in a tree that hasn't run darcsver from the pyutil library,
+ # and didn't come with a _version.py, so we don't know what our version
+ # is. This should not happen very often.
+ pass
--- /dev/null
+
+# 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.
+
+verstr = "1.2.12"
+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)
--- /dev/null
+import os, re
+
+from subprocess import Popen, PIPE
+
+THISDIR_RE=re.compile("What's new in \"(.*)\"")
+
+def exec_darcs(darcscmd):
+ cmd = ['darcs'] + darcscmd
+ try:
+ p = Popen(cmd, stdout=PIPE, stderr=PIPE, universal_newlines=True)
+ except EnvironmentError:
+ cmd = ['realdarcs.exe'] + darcscmd
+ p = Popen(cmd, stdout=PIPE, stderr=PIPE, universal_newlines=True)
+
+ output = p.communicate()[0]
+ return (p.returncode, output)
+
+def run_darcs_query_manifest():
+ return exec_darcs(['query', 'manifest'])
+
+def run_darcs_whatsnew_dot():
+ return exec_darcs(['whatsnew', '.'])
+
+def find_files_for_darcs(dirname):
+ try:
+ unused, whatsnewoutput = run_darcs_whatsnew_dot()
+ queryretcode, queryoutput = run_darcs_query_manifest()
+ except EnvironmentError:
+ if not os.path.exists('PKG-INFO'):
+ from distutils import log
+ log.info("Unable to execute darcs -- if you are building a package with 'setup.py sdist', 'setup.py bdist_egg', or other package-building commands, then the resulting package might be missing some files. If you are not building a package then you can ignore this warning.")
+ # Oh well -- just return None.
+ return
+
+ if queryretcode != 0:
+ if not os.path.exists('PKG-INFO'):
+ from distutils import log
+ log.warn("Failure to get the list of managed files from darcs -- if you are building a package with 'setup.py sdist', 'setup.py bdist_egg', or other package-building commands, then the resulting package might be missing some files. If you are not building a package then you can ignore this warning.")
+ # Oh well -- just return None.
+ return
+
+ # We got output.
+ mo = THISDIR_RE.search(whatsnewoutput)
+ if mo:
+ curdirname = mo.group(1)
+ while curdirname.endswith('/'):
+ curdirname = curdirname[:-1]
+ curdirname += "/"
+ else:
+ curdirname = ""
+
+ # Prepend this directory.
+ rel_to_repo_dirname = curdirname + dirname
+
+ # Normalize rel_to_repo_dirname from local form to the form that setuptools uses to the form that "darcs query manifest" outputs (unix form).
+ rel_to_repo_dirname = rel_to_repo_dirname.replace('\\', '/')
+ while rel_to_repo_dirname.endswith('/'):
+ rel_to_repo_dirname = rel_to_repo_dirname[:-1]
+
+ # Append a '/' to make sure we don't match "foobar" when rel_to_repo_dirname is "foo".
+ if rel_to_repo_dirname:
+ rel_to_repo_dirname += '/'
+
+ warn = True
+ for fn in queryoutput.split('\n'):
+ if fn == ".":
+ continue
+ if fn.startswith('./'):
+ fn = fn[2:]
+ if fn.startswith(rel_to_repo_dirname):
+ fn = fn[len(rel_to_repo_dirname):]
+ warn = False
+ # We need to replace "/" by "\\" because setuptools can't includes web/*.xhtml files on Windows, due of path separator
+ # This correct ticket #1033
+ yield fn.replace('/', os.sep)
+
+ if warn and not os.path.exists('PKG-INFO'):
+ from distutils import log
+ log.warn("Didn't find any files in directory \"%s\" (full path: \"%s\") that were managed by darcs revision control -- if you are building a package with 'setup.py sdist', 'setup.py bdist_egg', or other package-building commands, then the resulting package might be missing some files. If you are not building a package then you can ignore this warning." % (dirname, os.path.abspath(rel_to_repo_dirname),))
--- /dev/null
+
+setuptools_darcs Manual
+=======================
+
+About
+-----
+
+This is a plugin for setuptools that integrates darcs. Once
+installed, Setuptools can be told to include in a package distribution
+all the files tracked by darcs. This is an alternative to explicit
+inclusion specifications with `MANIFEST.in`.
+
+A distribution here refers to a package that you create using
+setup.py, ex:
+
+ python setup.py sdist
+ python setup.py bdist_egg
+ python setup.py bdist_rpm
+
+This package was formerly known as setuptools_darcs_plugin. The name
+change is the result of an agreement by the setuptools plugin
+developers to provide a uniform naming convention.
+
+
+Installation
+------------
+
+With easy_install:
+
+ easy_install setuptools_darcs
+
+Alternative manual installation:
+
+ tar -zxvf setuptools_darcs-X.Y.Z.tar.gz
+ cd setuptools_darcs-X.Y.Z
+ python setup.py install
+
+Where X.Y.Z is a version number.
+
+Alternative to make a specific package use setuptools_darcs without
+installing setuptools_darcs into the system:
+
+ Put "setup_requires=['setuptools_darcs']" in the call to setup() in
+ the package's setup.py file.
+
+
+Usage
+-----
+
+To use this plugin, 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
+
+When setuptools builds a source package, it always includes all files
+tracked by your revision control system, if it knows how to learn what
+those files are.
+
+When setuptools builds a binary package, you can ask it to include all
+files tracked by your revision control system, by adding this argument
+to your invocation of `setup()`:
+
+ setup(...,
+ include_package_data=True,
+ ...)
+
+This plugin lets setuptools know what files are tracked by your darcs
+revision control tool. setuptools ships with support for cvs and
+subversion. Other plugins like this one are available for bzr, git,
+monotone, and mercurial, at least.
+
+It might happen that you track files with your revision control system
+that you don't want to include in your packages. In that case, you
+can prevent setuptools from packaging those files with a directive in
+your `MANIFEST.in`, ex:
+
+ exclude .darcs-boringfile
+ recursive-exclude images *.xcf *.blend
+
+In this example, we prevent setuptools from packaging
+`.darcs-boringfile` and the Gimp and Blender source files found under
+the `images` directory.
+
+Alternatively, files to exclude from the package can be listed in the
+`setup()` directive:
+
+ setup(...,
+ exclude_package_data = {'': ['.darcs-boringfile'],
+ 'images': ['*.xcf', '*.blend']},
+ ...)
+
+
+Gotchas
+-------
+
+If someone clones your darcs repository using darcs but does not
+install this plugin, then when they run a package building command
+they will not get all the right files. On the other hand if someone
+gets a source distribution that was created by "./setup.py sdist",
+then it will come with a list of all files, so they will not need
+darcs in order to build a distribution themselves.
+
+You can make sure that anyone who uses your setup.py file has this
+plugin by adding a `setup_requires` argument.
+
+ setup_requires=[]
+ # setuptools_darcs is required to produce complete distributions (such as with
+ # "sdist" or "bdist_egg"), unless there is a ${PKG}.egg-info/SOURCES.txt file
+ # present which contains a complete list of files that should be included in
+ # distributions.
+ # http://pypi.python.org/pypi/setuptools_darcs
+ setup_requires.append('setuptools_darcs >= 1.1.0')
+
+ setup(...,
+ setup_requires = setup_requires,
+ ...)
+
+
+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.