[Checkins] SVN: Sandbox/adamg/zope.wineggbuilder/trunk/src/zope/wineggbuilder/ seems to work, gotta test it live

Adam Groszer agroszer at gmail.com
Wed Jun 9 15:13:14 EDT 2010


Log message for revision 113302:
  seems to work, gotta test it live

Changed:
  U   Sandbox/adamg/zope.wineggbuilder/trunk/src/zope/wineggbuilder/README.txt
  U   Sandbox/adamg/zope.wineggbuilder/trunk/src/zope/wineggbuilder/build.py
  U   Sandbox/adamg/zope.wineggbuilder/trunk/src/zope/wineggbuilder/test.ini
  U   Sandbox/adamg/zope.wineggbuilder/trunk/src/zope/wineggbuilder/testing.py

-=-
Modified: Sandbox/adamg/zope.wineggbuilder/trunk/src/zope/wineggbuilder/README.txt
===================================================================
--- Sandbox/adamg/zope.wineggbuilder/trunk/src/zope/wineggbuilder/README.txt	2010-06-09 15:08:04 UTC (rev 113301)
+++ Sandbox/adamg/zope.wineggbuilder/trunk/src/zope/wineggbuilder/README.txt	2010-06-09 19:13:14 UTC (rev 113302)
@@ -1,3 +1,5 @@
+Building windows binary eggs
+----------------------------
 
 Install mocks:
 
@@ -17,16 +19,121 @@
     >>> oldURLgetter = build.Package.urlGetterKlass
     >>> build.Package.urlGetterKlass = testing.MockURLGetter()
 
+Let's see:
 
     >>> import os.path
     >>> testininame = os.path.join(os.path.dirname(build.__file__), 'test.ini')
-    >>> build.main([testininame, '-v'])
+    >>> build.main([testininame, '-v']) # doctest: +REPORT_NDIFF
+    INFO - loading configuration from /home/adi/zopefix/zope.wineggbuilder/trunk/src/zope/wineggbuilder/test.ini
+    INFO - Starting to build
+    DEBUG - getting http://pypi.python.org/simple/zope.proxy/
+    DEBUG - Got a file: zope.proxy-3.4.0-py2.4-win32.egg
+    DEBUG - Got a file: zope.proxy-3.4.0.tar.gz
+    DEBUG - Got a file: zope.proxy-3.4.2.zip
+    DEBUG - Got a file: zope.proxy-3.4.2-py2.6-win32.egg
+    DEBUG - Got a file: zope.proxy-3.4.1-py2.4-win32.egg
+    DEBUG - Got a file: zope.proxy-3.4.1.zip
+    DEBUG - Got a file: zope.proxy-3.4.2-py2.5-win32.egg
+    DEBUG - Got a file: zope.proxy-3.4.2-py2.4-win32.egg
+    DEBUG - Got a file: zope.proxy-3.4.0-py2.5-win32.egg
+    DEBUG - Got a file: zope.proxy-3.4.0.zip
+    DEBUG - Checking if build required for zope.proxy 3.4.0 py25_32
+    DEBUG - Build not required for zope.proxy 3.4.0 py25_32
+    DEBUG - Checking if build required for zope.proxy 3.4.0 py26_32
+    DEBUG - Build required for zope.proxy 3.4.0 py26_32
+    DEBUG - Command: svn co --non-interactive  svn://svn.zope.org/repos/main/zope.proxy/tags/3.4.0 /tmp/tmp...wineggbuilder
+    DEBUG - Output:
+    A    /tmp/tmpgqt2dHwineggbuilder/bootstrap.py
+    A    /tmp/tmpgqt2dHwineggbuilder/buildout.cfg
+    A    /tmp/tmpgqt2dHwineggbuilder/CHANGES.txt
+    A    /tmp/tmpgqt2dHwineggbuilder/setup.py
+    A    /tmp/tmpgqt2dHwineggbuilder/src
+    A    /tmp/tmpgqt2dHwineggbuilder/src/zope
+    A    /tmp/tmpgqt2dHwineggbuilder/src/zope/proxy
+    A    /tmp/tmpgqt2dHwineggbuilder/src/zope/proxy/_zope_proxy_proxy.c
+    A    /tmp/tmpgqt2dHwineggbuilder/src/zope/proxy/tests
+    A    /tmp/tmpgqt2dHwineggbuilder/src/zope/proxy/tests/__init__.py
+    A    /tmp/tmpgqt2dHwineggbuilder/src/zope/proxy/tests/test_proxy.py
+    A    /tmp/tmpgqt2dHwineggbuilder/src/zope/proxy/tests/test_decorator.py
+    A    /tmp/tmpgqt2dHwineggbuilder/src/zope/proxy/__init__.py
+    A    /tmp/tmpgqt2dHwineggbuilder/src/zope/proxy/proxy.h
+    A    /tmp/tmpgqt2dHwineggbuilder/src/zope/proxy/decorator.py
+    A    /tmp/tmpgqt2dHwineggbuilder/src/zope/proxy/interfaces.py
+    A    /tmp/tmpgqt2dHwineggbuilder/src/zope/__init__.py
+    A    /tmp/tmpgqt2dHwineggbuilder/README.txt
+     U   /tmp/tmpgqt2dHwineggbuilder
+    Checked out revision 113298.
+    INFO - Starting build for zope.proxy 3.4.0 py26_32
+    DEBUG - Running: call c:\program files\msvc\msvcvars.bat
+    c:\Python26\python setup.py build_ext --compiler msvc bdist_egg upload
+    In: /tmp/tmp...wineggbuilder
+    DEBUG - Command: /tmp/tmp...bat
+    DEBUG - Output:
+    <BLANKLINE>
+    <BLANKLINE>
+    DEBUG - Checking if build required for zope.proxy 3.4.1 py25_32
+    DEBUG - Build required for zope.proxy 3.4.1 py25_32
+    DEBUG - Checking if build required for zope.proxy 3.4.1 py26_32
+    DEBUG - Build required for zope.proxy 3.4.1 py26_32
+    DEBUG - Command: svn co --non-interactive  svn://svn.zope.org/repos/main/zope.proxy/tags/3.4.1 /tmp/tmp...wineggbuilder
+    DEBUG - Output:
+    A    /tmp/tmpKNdQxlwineggbuilder/bootstrap.py
+    A    /tmp/tmpKNdQxlwineggbuilder/buildout.cfg
+    A    /tmp/tmpKNdQxlwineggbuilder/CHANGES.txt
+    A    /tmp/tmpKNdQxlwineggbuilder/test.py
+    A    /tmp/tmpKNdQxlwineggbuilder/setup.py
+    A    /tmp/tmpKNdQxlwineggbuilder/src
+    A    /tmp/tmpKNdQxlwineggbuilder/src/zope
+    A    /tmp/tmpKNdQxlwineggbuilder/src/zope/proxy
+    A    /tmp/tmpKNdQxlwineggbuilder/src/zope/proxy/_zope_proxy_proxy.c
+    A    /tmp/tmpKNdQxlwineggbuilder/src/zope/proxy/tests
+    A    /tmp/tmpKNdQxlwineggbuilder/src/zope/proxy/tests/__init__.py
+    A    /tmp/tmpKNdQxlwineggbuilder/src/zope/proxy/tests/test_proxy.py
+    A    /tmp/tmpKNdQxlwineggbuilder/src/zope/proxy/tests/test_decorator.py
+    A    /tmp/tmpKNdQxlwineggbuilder/src/zope/proxy/DEPENDENCIES.cfg
+    A    /tmp/tmpKNdQxlwineggbuilder/src/zope/proxy/__init__.py
+    A    /tmp/tmpKNdQxlwineggbuilder/src/zope/proxy/proxy.h
+    A    /tmp/tmpKNdQxlwineggbuilder/src/zope/proxy/decorator.py
+    A    /tmp/tmpKNdQxlwineggbuilder/src/zope/proxy/interfaces.py
+    A    /tmp/tmpKNdQxlwineggbuilder/src/zope/proxy/SETUP.cfg
+    A    /tmp/tmpKNdQxlwineggbuilder/src/zope/__init__.py
+    A    /tmp/tmpKNdQxlwineggbuilder/README.txt
+     U   /tmp/tmpKNdQxlwineggbuilder
+    Checked out revision 113298.
+    INFO - Starting build for zope.proxy 3.4.1 py25_32
+    DEBUG - Running: set PATH=%PATH%;c:\mingw32\bin
+    c:\Python25\python setup.py build_ext --compiler mingw32 bdist_egg upload
+    In: /tmp/tmp...wineggbuilder
+    DEBUG - Command: /tmp/tmp...bat
+    DEBUG - Output:
+    <BLANKLINE>
+    <BLANKLINE>
+    INFO - Starting build for zope.proxy 3.4.1 py26_32
+    DEBUG - Running: call c:\program files\msvc\msvcvars.bat
+    c:\Python26\python setup.py build_ext --compiler msvc bdist_egg upload
+    In: /tmp/tmp...wineggbuilder
+    DEBUG - Command: /tmp/tmp...bat
+    DEBUG - Output:
+    <BLANKLINE>
+    <BLANKLINE>
+    DEBUG - Checking if build required for zope.proxy 3.4.2 py25_32
+    DEBUG - Build not required for zope.proxy 3.4.2 py25_32
+    DEBUG - Checking if build required for zope.proxy 3.4.2 py26_32
+    DEBUG - Build not required for zope.proxy 3.4.2 py26_32
+    INFO - Done.
 
+Let's see what was executed on mocks:
 
     >>> from pprint import pprint
     >>> pprint(testing.MOCKLOG)
+    ['package_releases: zope.proxy',
+     'urlget: http://pypi.python.org/simple/zope.proxy/',
+     'cmd: svn co --non-interactive  svn://svn.zope.org/repos/main/zope.proxy/tags/3.4.0 /tmp/tmp...wineggbuilder in None',
+     'cmd: /tmp/tmp...bat in /tmp/tmp...wineggbuilder',
+     'cmd: svn co --non-interactive  svn://svn.zope.org/repos/main/zope.proxy/tags/3.4.1 /tmp/tmp...wineggbuilder in None',
+     'cmd: /tmp/tmp...bat in /tmp/tmp...wineggbuilder',
+     'cmd: /tmp/tmp...bat in /tmp/tmp...wineggbuilder']
 
-
 Remove mocks:
 
     >>> base.SVN.commandKlass = oldSVNcommand

Modified: Sandbox/adamg/zope.wineggbuilder/trunk/src/zope/wineggbuilder/build.py
===================================================================
--- Sandbox/adamg/zope.wineggbuilder/trunk/src/zope/wineggbuilder/build.py	2010-06-09 15:08:04 UTC (rev 113301)
+++ Sandbox/adamg/zope.wineggbuilder/trunk/src/zope/wineggbuilder/build.py	2010-06-09 19:13:14 UTC (rev 113302)
@@ -47,33 +47,49 @@
 
     def checkBuild(self, package, version, files):
         """check whether build is required"""
+        LOGGER.debug('Checking if build required for %s %s %s',
+                     package.name, version, self.name)
         needBuild = True
         fe = self.fileEnding.lower()
         for file in files:
             if file.lower().endswith(fe):
                 needBuild = False
                 break
+
+        if needBuild:
+            LOGGER.debug('Build required for %s %s %s',
+                     package.name, version, self.name)
+        else:
+            LOGGER.debug('Build not required for %s %s %s',
+                     package.name, version, self.name)
         return needBuild
 
     def build(self, package, version, files, sourceFolder):
-        if self.checkBuild(package, version, files):
-            #we really need to build
-            #we have the source in sourceFolder
-            cmd = self.commandKlass(cwd=sourceFolder, exitOnError=False)
+        LOGGER.info('Starting build for %s %s %s',
+                    package.name, version, self.name)
+        #we really need to build
+        #we have the source in sourceFolder
+        cmd = self.commandKlass(cwd=sourceFolder, exitOnError=False)
 
-            if len(self.command.splitlines()) > 1:
-                #in case there are more lines we got to do .bat file
-                tmpfile = tempfile.NamedTemporaryFile(suffix='.bat')
-                command = tmpfile.name
-                tmpfile.write(self.command)
-                tmpfile.file.flush()
-            else:
-                command = self.command
+        if len(self.command.splitlines()) > 1:
+            #in case there are more lines we got to do .bat file
+            tmpfile = tempfile.NamedTemporaryFile(suffix='.bat')
+            command = tmpfile.name
+            tmpfile.write(self.command)
+            tmpfile.file.flush()
+        else:
+            command = self.command
 
-            cmd.do(command)
+        LOGGER.debug('Running: %s\nIn: %s', self.command, sourceFolder)
 
-            pass
+        #this ought to build and upload the egg
+        output = cmd.do(command)
 
+def versionToTuple(version):
+    parts = version.split('.')
+    parts = [int(v) for v in parts]
+    return tuple(parts)
+
 class Package(object):
     #hook to enable testing
     pypiKlass = base.PYPI
@@ -102,9 +118,25 @@
         versions = pypi.package_releases(self.name, show_hidden=True)
 
         #1.1 filter versions according to minVersion and maxVersion:
+        if self.minVersion:
+            minver = versionToTuple(self.minVersion)
+            versions = [v for v in versions
+                        if versionToTuple(v) >= minver]
 
+        if self.maxVersion:
+            maxver = versionToTuple(self.maxVersion)
+            versions = [v for v in versions
+                        if versionToTuple(v) <= maxver]
 
+        versions.sort()
+        if len(versions) == 0:
+            #nothing to do
+            LOGGER.info('%s no versions, nothing to do', self.name)
+            return
+
         #2 get file list of each version
+        LOGGER.debug('getting %s', self.pypiurl)
+
         verFiles = defaultdict(list)
         simple = self.urlGetterKlass().get(self.pypiurl)
         soup = BeautifulSoup.BeautifulSoup(simple)
@@ -117,19 +149,20 @@
                 version = m.group(1)
                 if version not in versions:
                     continue
+                LOGGER.debug('Got a file: %s', cntnt)
                 verFiles[version].append(cntnt)
 
         svn = self.svnKlass()
         for version in versions:
             #3 check whether we need a build
-            needBuild = False
+            needs = []
             for target in self.targets:
                 needBuild = target.checkBuild(
                     self, version, verFiles.get(version, []))
                 if needBuild:
-                    break
+                    needs.append(target)
 
-            if needBuild:
+            if needs:
                 tmpfolder = tempfile.mkdtemp('wineggbuilder')
                 try:
                     #3.1 svn co tag
@@ -137,17 +170,17 @@
                     svn.co(svnurl, tmpfolder)
 
                     #3.2 build missing
-                    for target in self.targets:
+                    for target in needs:
                         needBuild = target.build(
                             self, version, verFiles.get(version, []), tmpfolder)
                 finally:
                     #3.3 del temp folder
                     base.rmtree(tmpfolder)
 
-
-
 class Builder(object):
     def __init__(self, configFileName, options):
+        LOGGER.info('loading configuration from %s', configFileName)
+
         config = ConfigParser.RawConfigParser()
         config.read(configFileName)
 
@@ -160,10 +193,14 @@
             self.packages.append(Package(pkg, config, options, self.compilers))
 
     def runCLI(self):
+        LOGGER.info('Starting to build')
+
         for pkg in self.packages:
             pkg.build()
 
+        LOGGER.info('Done.')
 
+
 def main(args=None):
     # Make sure we get the arguments.
     if args is None:

Modified: Sandbox/adamg/zope.wineggbuilder/trunk/src/zope/wineggbuilder/test.ini
===================================================================
--- Sandbox/adamg/zope.wineggbuilder/trunk/src/zope/wineggbuilder/test.ini	2010-06-09 15:08:04 UTC (rev 113301)
+++ Sandbox/adamg/zope.wineggbuilder/trunk/src/zope/wineggbuilder/test.ini	2010-06-09 19:13:14 UTC (rev 113302)
@@ -26,6 +26,6 @@
 [zope.proxy]
 pypiurl = http://pypi.python.org/simple/zope.proxy/
 tagurl = svn://svn.zope.org/repos/main/zope.proxy/tags/
-minVersion =
-maxVersion =
-targets = py25_32 py26_32
\ No newline at end of file
+minVersion = 3.4
+maxVersion = 3.5
+targets = py25_32 py26_32

Modified: Sandbox/adamg/zope.wineggbuilder/trunk/src/zope/wineggbuilder/testing.py
===================================================================
--- Sandbox/adamg/zope.wineggbuilder/trunk/src/zope/wineggbuilder/testing.py	2010-06-09 15:08:04 UTC (rev 113301)
+++ Sandbox/adamg/zope.wineggbuilder/trunk/src/zope/wineggbuilder/testing.py	2010-06-09 19:13:14 UTC (rev 113302)
@@ -8,11 +8,15 @@
 import doctest
 import pprint
 
+from zope.wineggbuilder import base
+
+LOGGER = base.LOGGER
+
 MOCKLOG = []
 
 #format is [(expected cmd, result)]
 CommandIO = [
-#svn co --non-interactive  svn://svn.zope.org/repos/main/zope.proxy/tags/3.6.0 /tmp/tmpgqt2dHwineggbuilder
+#svn co --non-interactive  svn://svn.zope.org/repos/main/zope.proxy/tags/3.4.0 /tmp/tmpgqt2dHwineggbuilder
 """A    /tmp/tmpgqt2dHwineggbuilder/bootstrap.py
 A    /tmp/tmpgqt2dHwineggbuilder/buildout.cfg
 A    /tmp/tmpgqt2dHwineggbuilder/CHANGES.txt
@@ -33,6 +37,9 @@
 A    /tmp/tmpgqt2dHwineggbuilder/README.txt
  U   /tmp/tmpgqt2dHwineggbuilder
 Checked out revision 113298.""",
+#cmd: /tmp/tmp9pHarC.bat in /tmp/tmpWIuwvGwineggbuilder
+"""
+""",
 #svn co --non-interactive  svn://svn.zope.org/repos/main/zope.proxy/tags/3.4.1 /tmp/tmpKNdQxlwineggbuilder
 """A    /tmp/tmpKNdQxlwineggbuilder/bootstrap.py
 A    /tmp/tmpKNdQxlwineggbuilder/buildout.cfg
@@ -57,12 +64,11 @@
 A    /tmp/tmpKNdQxlwineggbuilder/README.txt
  U   /tmp/tmpKNdQxlwineggbuilder
 Checked out revision 113298.""",
-'svn co',
-'svn co',
-'bat',
-'bat',
-'bat',
-'bat',
+#cmd: /tmp/tmpXhyppL.bat in /tmp/tmpIK6VMJwineggbuilder
+"""
+""",
+"""
+""",
 ]
 
 class MockCommand(object):
@@ -79,12 +85,16 @@
         global MOCKLOG
         MOCKLOG.append('cmd: %s in %s' % (cmd, self.cwd))
 
+        LOGGER.debug('Command: ' + cmd)
+
         global CommandIO
         next = CommandIO.pop(0)
 
         if isinstance(next, Exception):
             raise next
 
+        LOGGER.debug('Output: \n%s' % next)
+
         return next
 
 PYPI_RELEASES = {
@@ -142,7 +152,6 @@
 <a href="../../packages/2.6/z/zope.proxy/zope.proxy-3.6.0-py2.6-win32.egg#md5=6984986850f74abdb3cd0c738579cb16">zope.proxy-3.6.0-py2.6-win32.egg</a><br/>
 <a href="../../packages/source/z/zope.proxy/zope.proxy-3.4.0.zip#md5=3fef9f29c8b920c9f20aa3a2f92afa70">zope.proxy-3.4.0.zip</a><br/>
 <a href="../../packages/2.4/z/zope.proxy/zope.proxy-3.3.0-py2.4-win32.egg#md5=554d10d694d7e5ea9468d88c1c078387">zope.proxy-3.3.0-py2.4-win32.egg</a><br/>
-<a href="../../packages/2.5/z/zope.proxy/zope.proxy-3.4.1-py2.5-win32.egg#md5=82c2d44d956ceaa1c838bf23be18fe95">zope.proxy-3.4.1-py2.5-win32.egg</a><br/>
 <a href="http://svn.zope.org/zope.proxy" rel="homepage">3.3.0 home_page</a><br/>
 <a href="http://docs.python.org/ref/sequence-methods.html">http://docs.python.org/ref/sequence-methods.html</a><br/>
 </body></html>""",



More information about the checkins mailing list