[Python-checkins] commit of r41396 - in sandbox/trunk/setuptools: . setuptools/command

phillip.eby@python.org phillip.eby at python.org
Fri Nov 4 06:38:25 CET 2005


Author: phillip.eby
Date: Fri Nov  4 06:38:22 2005
New Revision: 41396

Modified:
   sandbox/trunk/setuptools/setuptools.txt
   sandbox/trunk/setuptools/setuptools/command/egg_info.py
Log:
Made ``egg_info --tag-svn-revision`` fall back to extracting the 
revision number from ``PKG-INFO`` in case it is being run on a
source distribution of a snapshot taken from a Subversion-based
project.  That is, if a project builds an sdist with
--tag-svn-revision in setup.cfg, then the built sdist will
create binaries with the same version number as the checkout
that was used to create the sdist.


Modified: sandbox/trunk/setuptools/setuptools.txt
==============================================================================
--- sandbox/trunk/setuptools/setuptools.txt	(original)
+++ sandbox/trunk/setuptools/setuptools.txt	Fri Nov  4 06:38:22 2005
@@ -1471,10 +1471,11 @@
     Append NAME to the project's version string.  Due to the way setuptools
     processes "pre-release" version suffixes beginning with the letters "a"
     through "e" (like "alpha", "beta", and "candidate"), you will usually want
-    to use a tag like "build" or "dev", as this will cause the version number
+    to use a tag like ".build" or ".dev", as this will cause the version number
     to be considered *lower* than the project's default version.  (If you
     want to make the version number *higher* than the default version, you can
-    always leave off --tag-build and use one or both of the following options.)
+    always leave off --tag-build and then use one or both of the following
+    options.)
 
 ``--tag-svn-revision, -r``
     If the current directory is a Subversion checkout (i.e. has a ``.svn``
@@ -1483,6 +1484,16 @@
     modification to the current directory, as obtained from the ``svn info``
     command.
 
+    If the current directory is not a Subversion checkout, the command will
+    look for a ``PKG-INFO`` file instead, and try to find the revision number
+    from that, by looking for a "-rNNNN" string at the end of the version
+    number.  (This is so that building a package from a source distribution of
+    a Subversion snapshot will produce a binary with the correct version
+    number.)
+
+    If there is no ``PKG-INFO`` file, or the version number contained therein
+    does not end with ``-r`` and a number, then ``-r0`` is used.
+
 ``--tag-date, -d``
     Add a date stamp of the form "-YYYYMMDD" (e.g. "-20050528") to the
     project's version number.
@@ -1951,6 +1962,10 @@
  * Made ``develop`` command accept all the same options as ``easy_install``,
    and use the ``easy_install`` command's configuration settings as defaults.
 
+ * Made ``egg_info --tag-svn-revision`` fall back to extracting the revision
+   number from ``PKG-INFO`` in case it is being run on a source distribution of
+   a snapshot taken from a Subversion-based project.
+
 0.6a5
  * Fixed missing gui/cli .exe files in distribution.  Fixed bugs in tests.
  

Modified: sandbox/trunk/setuptools/setuptools/command/egg_info.py
==============================================================================
--- sandbox/trunk/setuptools/setuptools/command/egg_info.py	(original)
+++ sandbox/trunk/setuptools/setuptools/command/egg_info.py	Fri Nov  4 06:38:22 2005
@@ -160,7 +160,7 @@
                 continue    # not part of the same svn tree, skip it
             for match in revre.finditer(data):
                 revision = max(revision, int(match.group(1)))
-        return str(revision)
+        return str(revision or get_pkg_info_revision())
 
 def write_pkg_info(cmd, basename, filename):
     log.info("writing %s", filename)
@@ -226,17 +226,17 @@
 
     cmd.write_or_delete_file('entry points', filename, data)
 
-
-
-
-
-
-
-
-
-
-
-
+def get_pkg_info_revision():
+    # See if we can get a -r### off of PKG-INFO, in case this is an sdist of
+    # a subversion revision
+    #
+    if os.path.exists('PKG-INFO'):
+        f = open('PKG-INFO','rU')
+        for line in f:
+            match = re.match(r"Version:.*-r(\d+)\s*$", line)
+            if match:
+                return int(match.group(1))
+    return 0
 
 
 


More information about the Python-checkins mailing list