diff --git a/zorg/buildbot/builders/ClangBuilder.py b/zorg/buildbot/builders/ClangBuilder.py index a003f3987..fffc14618 100644 --- a/zorg/buildbot/builders/ClangBuilder.py +++ b/zorg/buildbot/builders/ClangBuilder.py @@ -278,7 +278,8 @@ def _getClangCMakeBuildFactory( f = LLVMBuildFactory( depends_on_projects=depends_on_projects, llvm_srcdir='llvm', - enable_runtimes=enable_runtimes) + enable_runtimes=enable_runtimes, + clean=clean) # Checkout the latest code for LNT # and the test-suite separately. Le's do this first, diff --git a/zorg/buildbot/process/buildrequest.py b/zorg/buildbot/process/buildrequest.py index 594a09d25..1f5043d11 100644 --- a/zorg/buildbot/process/buildrequest.py +++ b/zorg/buildbot/process/buildrequest.py @@ -22,14 +22,20 @@ def collapseRequests(master, builder, req1, req2): ('buildsets', str(req2['buildsetid']))) # Fetch the buildset properties. - selfBuildsetPoperties = yield \ - master.db.buildsets.getBuildsetProperties( - str(req1['buildsetid']) - ) - otherBuildsetPoperties = yield \ - master.db.buildsets.getBuildsetProperties( - str(req2['buildsetid']) - ) + selfBuildsetPoperties = yield master.db.buildsets.getBuildsetProperties( + str(req1["buildsetid"]) + ) + otherBuildsetPoperties = yield master.db.buildsets.getBuildsetProperties( + str(req2["buildsetid"]) + ) + + # If the build is going to be a clean build anyway, we can collapse a clean + # build and a non-clean build. + if getattr(builder.config.factory, "clean"): + if 'clean_obj' in selfBuildsetPoperties: + del selfBuildsetPoperties["clean_obj"] + if 'clean_obj' in otherBuildsetPoperties: + del otherBuildsetPoperties["clean_obj"] # Check buildsets properties and do not collapse # if properties do not match. This includes the check diff --git a/zorg/buildbot/process/factory.py b/zorg/buildbot/process/factory.py index b15bbaa19..e8af8faa0 100644 --- a/zorg/buildbot/process/factory.py +++ b/zorg/buildbot/process/factory.py @@ -35,11 +35,15 @@ class LLVMBuildFactory(BuildFactory): & etc. """ - def __init__(self, steps=None, depends_on_projects=None, hint=None, **kwargs): + def __init__( + self, steps=None, depends_on_projects=None, hint=None, clean=False, **kwargs + ): # Cannot use "super" here as BuildFactory is an old style class. BuildFactory.__init__(self, steps) self.hint = hint + + self.clean = clean # Handle the dependencies. if depends_on_projects is None: