[llvm] [polly] [Buildbot][Polly] Move polly-x86_64-linux-test-suite build instructions into main repository (PR #166809)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 6 09:19:48 PST 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {darker}-->
:warning: Python code formatter, darker found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
darker --check --diff -r origin/main...HEAD .buildbot/common/util.py .buildbot/common/worker.py polly/.buildbot/polly-x86_64-linux-test-suite.py
``````````
:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:
</details>
<details>
<summary>
View the diff from darker here.
</summary>
``````````diff
--- .buildbot/common/util.py 2025-11-06 16:54:53.000000 +0000
+++ .buildbot/common/util.py 2025-11-06 17:19:21.724252 +0000
@@ -26,26 +26,26 @@
slashes on platforms where they are path separators. This prevents
CMake from choking when trying to decode what it thinks are escape
sequences in filenames.
"""
result = safe_pjoin(*args)
- if os.sep == '\\':
- return result.replace('\\', '/')
+ if os.sep == "\\":
+ return result.replace("\\", "/")
else:
return result
def report(msg):
- sys.stderr.write(msg + '\n')
+ sys.stderr.write(msg + "\n")
sys.stderr.flush()
def report_run_cmd(cmd, shell=False, *args, **kwargs):
"""
Print a command, then executes it using subprocess.check_call.
"""
- report('Running: %s' % ((cmd if shell else shquote_cmd(cmd)),))
+ report("Running: %s" % ((cmd if shell else shquote_cmd(cmd)),))
sys.stderr.flush()
subprocess.check_call(cmd, shell=shell, *args, **kwargs)
def mkdirp(path):
@@ -85,50 +85,50 @@
else:
return os.path.join(dirname, *args)
def _shquote_impl(txt, escaped_chars, quoted_chars):
- quoted = re.sub(escaped_chars, r'\\\1', txt)
+ quoted = re.sub(escaped_chars, r"\\\1", txt)
if len(quoted) == len(txt) and not quoted_chars.search(txt):
return txt
else:
return '"' + quoted + '"'
_SHQUOTE_POSIX_ESCAPEDCHARS = re.compile(r'(["`$\\])')
-_SHQUOTE_POSIX_QUOTEDCHARS = re.compile('[|&;<>()\' \t\n]')
+_SHQUOTE_POSIX_QUOTEDCHARS = re.compile("[|&;<>()' \t\n]")
def shquote_posix(txt):
"""Return txt, appropriately quoted for POSIX shells."""
- return _shquote_impl(
- txt, _SHQUOTE_POSIX_ESCAPEDCHARS, _SHQUOTE_POSIX_QUOTEDCHARS)
+ return _shquote_impl(txt, _SHQUOTE_POSIX_ESCAPEDCHARS, _SHQUOTE_POSIX_QUOTEDCHARS)
_SHQUOTE_WINDOWS_ESCAPEDCHARS = re.compile(r'(["\\])')
-_SHQUOTE_WINDOWS_QUOTEDCHARS = re.compile('[ \t\n]')
+_SHQUOTE_WINDOWS_QUOTEDCHARS = re.compile("[ \t\n]")
def shquote_windows(txt):
"""Return txt, appropriately quoted for Windows's cmd.exe."""
return _shquote_impl(
- txt.replace('%', '%%'),
- _SHQUOTE_WINDOWS_ESCAPEDCHARS, _SHQUOTE_WINDOWS_QUOTEDCHARS)
+ txt.replace("%", "%%"),
+ _SHQUOTE_WINDOWS_ESCAPEDCHARS,
+ _SHQUOTE_WINDOWS_QUOTEDCHARS,
+ )
def shquote(txt):
"""Return txt, appropriately quoted for use in a shell command."""
- if os.name in set(('nt', 'os2', 'ce')):
+ if os.name in set(("nt", "os2", "ce")):
return shquote_windows(txt)
else:
return shquote_posix(txt)
def shquote_cmd(cmd):
"""Convert a list of shell arguments to an appropriately quoted string."""
- return ' '.join(map(shquote, cmd))
-
+ return " ".join(map(shquote, cmd))
def clean_dir(path):
"""
Removes directory at path (and all its subdirectories) if it exists,
@@ -148,28 +148,28 @@
slashes on platforms where they are path separators. This prevents
CMake from choking when trying to decode what it thinks are escape
sequences in filenames.
"""
result = safe_pjoin(*args)
- if os.sep == '\\':
- return result.replace('\\', '/')
+ if os.sep == "\\":
+ return result.replace("\\", "/")
else:
return result
def report(msg):
- sys.stderr.write(msg + '\n')
+ sys.stderr.write(msg + "\n")
sys.stderr.flush()
def report_run_cmd(cmd, shell=False, *args, **kwargs):
"""
Print a command, then executes it using subprocess.check_call.
"""
- report('Running: %s' % ((cmd if shell else shquote_cmd(cmd)),))
- sys.stderr.flush()
- subprocess.check_call([str(c) for c in cmd], shell=shell, *args, **kwargs)
+ report("Running: %s" % ((cmd if shell else shquote_cmd(cmd)),))
+ sys.stderr.flush()
+ subprocess.check_call([str(c) for c in cmd], shell=shell, *args, **kwargs)
def mkdirp(path):
"""Create directory path if it does not already exist."""
try:
@@ -207,47 +207,45 @@
else:
return os.path.join(dirname, *args)
def _shquote_impl(txt, escaped_chars, quoted_chars):
- quoted = re.sub(escaped_chars, r'\\\1', txt)
+ quoted = re.sub(escaped_chars, r"\\\1", txt)
if len(quoted) == len(txt) and not quoted_chars.search(txt):
return txt
else:
return '"' + quoted + '"'
_SHQUOTE_POSIX_ESCAPEDCHARS = re.compile(r'(["`$\\])')
-_SHQUOTE_POSIX_QUOTEDCHARS = re.compile('[|&;<>()\' \t\n]')
+_SHQUOTE_POSIX_QUOTEDCHARS = re.compile("[|&;<>()' \t\n]")
def shquote_posix(txt):
"""Return txt, appropriately quoted for POSIX shells."""
- return _shquote_impl(
- txt, _SHQUOTE_POSIX_ESCAPEDCHARS, _SHQUOTE_POSIX_QUOTEDCHARS)
+ return _shquote_impl(txt, _SHQUOTE_POSIX_ESCAPEDCHARS, _SHQUOTE_POSIX_QUOTEDCHARS)
_SHQUOTE_WINDOWS_ESCAPEDCHARS = re.compile(r'(["\\])')
-_SHQUOTE_WINDOWS_QUOTEDCHARS = re.compile('[ \t\n]')
+_SHQUOTE_WINDOWS_QUOTEDCHARS = re.compile("[ \t\n]")
def shquote_windows(txt):
"""Return txt, appropriately quoted for Windows's cmd.exe."""
return _shquote_impl(
- txt.replace('%', '%%'),
- _SHQUOTE_WINDOWS_ESCAPEDCHARS, _SHQUOTE_WINDOWS_QUOTEDCHARS)
+ txt.replace("%", "%%"),
+ _SHQUOTE_WINDOWS_ESCAPEDCHARS,
+ _SHQUOTE_WINDOWS_QUOTEDCHARS,
+ )
def shquote(txt):
"""Return txt, appropriately quoted for use in a shell command."""
- if os.name in set(('nt', 'os2', 'ce')):
+ if os.name in set(("nt", "os2", "ce")):
return shquote_windows(txt)
else:
return shquote_posix(txt)
def shquote_cmd(cmd):
"""Convert a list of shell arguments to an appropriately quoted string."""
- return ' '.join(map(shquote, cmd))
-
-
-
+ return " ".join(map(shquote, cmd))
--- .buildbot/common/worker.py 2025-11-06 16:54:53.000000 +0000
+++ .buildbot/common/worker.py 2025-11-06 17:19:21.760262 +0000
@@ -8,87 +8,88 @@
import errno
import re
import subprocess
from contextlib import contextmanager
+
@contextmanager
def step(step_name, halt_on_fail=False):
- util.report('@@@BUILD_STEP {}@@@'.format(step_name))
+ util.report("@@@BUILD_STEP {}@@@".format(step_name))
if halt_on_fail:
- util.report('@@@HALT_ON_FAILURE@@@')
+ util.report("@@@HALT_ON_FAILURE@@@")
try:
yield
except Exception as e:
if isinstance(e, subprocess.CalledProcessError):
- util.report(
- '{} exited with return code {}.'.format(e.cmd, e.returncode)
- )
+ util.report("{} exited with return code {}.".format(e.cmd, e.returncode))
else:
- util.report('The build step threw an exception...')
+ util.report("The build step threw an exception...")
traceback.print_exc()
- util.report('@@@STEP_FAILURE@@@')
+ util.report("@@@STEP_FAILURE@@@")
if halt_on_fail:
exit(1)
finally:
sys.stdout.flush()
def get_steps(makefile):
try:
- make_cmd = build_make_cmd(makefile, 'get-steps')
+ make_cmd = build_make_cmd(makefile, "get-steps")
raw_steps = capture_cmd_stdout(make_cmd)
- return raw_steps.decode('utf-8').split('\n')[:-1]
+ return raw_steps.decode("utf-8").split("\n")[:-1]
except:
return []
+
def build_make_cmd(makefile, target, make_vars={}):
- make_cmd = ['make', '-f', makefile]
+ make_cmd = ["make", "-f", makefile]
if not target is None:
make_cmd.append(target)
- for k,v in make_vars.items():
+ for k, v in make_vars.items():
make_cmd += ["{}={}".format(k, v)]
return make_cmd
+
def capture_cmd_stdout(cmd, **kwargs):
- return subprocess.run(cmd, shell=False, check=True, stdout=subprocess.PIPE, **kwargs).stdout
+ return subprocess.run(
+ cmd, shell=False, check=True, stdout=subprocess.PIPE, **kwargs
+ ).stdout
+
def run_command(cmd, **kwargs):
util.report_run_cmd(cmd, **kwargs)
def run_ninja(args, targets, **kwargs):
- cmd = ['ninja', *targets]
+ cmd = ["ninja", *targets]
if args.jobs:
- args .append(f'-j{args.jobs}')
- #env = os.environ.copy()
- #env['NINJA_STATUS'] = "[%p/%es :: %u->%r->%f (of %t)] "
+ args.append(f"-j{args.jobs}")
+ # env = os.environ.copy()
+ # env['NINJA_STATUS'] = "[%p/%es :: %u->%r->%f (of %t)] "
util.report_run_cmd(cmd, **kwargs)
-
-
def checkout(giturl, sourcepath):
if not os.path.exists(sourcepath):
- run_command(['git', 'clone', giturl, sourcepath])
+ run_command(["git", "clone", giturl, sourcepath])
# Reset repository state no matter what there was before
- run_command(['git', '-C', sourcepath, 'stash', '--all'])
- run_command(['git', '-C', sourcepath, 'stash', 'clear'])
+ run_command(["git", "-C", sourcepath, "stash", "--all"])
+ run_command(["git", "-C", sourcepath, "stash", "clear"])
# Fetch and checkout the newest
- run_command(['git', '-C', sourcepath, 'fetch', 'origin'])
- run_command(['git', '-C', sourcepath, 'checkout', 'origin/main', '--detach'])
+ run_command(["git", "-C", sourcepath, "fetch", "origin"])
+ run_command(["git", "-C", sourcepath, "checkout", "origin/main", "--detach"])
-def clean_on_request(args, always=[],on_clobber=[],on_clean=[]):
+def clean_on_request(args, always=[], on_clobber=[], on_clean=[]):
cleanset = always
if args.clobber or args.clean:
# Clean implies clobber
cleanset += on_clobber
- if args.clean:
+ if args.clean:
cleanset += on_clean
for d in cleanset:
- with step(f'delete-{os.path.basename(d)}'):
- util.clean_dir(d)
-
+ with step(f"delete-{os.path.basename(d)}"):
+ util.clean_dir(d)
--- polly/.buildbot/polly-x86_64-linux-test-suite.py 2025-11-06 16:54:53.000000 +0000
+++ polly/.buildbot/polly-x86_64-linux-test-suite.py 2025-11-06 17:19:21.801595 +0000
@@ -3,99 +3,129 @@
import os
import sys
import argparse
import pathlib
-llvmsrcroot = os.path.normpath(f"{__file__}/../../..") # Adapt to location in source tree
-sys.path.insert(0, os.path.join(llvmsrcroot, '.buildbot/common'))
+llvmsrcroot = os.path.normpath(
+ f"{__file__}/../../.."
+) # Adapt to location in source tree
+sys.path.insert(0, os.path.join(llvmsrcroot, ".buildbot/common"))
import worker
# For information
-for k,v in os.environ.items():
+for k, v in os.environ.items():
print(f"{k}={v}")
+
def relative_if_possible(path, relative_to):
path = os.path.normpath(path)
try:
result = os.path.relpath(path, start=relative_to)
return result if result else path
except Exception:
- return path
+ return path
parser = argparse.ArgumentParser()
-parser.add_argument('--cachefile', default=relative_if_possible(pathlib.Path(__file__).with_suffix('.cmake'), llvmsrcroot), help='CMake cache seed')
-parser.add_argument('--jobs', '-j', help='Override the number fo default jobs')
-parser.add_argument('--clean', type=bool, default=os.environ.get('BUILDBOT_CLEAN'), help='Whether to delete source-, install-, and build-dirs before running')
-parser.add_argument('--clobber', type=bool, default=os.environ.get('BUILDBOT_CLOBBER'), help='Whether to delete install- and build-dirs before running')
+parser.add_argument(
+ "--cachefile",
+ default=relative_if_possible(
+ pathlib.Path(__file__).with_suffix(".cmake"), llvmsrcroot
+ ),
+ help="CMake cache seed",
+)
+parser.add_argument("--jobs", "-j", help="Override the number fo default jobs")
+parser.add_argument(
+ "--clean",
+ type=bool,
+ default=os.environ.get("BUILDBOT_CLEAN"),
+ help="Whether to delete source-, install-, and build-dirs before running",
+)
+parser.add_argument(
+ "--clobber",
+ type=bool,
+ default=os.environ.get("BUILDBOT_CLOBBER"),
+ help="Whether to delete install- and build-dirs before running",
+)
args, _ = parser.parse_known_args()
cwd = os.getcwd()
+buildbot_buildername = os.environ.get("BUILDBOT_BUILDERNAME")
+buildbot_revision = os.environ.get("BUILDBOT_REVISION", "origin/main")
-
-buildbot_buildername = os.environ.get('BUILDBOT_BUILDERNAME')
-buildbot_revision = os.environ.get('BUILDBOT_REVISION', 'origin/main')
-
-
-os.environ['NINJA_STATUS'] = "[%p/%es :: %u->%r->%f (of %t)] "
+os.environ["NINJA_STATUS"] = "[%p/%es :: %u->%r->%f (of %t)] "
llvmbuilddir = "build-llvm"
testsuitesrcdir = "testsuite.src"
testsuitebuilddir = "build-testsuite"
-llvminstalldir = 'install-llvm'
+llvminstalldir = "install-llvm"
print(f"Using build directory: {cwd}")
# NEVER clean llvmsrcroot or cwd!
-worker.clean_on_request(args, always=[llvminstalldir,testsuitebuilddir],on_clobber=[llvmbuilddir],on_clean=[testsuitesrcdir])
+worker.clean_on_request(
+ args,
+ always=[llvminstalldir, testsuitebuilddir],
+ on_clobber=[llvmbuilddir],
+ on_clean=[testsuitesrcdir],
+)
-with worker.step('configure-llvm', halt_on_fail=True):
- cmd = ['cmake',
- '-S', os.path.join(llvmsrcroot,'llvm'),
- '-B', llvmbuilddir,
- '-G', 'Ninja',
- '-C', os.path.join(llvmsrcroot, args.cachefile),
- f'-DCMAKE_INSTALL_PREFIX={llvminstalldir}'
+with worker.step("configure-llvm", halt_on_fail=True):
+ cmd = [
+ "cmake",
+ "-S",
+ os.path.join(llvmsrcroot, "llvm"),
+ "-B",
+ llvmbuilddir,
+ "-G",
+ "Ninja",
+ "-C",
+ os.path.join(llvmsrcroot, args.cachefile),
+ f"-DCMAKE_INSTALL_PREFIX={llvminstalldir}",
]
if args.jobs:
- cmd.append(f'-DLLVM_LIT_ARGS=-svj{args.jobs}')
+ cmd.append(f"-DLLVM_LIT_ARGS=-svj{args.jobs}")
worker.run_command(cmd)
-with worker.step('build-llvm', halt_on_fail=True):
- worker.run_command(['ninja', '-C', llvmbuilddir])
+with worker.step("build-llvm", halt_on_fail=True):
+ worker.run_command(["ninja", "-C", llvmbuilddir])
-with worker.step('check-polly'):
- worker.run_command(['ninja', '-C', llvmbuilddir, 'check-polly'])
+with worker.step("check-polly"):
+ worker.run_command(["ninja", "-C", llvmbuilddir, "check-polly"])
-with worker. step('install-llvm', halt_on_fail=True):
- worker.run_command(['ninja', '-C', llvmbuilddir, 'install'])
+with worker.step("install-llvm", halt_on_fail=True):
+ worker.run_command(["ninja", "-C", llvmbuilddir, "install"])
-with worker. step('clone-testsuite', halt_on_fail=True):
- worker.checkout('https://github.com/llvm/llvm-test-suite',testsuitesrcdir)
+with worker.step("clone-testsuite", halt_on_fail=True):
+ worker.checkout("https://github.com/llvm/llvm-test-suite", testsuitesrcdir)
-with worker.step('configure-testsuite', halt_on_fail=True):
- cmd = ['cmake',
- '-S', testsuitesrcdir,
- '-B', testsuitebuilddir,
- '-G', 'Ninja',
- '-C', os.path.join(llvmsrcroot, args.cachefile),
- '-DCMAKE_BUILD_TYPE=Release',
- f'-DCMAKE_C_COMPILER={os.path.abspath(llvminstalldir)}/bin/clang',
- f'-DCMAKE_CXX_COMPILER={os.path.abspath(llvminstalldir)}/bin/clang++',
- f'-DCMAKE_C_FLAGS=-mllvm -polly',
- f'-DCMAKE_CXX_FLAGS=-mllvm -polly',
+with worker.step("configure-testsuite", halt_on_fail=True):
+ cmd = [
+ "cmake",
+ "-S",
+ testsuitesrcdir,
+ "-B",
+ testsuitebuilddir,
+ "-G",
+ "Ninja",
+ "-C",
+ os.path.join(llvmsrcroot, args.cachefile),
+ "-DCMAKE_BUILD_TYPE=Release",
+ f"-DCMAKE_C_COMPILER={os.path.abspath(llvminstalldir)}/bin/clang",
+ f"-DCMAKE_CXX_COMPILER={os.path.abspath(llvminstalldir)}/bin/clang++",
+ f"-DCMAKE_C_FLAGS=-mllvm -polly",
+ f"-DCMAKE_CXX_FLAGS=-mllvm -polly",
]
if args.jobs:
- cmd.append(f'-DLLVM_LIT_ARGS=-svj{args.jobs}')
+ cmd.append(f"-DLLVM_LIT_ARGS=-svj{args.jobs}")
worker.run_command(cmd)
-with worker.step('build-testsuite', halt_on_fail=True):
- worker. run_ninja(args, ['-C', testsuitebuilddir])
+with worker.step("build-testsuite", halt_on_fail=True):
+ worker.run_ninja(args, ["-C", testsuitebuilddir])
-with worker.step('check-testsuite'):
- worker.run_ninja(args, ['-C', testsuitebuilddir, 'check'])
-
+with worker.step("check-testsuite"):
+ worker.run_ninja(args, ["-C", testsuitebuilddir, "check"])
``````````
</details>
https://github.com/llvm/llvm-project/pull/166809
More information about the llvm-commits
mailing list