[SCM] build.samba.org - branch master updated

Jelmer Vernooij jelmer at samba.org
Sat Nov 13 10:17:42 MST 2010


The branch, master has been updated
       via  8ceda4d Skip duplicate builds.
      from  d5fc97f Don't kill upload builds just yet, improve verboseness.

http://gitweb.samba.org/?p=build-farm.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 8ceda4d45a24ece957e9de77f20052da37f8c2cc
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Sat Nov 13 18:17:36 2010 +0100

    Skip duplicate builds.

-----------------------------------------------------------------------

Summary of changes:
 buildfarm/data.py     |   12 ++++++++++++
 buildfarm/sqldb.py    |   12 ++++++++++--
 import-and-analyse.py |    5 ++++-
 3 files changed, 26 insertions(+), 3 deletions(-)


Changeset truncated at 500 lines:

diff --git a/buildfarm/data.py b/buildfarm/data.py
index bc0eac9..10966f4 100644
--- a/buildfarm/data.py
+++ b/buildfarm/data.py
@@ -331,6 +331,18 @@ class BuildResultStore(object):
         """
         self.path = path
 
+    def __contains__(self, build):
+        try:
+            if build.revision:
+                rev = build.revision
+            else:
+                rev, timestamp = build.revision_details()
+            self.get_build(build.tree, build.host, build.compiler, rev)
+        except NoSuchBuildError:
+            return False
+        else:
+            return True
+
     def get_build(self, tree, host, compiler, rev):
         basename = self.build_fname(tree, host, compiler, rev)
         logf = "%s.log" % basename
diff --git a/buildfarm/sqldb.py b/buildfarm/sqldb.py
index 5ab71df..d975b77 100644
--- a/buildfarm/sqldb.py
+++ b/buildfarm/sqldb.py
@@ -55,6 +55,9 @@ class StormBuild(Build):
     status = Unicode()
     commit_revision = RawStr()
 
+    def log_checksum(self):
+        return self.checksum
+
     def remove(self):
         super(StormBuild, self).remove()
         Store.of(self).remove(self)
@@ -136,6 +139,9 @@ class StormCachingBuildResultStore(BuildResultStore):
 
         self.store = store
 
+    def __contains__(self, build):
+        return (self._get_by_checksum(build) is not None)
+
     def get_previous_revision(self, tree, host, compiler, revision):
         result = self.store.find(StormBuild,
             StormBuild.tree == unicode(tree),
@@ -169,9 +175,11 @@ class StormCachingBuildResultStore(BuildResultStore):
             raise NoSuchBuildError(tree, host, compiler)
         return build.revision
 
+    def _get_by_checksum(self, build):
+        return self.store.find(StormBuild, StormBuild.checksum == build.log_checksum()).one()
+
     def upload_build(self, build):
-        result = self.store.find(StormBuild, StormBuild.checksum == build.log_checksum())
-        existing_build = result.one()
+        existing_build = self._get_by_checksum(build)
         if existing_build is not None:
             # Already present
             assert build.tree == existing_build.tree
diff --git a/import-and-analyse.py b/import-and-analyse.py
index a1cb47f..dcfcec6 100755
--- a/import-and-analyse.py
+++ b/import-and-analyse.py
@@ -86,8 +86,11 @@ for build in buildfarm.get_new_builds():
     if opts.verbose >= 2:
         print "Processing %s..." % build,
 
+    if build in buildfarm.builds:
+        continue
+
     if not opts.dry_run:
-        buildfarm.builds.upload_build(build)
+        build = buildfarm.builds.upload_build(build)
 
     (rev, rev_timestamp) = build.revision_details()
 


-- 
build.samba.org


More information about the samba-cvs mailing list