[llvm] [Offload][CI] Convert openmp-offload-amdgpu staging bots to ScriptedBuilder (PR #174991)

Michael Kruse via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 8 07:20:56 PST 2026


https://github.com/Meinersbur updated https://github.com/llvm/llvm-project/pull/174991

>From a600d613a5b25c1d29572fb830e3650e34116931 Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Thu, 8 Jan 2026 15:50:49 +0100
Subject: [PATCH 1/2] Convert openmp-offload-amdgpu staging bots to
 ScriptedBuilder

---
 .ci/buildbot/worker.py                        | 14 +++-
 offload/ci/.gitignore                         |  1 +
 .../ci/openmp-offload-amdgpu-clang-flang.py   | 71 +++++++++++++++++++
 offload/ci/openmp-offload-amdgpu-runtime.py   | 60 ++++++++++++++++
 4 files changed, 143 insertions(+), 3 deletions(-)
 create mode 100644 offload/ci/.gitignore
 create mode 100644 offload/ci/openmp-offload-amdgpu-clang-flang.py
 create mode 100644 offload/ci/openmp-offload-amdgpu-runtime.py

diff --git a/.ci/buildbot/worker.py b/.ci/buildbot/worker.py
index 99de7faab10db..f0ec30e56b183 100644
--- a/.ci/buildbot/worker.py
+++ b/.ci/buildbot/worker.py
@@ -114,14 +114,22 @@ def report_platform():
     report_prog_version("LLD", ["ld.lld", "--version"])
 
 
-def run_command(cmd, shell=False, **kwargs):
+def run_command(cmd, shell=False, env=None,add_env=None, **kwargs):
     """
     Report which command is being run, then execute it using
-    subprocess.check_call.
+    subprocess.check_call. Any arguments are forwarded to
+
+    Additional Parameters
+    ----------
+    add_env : dict
+        Like env, but adds to the original environment instead of replacing it
     """
     report(f"Running: {cmd if shell else shjoin(cmd)}")
     sys.stderr.flush()
-    subprocess.check_call(cmd, shell=shell, **kwargs)
+    if add_env:
+        env = dict(os.environ) if env is None else dict(env)
+        env.update(add_env)
+    subprocess.check_call(cmd, shell=shell, env=env, **kwargs)
 
 
 def _remove_readonly(func, path, _):
diff --git a/offload/ci/.gitignore b/offload/ci/.gitignore
new file mode 100644
index 0000000000000..f2198f0f4ef8e
--- /dev/null
+++ b/offload/ci/.gitignore
@@ -0,0 +1 @@
+/*.workdir
diff --git a/offload/ci/openmp-offload-amdgpu-clang-flang.py b/offload/ci/openmp-offload-amdgpu-clang-flang.py
new file mode 100644
index 0000000000000..495f356781e65
--- /dev/null
+++ b/offload/ci/openmp-offload-amdgpu-clang-flang.py
@@ -0,0 +1,71 @@
+#! /usr/bin/env python3
+# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+# See https://llvm.org/LICENSE.txt for license information.
+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+import os
+import sys
+
+# Adapt to location in source tree
+llvmsrcroot = os.path.normpath(f"{__file__}/../../..")
+
+sys.path.insert(0, os.path.join(llvmsrcroot, ".ci/buildbot"))
+import worker
+
+llvmbuilddir = "llvm.build"
+llvminstalldir = "llvm.inst"
+
+with worker.run(
+    __file__,
+    llvmsrcroot,
+    clobberpaths=[llvmbuilddir, llvminstalldir],
+    jobs=64,
+) as w:
+    with w.step("configure-openmp", halt_on_fail=True):
+        w.run_command(
+            [
+                "cmake",
+                f"-S{w.in_llvmsrc('llvm')}",
+                f"-B{llvmbuilddir}",
+                "-GNinja",
+                "-DCMAKE_BUILD_TYPE=Release",
+                "-DLLVM_ENABLE_ASSERTIONS=ON",
+                f"-DLLVM_LIT_ARGS=-vv --show-unsupported --show-xfail -j {w.jobs} --time-tests --timeout 100",
+                f"-DCMAKE_INSTALL_PREFIX={w.in_workdir(llvminstalldir)}",
+                "-DCLANG_DEFAULT_LINKER=lld",
+                "-DLLVM_TARGETS_TO_BUILD=X86;AMDGPU",
+                "-DLLVM_ENABLE_ASSERTIONS=ON",
+                "-DCMAKE_C_COMPILER_LAUNCHER=ccache",
+                "-DCMAKE_CXX_COMPILER_LAUNCHER=ccache",
+                "-DFLANG_RUNTIME_F128_MATH_LIB=libquadmath",
+                "-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON",
+                "-DCMAKE_CXX_STANDARD=17",
+                "-DBUILD_SHARED_LIBS=ON",
+                "-DLIBOMPTARGET_PLUGINS_TO_BUILD=amdgpu;host",
+                "-DRUNTIMES_amdgcn-amd-amdhsa_LLVM_ENABLE_RUNTIMES=compiler-rt;openmp",
+                "-DLLVM_RUNTIME_TARGETS=default;amdgcn-amd-amdhsa",
+                "-DCOMPILER_RT_BUILD_ORC=OFF",
+                "-DCOMPILER_RT_BUILD_XRAY=OFF",
+                "-DCOMPILER_RT_BUILD_MEMPROF=OFF",
+                "-DCOMPILER_RT_BUILD_LIBFUZZER=OFF",
+                "-DCOMPILER_RT_BUILD_SANITIZERS=ON",
+                "-DLLVM_ENABLE_PROJECTS=clang;lld;mlir;flang;llvm",
+                "-DLLVM_ENABLE_RUNTIMES=flang-rt;offload;compiler-rt;openmp",
+            ]
+        )
+
+    with w.step("compile-openmp", halt_on_fail=True):
+        w.run_ninja(builddir=llvmbuilddir, ccache_stats=True)
+
+    with w.step("test-openmp"):
+        w.run_ninja(
+            ["check-openmp"], add_env={"HSA_ENABLE_SDMA": "0"}, builddir=llvmbuilddir
+        )
+
+    with w.step("Add check check-offload"):
+        w.run_ninja(
+            ["check-offload"], add_env={"HSA_ENABLE_SDMA": "0"}, builddir=llvmbuilddir
+        )
+
+    with w.step("LLVM: Install", halt_on_fail=True):
+        w.run_ninja(["install"], builddir=llvmbuilddir)
diff --git a/offload/ci/openmp-offload-amdgpu-runtime.py b/offload/ci/openmp-offload-amdgpu-runtime.py
new file mode 100644
index 0000000000000..40f9a1292c762
--- /dev/null
+++ b/offload/ci/openmp-offload-amdgpu-runtime.py
@@ -0,0 +1,60 @@
+#! /usr/bin/env python3
+# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+# See https://llvm.org/LICENSE.txt for license information.
+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+import os
+import sys
+
+# Adapt to location in source tree
+llvmsrcroot = os.path.normpath(f"{__file__}/../../..")
+
+sys.path.insert(0, os.path.join(llvmsrcroot, ".ci/buildbot"))
+import worker
+
+llvmbuilddir = "llvm.build"
+llvminstalldir = "llvm.inst"
+
+with worker.run(
+    __file__,
+    llvmsrcroot,
+    clobberpaths=[llvmbuilddir, llvminstalldir],
+    jobs=32,
+) as w:
+    with w.step("configure-openmp", halt_on_fail=True):
+        w.run_command(
+            [
+                "cmake",
+                f"-S{w.in_llvmsrc('llvm')}",
+                f"-B{llvmbuilddir}",
+                "-GNinja",
+                "-DCMAKE_BUILD_TYPE=Release",
+                "-DLLVM_ENABLE_ASSERTIONS=ON",
+                f"-DLLVM_LIT_ARGS=-vv --show-unsupported --show-xfail -j {w.jobs} --time-tests --timeout 100",
+                f"-DCMAKE_INSTALL_PREFIX={w.in_workdir(llvminstalldir)}",
+                "-DCLANG_DEFAULT_LINKER=lld",
+                "-DLLVM_TARGETS_TO_BUILD=X86;AMDGPU",
+                "-DCMAKE_C_COMPILER_LAUNCHER=ccache",
+                "-DCMAKE_CXX_COMPILER_LAUNCHER=ccache",
+                "-DRUNTIMES_amdgcn-amd-amdhsa_LLVM_ENABLE_RUNTIMES=compiler-rt;openmp",
+                "-DLLVM_RUNTIME_TARGETS=default;amdgcn-amd-amdhsa",
+                "-DLLVM_ENABLE_PROJECTS=clang;lld;llvm",
+                "-DLLVM_ENABLE_RUNTIMES=offload;compiler-rt;openmp",
+            ]
+        )
+
+    with w.step("compile-openmp", halt_on_fail=True):
+        w.run_ninja(builddir=llvmbuilddir, ccache_stats=True)
+
+    with w.step("test-openmp"):
+        w.run_ninja(
+            ["check-openmp"], add_env={"HSA_ENABLE_SDMA": "0"}, builddir=llvmbuilddir
+        )
+
+    with w.step("Add check check-offload"):
+        w.run_ninja(
+            ["check-offload"], add_env={"HSA_ENABLE_SDMA": "0"}, builddir=llvmbuilddir
+        )
+
+    with w.step("LLVM: Install", halt_on_fail=True):
+        w.run_ninja(["install"], builddir=llvmbuilddir)

>From 5c0794eba9a4b2d14487dfd39d9a66265e5eb5f7 Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Thu, 8 Jan 2026 16:20:33 +0100
Subject: [PATCH 2/2] format using darker

---
 .ci/buildbot/worker.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.ci/buildbot/worker.py b/.ci/buildbot/worker.py
index f0ec30e56b183..3e33492e0d298 100644
--- a/.ci/buildbot/worker.py
+++ b/.ci/buildbot/worker.py
@@ -114,7 +114,7 @@ def report_platform():
     report_prog_version("LLD", ["ld.lld", "--version"])
 
 
-def run_command(cmd, shell=False, env=None,add_env=None, **kwargs):
+def run_command(cmd, shell=False, env=None, add_env=None, **kwargs):
     """
     Report which command is being run, then execute it using
     subprocess.check_call. Any arguments are forwarded to



More information about the llvm-commits mailing list