[Checkins] SVN: zc.buildout/trunk/ Added missing for controlling upgrades by specifying versions for

Jim Fulton jim at zope.com
Sun Oct 8 16:43:42 EDT 2006


Log message for revision 70580:
  Added missing for controlling upgrades by specifying versions for
  setuptools and zc.buildout.
  
  Don't upgrade if the buildout command is non-local.
  

Changed:
  U   zc.buildout/trunk/CHANGES.txt
  U   zc.buildout/trunk/src/zc/buildout/buildout.py
  U   zc.buildout/trunk/src/zc/buildout/tests.py
  U   zc.buildout/trunk/src/zc/buildout/update.txt

-=-
Modified: zc.buildout/trunk/CHANGES.txt
===================================================================
--- zc.buildout/trunk/CHANGES.txt	2006-10-08 20:43:39 UTC (rev 70579)
+++ zc.buildout/trunk/CHANGES.txt	2006-10-08 20:43:41 UTC (rev 70580)
@@ -44,6 +44,12 @@
 - Egg links weren't removed when corresponding entries were removed
   from develop sections.
 
+- Running a non-local buildout command (one not installed in the
+  buildout) ket to a hang if there were new versions of zc.buildout or
+  setuptools were available.  Now we issue a warning and don't
+  upgrade.
+
+
 1.0.0b9 (2006-10-02)
 ====================
 

Modified: zc.buildout/trunk/src/zc/buildout/buildout.py
===================================================================
--- zc.buildout/trunk/src/zc/buildout/buildout.py	2006-10-08 20:43:39 UTC (rev 70579)
+++ zc.buildout/trunk/src/zc/buildout/buildout.py	2006-10-08 20:43:41 UTC (rev 70580)
@@ -659,6 +659,14 @@
         if not upgraded:
             return
 
+        if (os.path.abspath(sys.argv[0])
+            != os.path.join(os.path.abspath(self['buildout']['bin-directory']),
+                            'buildout')
+            ):
+            self._logger.warn("Not upgrading because not running a local "
+                              "buildout command")
+            return
+
         if sys.platform == 'win32' and not self.__windows_restart:
             args = map(zc.buildout.easy_install._safe_arg, sys.argv)
             args.insert(1, '-W')

Modified: zc.buildout/trunk/src/zc/buildout/tests.py
===================================================================
--- zc.buildout/trunk/src/zc/buildout/tests.py	2006-10-08 20:43:39 UTC (rev 70579)
+++ zc.buildout/trunk/src/zc/buildout/tests.py	2006-10-08 20:43:41 UTC (rev 70580)
@@ -719,7 +719,9 @@
 
     os.mkdir(os.path.join(new_releases, 'zc.buildout'))
     os.mkdir(os.path.join(new_releases, 'setuptools'))
+
     
+    
 normalize_bang = (
     re.compile(re.escape('#!'+sys.executable)),
     '#!/usr/local/bin/python2.4',
@@ -757,6 +759,12 @@
                zc.buildout.testing.normalize_script,
                zc.buildout.testing.normalize_egg_py,
                normalize_bang,
+               (re.compile('99[.]99'), 'NINETYNINE.NINETYNINE'),
+               (re.compile('(zc.buildout|setuptools)-\d+[.]\d+\S*'
+                           '-py\d.\d.egg'),
+                '\\1.egg'),
+               (re.compile('(zc.buildout|setuptools)( version)? \d+[.]\d+\S*'),
+                '\\1 V.V'),
                ])
             ),
         

Modified: zc.buildout/trunk/src/zc/buildout/update.txt
===================================================================
--- zc.buildout/trunk/src/zc/buildout/update.txt	2006-10-08 20:43:39 UTC (rev 70579)
+++ zc.buildout/trunk/src/zc/buildout/update.txt	2006-10-08 20:43:41 UTC (rev 70580)
@@ -26,7 +26,7 @@
     ... recipe = showversions
     ... """ % dict(new_releases=new_releases))
 
-We'll also include a recipe that echos the version sof setuptools and
+We'll also include a recipe that echos the versions of setuptools and
 zc.buildout used:
 
     >>> mkdir(sample_buildout, 'showversions')
@@ -45,6 +45,7 @@
     ...             req = pkg_resources.Requirement.parse(project)
     ...             print project, pkg_resources.working_set.find(req).version
     ...         return ()
+    ...     update = install
     ... """)
 
 
@@ -93,3 +94,84 @@
     <BLANKLINE>
     if __name__ == '__main__':
         zc.buildout.buildout.main()
+
+There are a number of cases in which the updates don't happen.
+Let's recreate the sample buildout. One case is the one in which we
+specify versions of zc.buildout and setuptools for which the don't
+match. If we update out configuration file to specify an older
+version:
+
+    >>> write(sample_buildout, 'buildout.cfg',
+    ... """
+    ... [buildout]
+    ... find-links = %(new_releases)s
+    ... index = %(new_releases)s
+    ... parts = show-versions
+    ... develop = showversions
+    ... zc.buildout-version = < 99
+    ... setuptools-version = < 99
+    ... 
+    ... [show-versions]
+    ... recipe = showversions
+    ... """ % dict(new_releases=new_releases))
+
+We'll actually "upgrade" to an earlier version.
+
+    >>> print system(buildout),
+    buildout: Upgraded:
+      zc.buildout version 1.0.0,
+      setuptools version 0.6;
+    restarting.
+    buildout: Develop: /sample-buildout/showversions/setup.py
+    buildout: Updating show-versions
+    zc.buildout 1.0.0
+    setuptools 0.6
+
+We won't upgrade in offline mode:
+
+    >>> write(sample_buildout, 'buildout.cfg',
+    ... """
+    ... [buildout]
+    ... find-links = %(new_releases)s
+    ... index = %(new_releases)s
+    ... parts = show-versions
+    ... develop = showversions
+    ... offline = true
+    ... 
+    ... [show-versions]
+    ... recipe = showversions
+    ... """ % dict(new_releases=new_releases))
+
+    >>> print system(buildout),
+    buildout: Develop: /sample-buildout/showversions/setup.py
+    buildout: Updating show-versions
+    zc.buildout 1.0.0
+    setuptools 0.6
+ 
+We also won't upgrade if the buildout script bing run isn't in the
+buildouts bin directory.  To see this we'll create a new buildout
+directory:
+
+    >>> sample_buildout2 = tmpdir('sample_buildout2')
+    >>> write(sample_buildout2, 'buildout.cfg',
+    ... """
+    ... [buildout]
+    ... find-links = %(new_releases)s
+    ... index = %(new_releases)s
+    ... parts = 
+    ... """ % dict(new_releases=new_releases))
+    
+    >>> cd(sample_buildout2)
+    >>> print system(buildout),
+    buildout: Creating directory /sample_buildout2/bin
+    buildout: Creating directory /sample_buildout2/parts
+    buildout: Creating directory /sample_buildout2/eggs
+    buildout: Creating directory /sample_buildout2/develop-eggs
+    zc.buildout.easy_install: Getting new distribution for zc.buildout
+    zc.buildout.easy_install: Got zc.buildout 99.99
+    zc.buildout.easy_install: Getting new distribution for setuptools
+    zc.buildout.easy_install: Got setuptools 99.99
+    buildout: Not upgrading because not running a local buildout command
+
+    >>> ls('bin')
+



More information about the Checkins mailing list