From e9f0519e454bfe0f0204de38f0d1f5cdcbb0dc5d Mon Sep 17 00:00:00 2001 From: Aneesh Agrawal Date: Sun, 2 Oct 2016 20:09:51 -0400 Subject: [PATCH] Respect Buildbot invariants when adding new steps This will prevent crashes when Buildbot tries to execute dynamically added steps. --- buildbot/master/files/config/factories.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/buildbot/master/files/config/factories.py b/buildbot/master/files/config/factories.py index ce61482c..5606aed7 100644 --- a/buildbot/master/files/config/factories.py +++ b/buildbot/master/files/config/factories.py @@ -204,10 +204,25 @@ def run(self): pkill_step = [self.make_pkill_step("servo")] - self.build.steps += pkill_step + dynamic_steps + for step in pkill_step + dynamic_steps: + self.add_step(step) defer.returnValue(result) + def add_step(self, step): + """\ + Adds a new step to this build, making sure to maintain internal + Buildbot invariants. + Semi-polyfill for addStepsAfterLastStep from Buildbot 9. + """ + step.setBuild(self.build) + step.setBuildSlave(self.build.slavebuilder.slave) + step.setDefaultWorkdir(self.workdir) + self.build.steps.append(step) + + step_status = self.build.build_status.addStepWithName(step.name) + step.setStepStatus(step_status) + def make_step(self, command): step_kwargs = {} step_env = copy.deepcopy(self.environment)