From 117f7db810a9ea3a0dd659d2f7242968cd2187ab Mon Sep 17 00:00:00 2001 From: Junji Watanabe Date: Thu, 28 May 2026 06:58:30 +0000 Subject: [PATCH 1/2] feat: support advanced checks with env overrides in UnifiedTreeBuilder Add MergedEnv class to zorg/buildbot/process/properties.py to support merging runtime-resolved environment variables (Properties) with step-specific overrides. Update addNinjaSteps in zorg/buildbot/builders/UnifiedTreeBuilder.py to accept advanced check configurations (dictionaries) with environment overrides and name suffixes, utilizing MergedEnv. TAG=agy CONV=a6ee1ccc-7c38-4bdf-b088-f962c0b3ba01 --- zorg/buildbot/builders/UnifiedTreeBuilder.py | 24 ++++++++++++++++---- zorg/buildbot/process/properties.py | 23 +++++++++++++++++++ 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/zorg/buildbot/builders/UnifiedTreeBuilder.py b/zorg/buildbot/builders/UnifiedTreeBuilder.py index 7a275d25a..598624fbc 100644 --- a/zorg/buildbot/builders/UnifiedTreeBuilder.py +++ b/zorg/buildbot/builders/UnifiedTreeBuilder.py @@ -13,6 +13,7 @@ from zorg.buildbot.process.factory import LLVMBuildFactory import zorg.buildbot.builders.Util as builders_util +from zorg.buildbot.process.properties import MergedEnv def getLLVMBuildFactoryAndPrepareForSourcecodeSteps( depends_on_projects = None, @@ -235,13 +236,28 @@ def trunc50(name): if checks: for check in checks: - f.addStep(LitTestCommand(name=trunc50("test-%s-%s" % (step_name, check)), - command=['ninja', check], + check_target = check + check_env_override = None + check_suffix = "" + + if isinstance(check, dict): + check_target = check.get('target') + check_env_override = check.get('env_override') + check_suffix = check.get('name_suffix', "") + + check_name = check_target + check_suffix + + step_env = check_env + if check_env_override: + step_env = MergedEnv(check_env, check_env_override) + + f.addStep(LitTestCommand(name=trunc50("test-%s-%s" % (step_name, check_name)), + command=['ninja', check_target], description=[ "Test", "just", "built", "components", "for", - check, + check_name, ], - env=check_env, + env=step_env, workdir=obj_dir, **kwargs # Pass through all the extra arguments. )) diff --git a/zorg/buildbot/process/properties.py b/zorg/buildbot/process/properties.py index 670d9000c..c716872e2 100644 --- a/zorg/buildbot/process/properties.py +++ b/zorg/buildbot/process/properties.py @@ -59,3 +59,26 @@ def getRenderingFor(self, build): pass return p + + +@implementer(IRenderable) +class MergedEnv(object): + def __init__(self, base_env, overrides): + self.base_env = base_env + self.overrides = overrides + + @defer.inlineCallbacks + def getRenderingFor(self, build): + if hasattr(build, 'render'): + base_env_rendered = yield build.render(self.base_env) + elif hasattr(build, 'properties') and hasattr(build.properties, 'render'): + base_env_rendered = yield build.properties.render(self.base_env) + else: + base_env_rendered = {} + + if not isinstance(base_env_rendered, dict): + base_env_rendered = {} + + merged = base_env_rendered.copy() + merged.update(self.overrides) + return merged From dcdc23d67495be982dbdc90dcc75982b4e521638 Mon Sep 17 00:00:00 2001 From: Junji Watanabe Date: Thu, 28 May 2026 06:58:41 +0000 Subject: [PATCH 2/2] chore: run llvm-clang-x86_64-win-fast unit tests with forward slash override Configure llvm-clang-x86_64-win-fast builder to run its unit tests twice: once with default settings, and once with LLVM_WINDOWS_PREFER_FORWARD_SLASH=1 override, utilizing the new advanced checks support. TAG=agy CONV=a6ee1ccc-7c38-4bdf-b088-f962c0b3ba01 --- buildbot/osuosl/master/config/builders.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/buildbot/osuosl/master/config/builders.py b/buildbot/osuosl/master/config/builders.py index ff10288e6..3738bdb82 100644 --- a/buildbot/osuosl/master/config/builders.py +++ b/buildbot/osuosl/master/config/builders.py @@ -92,7 +92,17 @@ def collapseRequestsDoxygen(master, builder, req1, req2): clean=True, checks=[ "check-llvm-unit", - "check-clang-unit" + "check-clang-unit", + { + 'target': 'check-llvm-unit', + 'env_override': {'LLVM_WINDOWS_PREFER_FORWARD_SLASH': '1'}, + 'name_suffix': '-forward-slashes' + }, + { + 'target': 'check-clang-unit', + 'env_override': {'LLVM_WINDOWS_PREFER_FORWARD_SLASH': '1'}, + 'name_suffix': '-forward-slashes' + } ], extra_configure_args=[ "-DLLVM_CCACHE_BUILD=ON",