[pypy-svn] pypy release-1.4.1: Copy the trunk's directory "pypy/tool/release" to this branch.

arigo commits-noreply at bitbucket.org
Tue Dec 28 20:59:08 CET 2010


Author: Armin Rigo <arigo at tunes.org>
Branch: release-1.4.1
Changeset: r40259:eadbef5f39ca
Date: 2010-12-28 20:58 +0100
http://bitbucket.org/pypy/pypy/changeset/eadbef5f39ca/

Log:	Copy the trunk's directory "pypy/tool/release" to this branch.

diff --git a/pypy/tool/release/package.py b/pypy/tool/release/package.py
--- a/pypy/tool/release/package.py
+++ b/pypy/tool/release/package.py
@@ -19,7 +19,7 @@
 
 if sys.version_info < (2,6): py.test.skip("requires 2.6 so far")
 
-USE_TARFILE_MODULE = sys.platform == 'win32'
+USE_ZIPFILE_MODULE = sys.platform == 'win32'
 
 def ignore_patterns(*patterns):
     """Function that can be used as copytree() ignore parameter.
@@ -40,14 +40,26 @@
             copy_to_dir = None, override_pypy_c = None):
     basedir = py.path.local(basedir)
     if sys.platform == 'win32':
-        basename = 'pypy-c.exe'
+        # Can't rename a DLL
+        if override_pypy_c is not None:
+            rename_pypy_c = py.path.local(override_pypy_c).purebasename
+            pypy_c_dir = py.path.local(override_pypy_c).dirname
+        else:
+            pypy_c_dir = basedir.join('pypy', 'translator', 'goal')
+        pypy_c = pypy_c_dir.join(rename_pypy_c + '.exe')
+        libpypy_c = pypy_c_dir.join('lib' + rename_pypy_c + '.dll')
+        binaries = [(pypy_c, pypy_c.basename),
+                    (libpypy_c, libpypy_c.basename),
+                    (pypy_c_dir.join('libexpat.dll'), 'libexpat.dll')]
     else:
         basename = 'pypy-c'
-    if override_pypy_c is None:
-        pypy_c = basedir.join('pypy', 'translator', 'goal', basename)
-    else:
-        pypy_c = py.path.local(override_pypy_c)
+        if override_pypy_c is None:
+            pypy_c = basedir.join('pypy', 'translator', 'goal', basename)
+        else:
+            pypy_c = py.path.local(override_pypy_c)
+        binaries = [(pypy_c, rename_pypy_c)]
     if not pypy_c.check():
+        print pypy_c
         raise PyPyCNotFound('Please compile pypy first, using translate.py')
     builddir = udir.ensure("build", dir=True)
     pypydir = builddir.ensure(name, dir=True)
@@ -72,28 +84,47 @@
     spdir = pypydir.ensure('site-packages', dir=True)
     shutil.copy(str(basedir.join('site-packages', 'README')), str(spdir))
     #
-    pypydir.ensure('bin', dir=True)
-    archive_pypy_c = pypydir.join('bin', rename_pypy_c)
-    shutil.copy(str(pypy_c), str(archive_pypy_c))
+    if sys.platform == 'win32':
+        bindir = pypydir
+    else:
+        bindir = pypydir.join('bin')
+        bindir.ensure(dir=True)
+    for source, target in binaries:
+        archive = bindir.join(target)
+        shutil.copy(str(source), str(archive))
     old_dir = os.getcwd()
     try:
         os.chdir(str(builddir))
-        os.system("strip -x " + str(archive_pypy_c))    # ignore errors
-        if USE_TARFILE_MODULE:
-            import tarfile
-            tf = tarfile.open(str(builddir.join(name + '.tar.bz2')), 'w:bz2')
-            tf.add(name)
-            tf.close()
+        #
+        # 'strip' fun: see https://codespeak.net/issue/pypy-dev/issue587
+        for source, target in binaries:
+            if sys.platform == 'win32':
+                pass
+            elif sys.platform == 'darwin':
+                os.system("strip -x " + str(bindir.join(target)))    # ignore errors
+            else:
+                os.system("strip " + str(bindir.join(target)))    # ignore errors
+        #
+        if USE_ZIPFILE_MODULE:
+            import zipfile
+            archive = str(builddir.join(name + '.zip'))
+            zf = zipfile.ZipFile(archive, 'w',
+                                 compression=zipfile.ZIP_DEFLATED)
+            for (dirpath, dirnames, filenames) in os.walk(name):
+                for fnname in filenames:
+                    filename = os.path.join(dirpath, fnname)
+                    zf.write(filename)
+            zf.close()
         else:
-            e = os.system('tar cvjf ' + str(builddir.join(name + '.tar.bz2')) +
-                          " " + name)
+            archive = str(builddir.join(name + '.tar.bz2'))
+            e = os.system('tar cvjf ' + archive + " " + name)
             if e:
                 raise OSError('"tar" returned exit status %r' % e)
     finally:
         os.chdir(old_dir)
     if copy_to_dir is not None:
-        print "Copying to %s" % copy_to_dir
-        shutil.copy(str(builddir.join(name + '.tar.bz2')), copy_to_dir)
+        print "Copying %s to %s" % (archive, copy_to_dir)
+        shutil.copy(archive, str(copy_to_dir))
     return builddir # for tests
 
 if __name__ == '__main__':

diff --git a/pypy/tool/win32-build.bat b/pypy/tool/win32-build.bat
deleted file mode 100644
--- a/pypy/tool/win32-build.bat
+++ /dev/null
@@ -1,38 +0,0 @@
-setlocal
-
-set ROOTDIR=%~dp0..\..
-cd %ROOTDIR%
-
-set ZIPEXE=zip
-set PYTHON=c:\python26\python.exe
-set TRANSLATE=pypy/translator/goal/translate.py
-set TRANSLATEOPTS=--batch
-set TARGET=pypy/translator/goal/targetpypystandalone
-set TARGETOPTS=
-
-copy /y ..\expat-2.0.1\win32\bin\release\libexpat.dll .
-
-call :make_pypy pypy-1.2-win32.zip           pypy.exe           -Ojit
-call :make_pypy pypy-1.2-win32-nojit.zip     pypy-nojit.exe
-call :make_pypy pypy-1.2-win32-stackless.zip pypy-stackless.exe --stackless
-REM call :make_pypy pypy-1.2-win32-sandbox.zip   pypy-sandbox.exe   --sandbox
-
-goto :EOF
-
-REM =========================================
-:make_pypy
-REM make_pypy subroutine
-REM %1 is the zip filename
-REM %2 is pypy.exe filename
-REM %3 and others are the translation options
-
-set ZIPFILE=%1
-set PYPYEXE=%2
-set EXTRAOPTS=%3 %4 %5 %6 %7 %8 %9
-
-%PYTHON% %TRANSLATE% --output=%PYPYEXE% %TRANSLATEOPTS% %EXTRAOPTS% %TARGET% %TARGETOPTS%
-del %ZIPFILE%
-del /s pypy\lib\*.pyc lib-python\*.pyc
-%ZIPEXE%    %ZIPFILE% %PYPYEXE% *.dll
-%ZIPEXE% -r %ZIPFILE% pypy\lib lib-python
-%ZIPEXE% -d %ZIPFILE% lib-python\2.5.2\plat-*

diff --git a/pypy/tool/release/test/test_package.py b/pypy/tool/release/test/test_package.py
--- a/pypy/tool/release/test/test_package.py
+++ b/pypy/tool/release/test/test_package.py
@@ -1,38 +1,56 @@
 
 import py
 from pypy.tool.autopath import pypydir
-from pypy.tool.release.package import package
+from pypy.tool.release import package
 from pypy.module.sys.version import  CPYTHON_VERSION
-import tarfile, os
+import tarfile, zipfile, os, sys
 
 def test_dir_structure(test='test'):
     # make sure we have sort of pypy-c
-    pypy_c = py.path.local(pypydir).join('translator', 'goal', 'pypy-c')
+    if sys.platform == 'win32':
+        basename = 'pypy-c.exe'
+        rename_pypy_c = 'pypy-c'
+    else:
+        basename = 'pypy-c'
+        rename_pypy_c = 'pypy'
+    pypy_c = py.path.local(pypydir).join('translator', 'goal', basename)
     if not pypy_c.check():
         os.system("echo faked_pypy_c> %s" % (pypy_c,))
         fake_pypy_c = True
     else:
         fake_pypy_c = False
     try:
-        builddir = package(py.path.local(pypydir).dirpath(), test)
+        builddir = package.package(py.path.local(pypydir).dirpath(), test,
+                                   rename_pypy_c)
         prefix = builddir.join(test)
         cpyver = '%d.%d.%d' % CPYTHON_VERSION[:3]
         assert prefix.join('lib-python', cpyver, 'test').check()
-        assert prefix.join('bin', 'pypy').check()
+        if sys.platform == 'win32':
+            assert prefix.join('pypy-c.exe').check()
+        else:
+            assert prefix.join('bin', 'pypy').check()
         assert prefix.join('lib_pypy', 'syslog.py').check()
         assert not prefix.join('lib_pypy', 'py').check()
         assert not prefix.join('lib_pypy', 'ctypes_configure').check()
         assert prefix.join('LICENSE').check()
         assert prefix.join('README').check()
-        th = tarfile.open(str(builddir.join('%s.tar.bz2' % test)))
-        assert th.getmember('%s/lib_pypy/syslog.py' % test)
+        if package.USE_ZIPFILE_MODULE:
+            zh = zipfile.ZipFile(str(builddir.join('%s.zip' % test)))
+            assert zh.open('%s/lib_pypy/syslog.py' % test)
+        else:
+            th = tarfile.open(str(builddir.join('%s.tar.bz2' % test)))
+            assert th.getmember('%s/lib_pypy/syslog.py' % test)
 
         # the headers file could be not there, because they are copied into
         # trunk/include only during translation
         includedir = py.path.local(pypydir).dirpath().join('include')
         def check_include(name):
             if includedir.join(name).check(file=True):
-                assert th.getmember('%s/include/%s' % (test, name))
+                member = '%s/include/%s' % (test, name)
+                if package.USE_ZIPFILE_MODULE:
+                    assert zh.open(member)
+                else:
+                    assert th.getmember(member)
         check_include('Python.h')
         check_include('modsupport.inl')
         check_include('pypy_decl.h')
@@ -40,11 +58,11 @@
         if fake_pypy_c:
             pypy_c.remove()
 
-def test_with_tarfile_module():
+def test_with_zipfile_module():
     from pypy.tool.release import package
-    prev = package.USE_TARFILE_MODULE
+    prev = package.USE_ZIPFILE_MODULE
     try:
-        package.USE_TARFILE_MODULE = True
-        test_dir_structure(test='testtarfile')
+        package.USE_ZIPFILE_MODULE = True
+        test_dir_structure(test='testzipfile')
     finally:
-        package.USE_TARFILE_MODULE = prev
+        package.USE_ZIPFILE_MODULE = prev

diff --git a/pypy/tool/release/make_release.py b/pypy/tool/release/make_release.py
--- a/pypy/tool/release/make_release.py
+++ b/pypy/tool/release/make_release.py
@@ -4,7 +4,8 @@
 into release packages. Note: you must run apropriate buildbots first and
 make sure there are no failures. Use force-builds.py from the same directory.
 
-Usage: make_release.py release/<release name> release_version
+Usage: make_release.py  <branchname>  <version>
+ e.g.: make_release.py  release-1.4.1  1.4.1
 """
 
 import autopath
@@ -20,6 +21,7 @@
 import shutil
 
 BASEURL = 'http://buildbot.pypy.org/nightly/'
+PAUSE = False
 
 def browse_nightly(branch,
                    baseurl=BASEURL,
@@ -32,12 +34,12 @@
     dom = minidom.parseString(xml)
     refs = [node.getAttribute('href') for node in dom.getElementsByTagName('a')
             if 'pypy' in node.getAttribute('href')]
-    # all refs are of form: pypy-{type}-{revision}-{platform}.tar.bz2
-    r = re.compile('pypy-c-([\w\d]+)-(\d+)-([\w\d]+).tar.bz2$')
+    # all refs are of form: pypy-c-{type}-{revnum}-{hghash}-{platform}.tar.bz2
+    r = re.compile('pypy-c-([\w\d]+)-(\d+)-([0-9a-f]+)-([\w\d]+).tar.bz2$')
     d = {}
     for ref in refs:
-        kind, rev, platform = r.match(ref).groups()
-        rev = int(rev)
+        kind, revnum, hghash, platform = r.match(ref).groups()
+        rev = int(revnum)
         try:
             lastrev, _ = d[(kind, platform)]
         except KeyError:
@@ -51,8 +53,10 @@
     tmpdir = udir.join('download')
     tmpdir.ensure(dir=True)
     alltars = []
+    olddir = os.getcwd()
     try:
         os.chdir(str(tmpdir))
+        print 'Using tmpdir', str(tmpdir)
         for (kind, platform), (rev, name) in to_download.iteritems():
             if platform == 'win32':
                 print 'Ignoring %s, windows unsupported' % name
@@ -64,20 +68,23 @@
                 t = tarfile.open(str(tmpdir.join(name)))
                 dirname = t.getmembers()[0].name
                 t.extractall(path=str(tmpdir))
-                os.system('mv %s %s' % (str(tmpdir.join(dirname)),
-                                        str(tmpdir.join('pypy-%s' % release))))
                 if kind == 'jit':
                     kind = ''
                 else:
                     kind = '-' + kind
-                olddir = os.getcwd()
-                name = 'pypy-%s-%s%s.tar.bz2' % (release, platform, kind)
+                topdirname = 'pypy-%s-%s%s' % (release, platform, kind)
+                os.system('mv %s %s' % (str(tmpdir.join(dirname)),
+                                        str(tmpdir.join(topdirname))))
+                if PAUSE:
+                    print 'Pausing, press Enter...'
+                    raw_input()
+                name = '%s.tar.bz2' % topdirname
                 print "Building %s" % name
                 t = tarfile.open(name, 'w:bz2')
-                t.add('pypy-%s' % release)
+                t.add(topdirname)
                 alltars.append(name)
                 t.close()
-                shutil.rmtree(str(tmpdir.join('pypy-' + release)))
+                shutil.rmtree(str(tmpdir.join(topdirname)))
         for name in alltars:
             print "Uploading %s" % name
             os.system('scp %s codespeak.net:/www/pypy.org/htdocs/download' % name)

diff --git a/pypy/tool/release/test/test_make_release.py b/pypy/tool/release/test/test_make_release.py
--- a/pypy/tool/release/test/test_make_release.py
+++ b/pypy/tool/release/test/test_make_release.py
@@ -6,6 +6,6 @@
 
 def test_browse_nightly():
     res = browse_nightly('branch', override_xml=XML)
-    assert res[('jit', 'linux')] == (75362, 'pypy-c-jit-75362-linux.tar.bz2')
+    assert res[('jit', 'linux')] == (40170, 'pypy-c-jit-40170-c407c9dc5382-linux.tar.bz2')
     assert len(res) == 6
-    assert res[('nojit', 'linux64')] == (75362, u'pypy-c-nojit-75362-linux64.tar.bz2')
+    assert res[('nojit', 'linux64')] == (40170, 'pypy-c-nojit-40170-c407c9dc5382-linux64.tar.bz2')

diff --git a/pypy/tool/release/test/nightly.xml b/pypy/tool/release/test/nightly.xml
--- a/pypy/tool/release/test/nightly.xml
+++ b/pypy/tool/release/test/nightly.xml
@@ -1,94 +1,143 @@
- 
-<html> 
- <head> 
-  <title>Directory listing for /nightly/release/1.3.x/</title> 
-  <style> 
-    .even-dir { background-color: #efe0ef }
-    .even { background-color: #eee }
-    .odd-dir {background-color: #f0d0ef }
-    .odd { background-color: #dedede }
-    .icon { text-align: center }
-    .listing {
-        margin-left: auto;
-        margin-right: auto;
-        width: 50%;
-        padding: 0.1em;
-        }
- 
-    body { border: 0; padding: 0; margin: 0; background-color: #efefef; }
-    h1 {padding: 0.1em; background-color: #777; color: white; border-bottom: thin white dashed;}
- 
-    </style> 
- </head> 
- <body> 
-  <h1>Directory listing for /nightly/release/1.3.x/
-  </h1> 
-  <table> 
-   <tr pattern="listHeader"> 
-    <th>Filename</th> 
-    <th>Content type</th> 
-    <th>Content encoding</th> 
-   </tr> 
-   <tr class="even"> 
-    <td><a href="pypy-c-jit-75357-linux.tar.bz2">pypy-c-jit-75357-linux.tar.bz2</a></td> 
-    <td>[application/x-tar]</td> 
-    <td>[bzip2]</td> 
-   </tr> 
-   <tr class="odd"> 
-    <td><a href="pypy-c-jit-75357-win32.tar.bz2">pypy-c-jit-75357-win32.tar.bz2</a></td> 
-    <td>[application/x-tar]</td> 
-    <td>[bzip2]</td> 
-   </tr> 
-   <tr class="even"> 
-    <td><a href="pypy-c-jit-75362-linux.tar.bz2">pypy-c-jit-75362-linux.tar.bz2</a></td> 
-    <td>[application/x-tar]</td> 
-    <td>[bzip2]</td> 
-   </tr> 
-   <tr class="odd"> 
-    <td><a href="pypy-c-jit-75362-win32.tar.bz2">pypy-c-jit-75362-win32.tar.bz2</a></td> 
-    <td>[application/x-tar]</td> 
-    <td>[bzip2]</td> 
-   </tr> 
-   <tr class="even"> 
-    <td><a href="pypy-c-nojit-75357-linux.tar.bz2">pypy-c-nojit-75357-linux.tar.bz2</a></td> 
-    <td>[application/x-tar]</td> 
-    <td>[bzip2]</td> 
-   </tr> 
-   <tr class="odd"> 
-    <td><a href="pypy-c-nojit-75357-linux64.tar.bz2">pypy-c-nojit-75357-linux64.tar.bz2</a></td> 
-    <td>[application/x-tar]</td> 
-    <td>[bzip2]</td> 
-   </tr> 
-   <tr class="even"> 
-    <td><a href="pypy-c-nojit-75357-win32.tar.bz2">pypy-c-nojit-75357-win32.tar.bz2</a></td> 
-    <td>[application/x-tar]</td> 
-    <td>[bzip2]</td> 
-   </tr> 
-   <tr class="odd"> 
-    <td><a href="pypy-c-nojit-75362-linux.tar.bz2">pypy-c-nojit-75362-linux.tar.bz2</a></td> 
-    <td>[application/x-tar]</td> 
-    <td>[bzip2]</td> 
-   </tr> 
-   <tr class="even"> 
-    <td><a href="pypy-c-nojit-75362-linux64.tar.bz2">pypy-c-nojit-75362-linux64.tar.bz2</a></td> 
-    <td>[application/x-tar]</td> 
-    <td>[bzip2]</td> 
-   </tr> 
-   <tr class="odd"> 
-    <td><a href="pypy-c-nojit-75362-win32.tar.bz2">pypy-c-nojit-75362-win32.tar.bz2</a></td> 
-    <td>[application/x-tar]</td> 
-    <td>[bzip2]</td> 
-   </tr> 
-   <tr class="even"> 
-    <td><a href="pypy-c-stackless-75357-linux.tar.bz2">pypy-c-stackless-75357-linux.tar.bz2</a></td> 
-    <td>[application/x-tar]</td> 
-    <td>[bzip2]</td> 
-   </tr> 
-   <tr class="odd"> 
-    <td><a href="pypy-c-stackless-75362-linux.tar.bz2">pypy-c-stackless-75362-linux.tar.bz2</a></td> 
-    <td>[application/x-tar]</td> 
-    <td>[bzip2]</td> 
-   </tr> 
-  </table> 
- </body> 
+ <html>
+<head>
+<title>Directory listing for /nightly/trunk/</title>
+<style>
+.even        { background-color: #eee    }
+.odd         { background-color: #dedede }
+.even-passed { background-color: #caffd8 }
+.odd-passed  { background-color: #a3feba }
+.even-failed { background-color: #ffbbbb }
+.odd-failed  { background-color: #ff9797 }
+
+.summary_link {
+    color: black;
+    text-decoration: none;
+}
+.summary_link:hover {
+    color: blue;
+    text-decoration: underline;
+}
+
+.icon { text-align: center }
+.listing {
+    margin-left: auto;
+    margin-right: auto;
+    width: 50%;
+    padding: 0.1em;
+    }
+
+body { border: 0; padding: 0; margin: 0; background-color: #efefef; }
+h1 {padding: 0.1em; background-color: #777; color: white; border-bottom: thin white dashed;}
+td,th {padding-left: 0.5em; padding-right: 0.5em; }
+
+</style>
+</head>
+
+<body>
+<h1>Directory listing for /nightly/trunk/</h1>
+
+<table>
+    <thead>
+        <tr>
+
+            <th>Filename</th>
+            <th>Size</th>
+            <th>Date</th>
+            <th><i>own</i> tests</th>
+            <th><i>applevel</i> tests</th>
+
+        </tr>
+    </thead>
+    <tbody>
+<tr class="odd">
+    <td><a href="pypy-c-jit-40170-c407c9dc5382-linux.tar.bz2">pypy-c-jit-40170-c407c9dc5382-linux.tar.bz2</a></td>
+    <td>8M</td>
+    <td>2010-12-22</td>
+    <td class="odd-failed"><a class="summary_link" href="/summary?category=linux32&amp;branch=%3Ctrunk%3E&amp;recentrev=40170:c407c9dc5382">16561, 1 F, 2089 s, 4 x</a></td>
+
+    <td class="odd-passed"><a class="summary_link" href="/summary?category=linux32&amp;branch=%3Ctrunk%3E&amp;recentrev=40170:c407c9dc5382">3488, 0 F, 1542 s, 1 x</a></td>
+</tr>
+<tr class="even">
+    <td><a href="pypy-c-jit-40170-c407c9dc5382-linux64.tar.bz2">pypy-c-jit-40170-c407c9dc5382-linux64.tar.bz2</a></td>
+    <td>9M</td>
+    <td>2010-12-22</td>
+    <td class="even-failed"><a class="summary_link" href="/summary?category=linux64&amp;branch=%3Ctrunk%3E&amp;recentrev=40170:c407c9dc5382">16216, 3 F, 2417 s, 4 x</a></td>
+
+    <td class="even-passed"><a class="summary_link" href="/summary?category=linux64&amp;branch=%3Ctrunk%3E&amp;recentrev=40170:c407c9dc5382">3483, 0 F, 1547 s, 1 x</a></td>
+</tr>
+<tr class="odd">
+    <td><a href="pypy-c-jit-40170-c407c9dc5382-osx64.tar.bz2">pypy-c-jit-40170-c407c9dc5382-osx64.tar.bz2</a></td>
+    <td>10M</td>
+    <td>2010-12-22</td>
+    <td class="odd">None</td>
+
+    <td class="odd">None</td>
+</tr>
+<tr class="even">
+    <td><a href="pypy-c-nojit-40170-c407c9dc5382-linux.tar.bz2">pypy-c-nojit-40170-c407c9dc5382-linux.tar.bz2</a></td>
+    <td>7M</td>
+    <td>2010-12-22</td>
+    <td class="even-failed"><a class="summary_link" href="/summary?category=linux32&amp;branch=%3Ctrunk%3E&amp;recentrev=40170:c407c9dc5382">16561, 1 F, 2089 s, 4 x</a></td>
+
+    <td class="even-passed"><a class="summary_link" href="/summary?category=linux32&amp;branch=%3Ctrunk%3E&amp;recentrev=40170:c407c9dc5382">3377, 0 F, 1542 s, 1 x</a></td>
+</tr>
+<tr class="odd">
+    <td><a href="pypy-c-nojit-40170-c407c9dc5382-linux64.tar.bz2">pypy-c-nojit-40170-c407c9dc5382-linux64.tar.bz2</a></td>
+    <td>8M</td>
+    <td>2010-12-22</td>
+    <td class="odd-failed"><a class="summary_link" href="/summary?category=linux64&amp;branch=%3Ctrunk%3E&amp;recentrev=40170:c407c9dc5382">16216, 3 F, 2417 s, 4 x</a></td>
+
+    <td class="odd-passed"><a class="summary_link" href="/summary?category=linux64&amp;branch=%3Ctrunk%3E&amp;recentrev=40170:c407c9dc5382">3372, 0 F, 1547 s, 1 x</a></td>
+</tr>
+<tr class="even">
+    <td><a href="pypy-c-stackless-40170-c407c9dc5382-linux.tar.bz2">pypy-c-stackless-40170-c407c9dc5382-linux.tar.bz2</a></td>
+    <td>10M</td>
+    <td>2010-12-22</td>
+    <td class="even-failed"><a class="summary_link" href="/summary?category=linux32&amp;branch=%3Ctrunk%3E&amp;recentrev=40170:c407c9dc5382">16561, 1 F, 2089 s, 4 x</a></td>
+
+    <td class="even-passed"><a class="summary_link" href="/summary?category=linux32-stackless&amp;branch=%3Ctrunk%3E&amp;recentrev=40170:c407c9dc5382">3221, 0 F, 1401 s, 1 x</a></td>
+</tr>
+<tr class="odd">
+    <td><a href="pypy-c-jit-40149-cd083843b67a-linux.tar.bz2">pypy-c-jit-40149-cd083843b67a-linux.tar.bz2</a></td>
+    <td>10M</td>
+    <td>2010-12-21</td>
+    <td class="odd-passed"><a class="summary_link" href="/summary?category=linux32&amp;branch=%3Ctrunk%3E&amp;recentrev=40149:cd083843b67a">16561, 0 F, 2088 s, 4 x</a></td>
+
+    <td class="odd-passed"><a class="summary_link" href="/summary?category=linux32&amp;branch=%3Ctrunk%3E&amp;recentrev=40149:cd083843b67a">3488, 0 F, 1542 s, 1 x</a></td>
+</tr>
+<tr class="even">
+    <td><a href="pypy-c-jit-40149-cd083843b67a-linux64.tar.bz2">pypy-c-jit-40149-cd083843b67a-linux64.tar.bz2</a></td>
+    <td>11M</td>
+    <td>2010-12-21</td>
+    <td class="even-passed"><a class="summary_link" href="/summary?category=linux64&amp;branch=%3Ctrunk%3E&amp;recentrev=40149:cd083843b67a">16219, 0 F, 2415 s, 4 x</a></td>
+
+    <td class="even-passed"><a class="summary_link" href="/summary?category=linux64&amp;branch=%3Ctrunk%3E&amp;recentrev=40149:cd083843b67a">3483, 0 F, 1547 s, 1 x</a></td>
+</tr>
+<tr class="odd">
+    <td><a href="pypy-c-nojit-40149-cd083843b67a-linux.tar.bz2">pypy-c-nojit-40149-cd083843b67a-linux.tar.bz2</a></td>
+    <td>7M</td>
+    <td>2010-12-21</td>
+    <td class="odd-passed"><a class="summary_link" href="/summary?category=linux32&amp;branch=%3Ctrunk%3E&amp;recentrev=40149:cd083843b67a">16561, 0 F, 2088 s, 4 x</a></td>
+
+    <td class="odd-passed"><a class="summary_link" href="/summary?category=linux32&amp;branch=%3Ctrunk%3E&amp;recentrev=40149:cd083843b67a">3377, 0 F, 1542 s, 1 x</a></td>
+</tr>
+<tr class="even">
+    <td><a href="pypy-c-nojit-40149-cd083843b67a-linux64.tar.bz2">pypy-c-nojit-40149-cd083843b67a-linux64.tar.bz2</a></td>
+    <td>9M</td>
+    <td>2010-12-21</td>
+    <td class="even-passed"><a class="summary_link" href="/summary?category=linux64&amp;branch=%3Ctrunk%3E&amp;recentrev=40149:cd083843b67a">16219, 0 F, 2415 s, 4 x</a></td>
+
+    <td class="even-passed"><a class="summary_link" href="/summary?category=linux64&amp;branch=%3Ctrunk%3E&amp;recentrev=40149:cd083843b67a">3372, 0 F, 1547 s, 1 x</a></td>
+</tr>
+<tr class="odd">
+    <td><a href="pypy-c-stackless-40149-cd083843b67a-linux.tar.bz2">pypy-c-stackless-40149-cd083843b67a-linux.tar.bz2</a></td>
+    <td>10M</td>
+    <td>2010-12-21</td>
+    <td class="odd-passed"><a class="summary_link" href="/summary?category=linux32&amp;branch=%3Ctrunk%3E&amp;recentrev=40149:cd083843b67a">16561, 0 F, 2088 s, 4 x</a></td>
+</tr>
+
+    </tbody>
+</table>
+
+</body>
 </html>


More information about the Pypy-commit mailing list