From 680e33ef9119320b7cb217a7a54940a554747636 Mon Sep 17 00:00:00 2001
From: Zooko O'Whielacronx <zooko@zooko.com>
Date: Sat, 13 Nov 2010 23:39:54 -0800
Subject: [PATCH] setup: upgrade bundled darcsver from 1.6.3 to 1.7.0 ref
 #1259, we're going to use its 'versionfiles' setup() keyword argument to
 specify where to write the version file. Remember, we have to bundle darcsver
 to work-around
 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

---
 .../EGG-INFO/PKG-INFO                         |  2 +-
 .../EGG-INFO/SOURCES.txt                      |  0
 .../EGG-INFO/dependency_links.txt             |  0
 .../EGG-INFO/entry_points.txt                 |  0
 .../EGG-INFO/not-zip-safe                     |  0
 .../EGG-INFO/top_level.txt                    |  0
 .../darcsver/__init__.py                      |  0
 .../darcsver/_version.py                      |  2 +-
 .../darcsver/darcsvermodule.py                | 68 +++++++++++--------
 .../darcsver/setuptools_command.py            | 16 +++--
 .../scripts/__init__.py                       |  0
 .../scripts/darcsverscript.py                 |  0
 .../share/doc/python-darcsver/README.txt      |  0
 13 files changed, 50 insertions(+), 38 deletions(-)
 rename {darcsver-1.6.3.egg => darcsver-1.7.0.egg}/EGG-INFO/PKG-INFO (99%)
 rename {darcsver-1.6.3.egg => darcsver-1.7.0.egg}/EGG-INFO/SOURCES.txt (100%)
 rename {darcsver-1.6.3.egg => darcsver-1.7.0.egg}/EGG-INFO/dependency_links.txt (100%)
 rename {darcsver-1.6.3.egg => darcsver-1.7.0.egg}/EGG-INFO/entry_points.txt (100%)
 rename {darcsver-1.6.3.egg => darcsver-1.7.0.egg}/EGG-INFO/not-zip-safe (100%)
 rename {darcsver-1.6.3.egg => darcsver-1.7.0.egg}/EGG-INFO/top_level.txt (100%)
 rename {darcsver-1.6.3.egg => darcsver-1.7.0.egg}/darcsver/__init__.py (100%)
 rename {darcsver-1.6.3.egg => darcsver-1.7.0.egg}/darcsver/_version.py (98%)
 rename {darcsver-1.6.3.egg => darcsver-1.7.0.egg}/darcsver/darcsvermodule.py (80%)
 rename {darcsver-1.6.3.egg => darcsver-1.7.0.egg}/darcsver/setuptools_command.py (87%)
 rename {darcsver-1.6.3.egg => darcsver-1.7.0.egg}/scripts/__init__.py (100%)
 rename {darcsver-1.6.3.egg => darcsver-1.7.0.egg}/scripts/darcsverscript.py (100%)
 rename {darcsver-1.6.3.egg => darcsver-1.7.0.egg}/share/doc/python-darcsver/README.txt (100%)

diff --git a/darcsver-1.6.3.egg/EGG-INFO/PKG-INFO b/darcsver-1.7.0.egg/EGG-INFO/PKG-INFO
similarity index 99%
rename from darcsver-1.6.3.egg/EGG-INFO/PKG-INFO
rename to darcsver-1.7.0.egg/EGG-INFO/PKG-INFO
index 0bee80ff..cf6a8e75 100644
--- a/darcsver-1.6.3.egg/EGG-INFO/PKG-INFO
+++ b/darcsver-1.7.0.egg/EGG-INFO/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: darcsver
-Version: 1.6.3
+Version: 1.7.0
 Summary: generate a version number from darcs history
 Home-page: http://tahoe-lafs.org/trac/darcsver
 Author: Zooko O'Whielacronx
diff --git a/darcsver-1.6.3.egg/EGG-INFO/SOURCES.txt b/darcsver-1.7.0.egg/EGG-INFO/SOURCES.txt
similarity index 100%
rename from darcsver-1.6.3.egg/EGG-INFO/SOURCES.txt
rename to darcsver-1.7.0.egg/EGG-INFO/SOURCES.txt
diff --git a/darcsver-1.6.3.egg/EGG-INFO/dependency_links.txt b/darcsver-1.7.0.egg/EGG-INFO/dependency_links.txt
similarity index 100%
rename from darcsver-1.6.3.egg/EGG-INFO/dependency_links.txt
rename to darcsver-1.7.0.egg/EGG-INFO/dependency_links.txt
diff --git a/darcsver-1.6.3.egg/EGG-INFO/entry_points.txt b/darcsver-1.7.0.egg/EGG-INFO/entry_points.txt
similarity index 100%
rename from darcsver-1.6.3.egg/EGG-INFO/entry_points.txt
rename to darcsver-1.7.0.egg/EGG-INFO/entry_points.txt
diff --git a/darcsver-1.6.3.egg/EGG-INFO/not-zip-safe b/darcsver-1.7.0.egg/EGG-INFO/not-zip-safe
similarity index 100%
rename from darcsver-1.6.3.egg/EGG-INFO/not-zip-safe
rename to darcsver-1.7.0.egg/EGG-INFO/not-zip-safe
diff --git a/darcsver-1.6.3.egg/EGG-INFO/top_level.txt b/darcsver-1.7.0.egg/EGG-INFO/top_level.txt
similarity index 100%
rename from darcsver-1.6.3.egg/EGG-INFO/top_level.txt
rename to darcsver-1.7.0.egg/EGG-INFO/top_level.txt
diff --git a/darcsver-1.6.3.egg/darcsver/__init__.py b/darcsver-1.7.0.egg/darcsver/__init__.py
similarity index 100%
rename from darcsver-1.6.3.egg/darcsver/__init__.py
rename to darcsver-1.7.0.egg/darcsver/__init__.py
diff --git a/darcsver-1.6.3.egg/darcsver/_version.py b/darcsver-1.7.0.egg/darcsver/_version.py
similarity index 98%
rename from darcsver-1.6.3.egg/darcsver/_version.py
rename to darcsver-1.7.0.egg/darcsver/_version.py
index 9d41f7dd..a3b174f3 100644
--- a/darcsver-1.6.3.egg/darcsver/_version.py
+++ b/darcsver-1.7.0.egg/darcsver/_version.py
@@ -6,7 +6,7 @@
 # pyutil.version_class for a description of what the different fields mean.
 
 __pkgname__ = "darcsver"
-verstr = "1.6.3"
+verstr = "1.7.0"
 try:
     from pyutil.version_class import Version as pyutil_Version
     __version__ = pyutil_Version(verstr)
diff --git a/darcsver-1.6.3.egg/darcsver/darcsvermodule.py b/darcsver-1.7.0.egg/darcsver/darcsvermodule.py
similarity index 80%
rename from darcsver-1.6.3.egg/darcsver/darcsvermodule.py
rename to darcsver-1.7.0.egg/darcsver/darcsvermodule.py
index 4f03572e..8f00205b 100644
--- a/darcsver-1.6.3.egg/darcsver/darcsvermodule.py
+++ b/darcsver-1.7.0.egg/darcsver/darcsvermodule.py
@@ -78,6 +78,7 @@ def update(pkgname, verfilename, revision_number=False, loud=False, abort_if_sna
         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:
@@ -105,7 +106,6 @@ def update(pkgname, verfilename, revision_number=False, loud=False, abort_if_sna
         cmd = ["changes", "--xml-output"]
         if not revision_number:
             cmd.append("--from-tag=^%s" % (pkgname,))
-        errput = None
         try:
             p = subprocess.Popen(["darcs"] + cmd, stdout=PIPE, stderr=PIPE, universal_newlines=True)
         except OSError:
@@ -115,6 +115,7 @@ def update(pkgname, verfilename, revision_number=False, loud=False, abort_if_sna
             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))
@@ -128,48 +129,55 @@ def update(pkgname, verfilename, revision_number=False, loud=False, abort_if_sna
     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("</changelog>")+len("</changelog>")
-    output = output[:endi]
-    doc = xml.dom.minidom.parseString(output)
-
-    changelog = doc.getElementsByTagName("changelog")[0]
-    patches = changelog.getElementsByTagName("patch")
-    regexstr = "^TAG %s-(%s)$" % (pkgname, VERSION_BASE_RE_STR)
-    version_re = re.compile(regexstr)
-    last_tag = None
-    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
+    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:
-        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
+        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 (0, None)
+            return (-1, None)
 
     if revision_number:
         if count_since_last_patch:
diff --git a/darcsver-1.6.3.egg/darcsver/setuptools_command.py b/darcsver-1.7.0.egg/darcsver/setuptools_command.py
similarity index 87%
rename from darcsver-1.6.3.egg/darcsver/setuptools_command.py
rename to darcsver-1.7.0.egg/darcsver/setuptools_command.py
index 44fd50c7..e90db85e 100644
--- a/darcsver-1.6.3.egg/darcsver/setuptools_command.py
+++ b/darcsver-1.7.0.egg/darcsver/setuptools_command.py
@@ -46,14 +46,14 @@ 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)"),
-        ('version-file', None, "path to file into which the version number should be written (defaults to the package directory's _version.py)"),
+        ('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.version_file = None
+        self.filename = None
         self.count_all_patches = None
         self.abort_if_snapshot = None
 
@@ -61,10 +61,12 @@ class DarcsVer(setuptools.Command):
         if self.project_name is None:
             self.project_name = self.distribution.get_name()
 
-        # If the user passed --version-file on the cmdline, override
+        # If the user passed --filename on the cmdline, override
         # the setup.py's versionfiles argument.
-        if self.version_file is not None:
-            self.distribution.versionfiles = [self.version_file]
+        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
@@ -112,5 +114,7 @@ class DarcsVer(setuptools.Command):
         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)
-        self.distribution.metadata.version = verstr
+        if rc == 0:
+            self.distribution.metadata.version = verstr
diff --git a/darcsver-1.6.3.egg/scripts/__init__.py b/darcsver-1.7.0.egg/scripts/__init__.py
similarity index 100%
rename from darcsver-1.6.3.egg/scripts/__init__.py
rename to darcsver-1.7.0.egg/scripts/__init__.py
diff --git a/darcsver-1.6.3.egg/scripts/darcsverscript.py b/darcsver-1.7.0.egg/scripts/darcsverscript.py
similarity index 100%
rename from darcsver-1.6.3.egg/scripts/darcsverscript.py
rename to darcsver-1.7.0.egg/scripts/darcsverscript.py
diff --git a/darcsver-1.6.3.egg/share/doc/python-darcsver/README.txt b/darcsver-1.7.0.egg/share/doc/python-darcsver/README.txt
similarity index 100%
rename from darcsver-1.6.3.egg/share/doc/python-darcsver/README.txt
rename to darcsver-1.7.0.egg/share/doc/python-darcsver/README.txt
-- 
2.45.2