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,8 +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")) - cleanBuildRequestedByProperty = lambda step: step.build.getProperty("clean") + # 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. @@ -54,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'] @@ -156,7 +155,7 @@ dir=testsuite_srcdir, haltOnFailure=False, warnOnFailure=True, - doStepIf=cleanBuildRequestedByProperty)) + doStepIf=cleanBuildRequested)) f.addGetSourcecodeForProject(name="Test-Suite: Checkout", description="fetching", @@ -171,7 +170,7 @@ dir=sollvevv_srcdir, haltOnFailure=False, warnOnFailure=True, - doStepIf=cleanBuildRequestedByProperty)) + doStepIf=cleanBuildRequested)) f.addStep(steps.Git(name="SOLLVE V&V: Checkout", description="fetching", 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 @@ -45,8 +45,12 @@ depends_on_projects = ['llvm','clang','polly'] - 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, @@ -59,7 +63,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) @@ -68,7 +72,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, @@ -106,7 +110,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, @@ -141,7 +145,7 @@ dir=testsuite_srcdir, haltOnFailure=False, warnOnFailure=True, - doStepIf=cleanBuildRequestedByProperty)) + doStepIf=cleanBuildRequested)) f.addGetSourcecodeForProject( project='test-suite',