phase1: do not leak targets between branches
[buildbot.git] / phase1 / master.cfg
index 799a40bf36e54fb23f707ed37645e397503f618c..c4bccead8c8bf726e5e745d1738a547c83d13655 100644 (file)
@@ -288,7 +288,7 @@ c["prioritizeBuilders"] = prioritizeBuilders
 ####### CHANGESOURCES
 
 # find targets
-targets = set()
+targets = dict()
 
 
 def populateTargets():
@@ -323,12 +323,13 @@ def populateTargets():
             cwd=sourcegit,
         )
 
+        targets[branch] = set()
         while True:
             line = findtargets.stdout.readline()
             if not line:
                 break
             ta = line.decode().strip().split(" ")
-            targets.add(ta[0])
+            targets[branch].add(ta[0])
 
         subprocess.call(["rm", "-rf", sourcegit])
 
@@ -521,7 +522,7 @@ c["schedulers"].append(
                 name="target",
                 label="Build target",
                 default="all",
-                choices=["all"] + list(targets),
+                choices=["all"] + [t for b in branchNames for t in targets[b]],
             ),
             TagChoiceParameter(name="tag", label="Build tag", default=""),
         ],
@@ -735,7 +736,7 @@ c["builders"].append(
 
 
 # NB the phase1 build factory assumes workers are single-build only
-for target in targets:
+def prepareFactory(target):
     ts = target.split("/")
 
     factory = BuildFactory()
@@ -1743,13 +1744,17 @@ for target in targets:
         )
     )
 
-    for brname in branchNames:
+    return factory
+
+
+for brname in branchNames:
+    for target in targets[brname]:
         bldrname = brname + "_" + target
         c["builders"].append(
             BuilderConfig(
                 name=bldrname,
                 workernames=workerNames,
-                factory=factory,
+                factory=prepareFactory(target),
                 tags=[
                     brname,
                 ],