diff --git a/zorg/buildbot/builders/OpenMPBuilder.py b/zorg/buildbot/builders/OpenMPBuilder.py --- a/zorg/buildbot/builders/OpenMPBuilder.py +++ b/zorg/buildbot/builders/OpenMPBuilder.py @@ -38,7 +38,12 @@ testsuite_builddir = "test-suite.build" sollvevv_srcdir = "sollvevv.src" - cleanBuildRequested = lambda step: clean or step.build.getProperty("clean", default=step.build.getProperty("clean_obj")) + # If true, clean everything, including source dirs + def cleanBuildRequested(step): + return step.build.getProperty("clean") + # If true, clean build products; implied if cleanBuildRequested is true + def cleanObjRequested(step): + return cleanBuildRequested(step) or clean or step.build.getProperty("clean_obj") if depends_on_projects is None: # Monorepo configuration requires llvm and clang to get cmake work. @@ -53,15 +58,10 @@ env=merged_env, **kwargs) # Pass through all the extra arguments. - f.addStep( - ShellCommand( - name = 'clean', - command = ['rm', '-rf', f.obj_dir], - warnOnFailure = True, - description = ['clean'], - doStepIf = cleanBuildRequested, - workdir = '.', - env = merged_env)) + f.addStep(steps.RemoveDirectory(name='clean', + dir=f.obj_dir, + warnOnFailure=True, + doStepIf=cleanObjRequested)) # Configure LLVM and OpenMP (and Clang, if requested). cmake_args = ['-DCMAKE_BUILD_TYPE=Release', '-DLLVM_ENABLE_ASSERTIONS=ON'] diff --git a/zorg/buildbot/builders/PollyBuilder.py b/zorg/buildbot/builders/PollyBuilder.py --- a/zorg/buildbot/builders/PollyBuilder.py +++ b/zorg/buildbot/builders/PollyBuilder.py @@ -48,8 +48,12 @@ # XRay tests in test-suite require compiler-rt depends_on_projects += ['compiler-rt'] - cleanBuildRequestedByProperty = lambda step: step.build.getProperty("clean", False) - cleanBuildRequested = lambda step: clean or step.build.getProperty("clean", default=step.build.getProperty("clean_obj")) + # If true, clean everything, including source dirs + def cleanBuildRequested(step): + return step.build.getProperty("clean") + # If true, clean build products; implied if cleanBuildRequested is true + def cleanObjRequested(step): + return cleanBuildRequested(step) or clean or step.build.getProperty("clean_obj") f = LLVMBuildFactory( depends_on_projects=depends_on_projects, @@ -62,7 +66,7 @@ f.addStep(steps.RemoveDirectory(name='clean-src-dir', dir=f.monorepo_dir, warnOnFailure=True, - doStepIf=cleanBuildRequestedByProperty)) + doStepIf=cleanBuildRequested)) # Get the source code. f.addGetSourcecodeSteps(**kwargs) @@ -71,7 +75,7 @@ f.addStep(steps.RemoveDirectory(name='clean-build-dir', dir=llvm_objdir, warnOnFailure=True, - doStepIf=cleanBuildRequested)) + doStepIf=cleanObjRequested)) # Create configuration files with cmake cmakeCommand = ["cmake", "../%s/llvm" % llvm_srcdir, @@ -107,7 +111,7 @@ f.addStep(steps.RemoveDirectory(name='clean-install-dir', dir=llvm_instdir, haltOnFailure=False, - doStepIf=cleanBuildRequested)) + doStepIf=cleanObjRequested)) f.addStep(ShellCommand(name="install", command=install_cmd, @@ -142,7 +146,7 @@ dir=testsuite_srcdir, haltOnFailure=False, warnOnFailure=True, - doStepIf=cleanBuildRequestedByProperty)) + doStepIf=cleanBuildRequested)) f.addGetSourcecodeForProject( project='test-suite',