blob: fb9c3bb4957451743b738ee3cb1a4653999b5f08 [file] [log] [blame]
from zorg.buildbot.builders.UnifiedTreeBuilder import getCmakeWithNinjaBuildFactory
from buildbot.plugins import util
from buildbot.steps.shell import ShellCommand
from zorg.buildbot.commands.CmakeCommand import CmakeCommand
from zorg.buildbot.commands.NinjaCommand import NinjaCommand
from zorg.buildbot.commands.LitTestCommand import LitTestCommand
# This builder is uses UnifiedTreeBuilders and adds running
# llvm-test-suite with cmake and ninja step.
def addTestSuiteStep(
f,
compiler_dir = '.',
env = None,
lit_args = None,
**kwargs):
# Set defaults
if env is None:
env = {}
if lit_args is None:
lit_args = []
cc = util.Interpolate('-DCMAKE_C_COMPILER=' + '%(prop:builddir)s/'+compiler_dir+'/bin/clang')
cxx = util.Interpolate('-DCMAKE_CXX_COMPILER=' + '%(prop:builddir)s/'+compiler_dir+'/bin/clang++')
lit = util.Interpolate('%(prop:builddir)s/' + compiler_dir + '/bin/llvm-lit')
test_suite_base_dir = util.Interpolate('%(prop:builddir)s/' + 'test')
test_suite_src_dir = util.Interpolate('%(prop:builddir)s/' + 'test/test-suite')
test_suite_workdir = util.Interpolate('%(prop:builddir)s/' + 'test/build-test-suite')
cmake_lit_arg = util.Interpolate('-DTEST_SUITE_LIT:FILEPATH=' + '%(prop:builddir)s/' + compiler_dir + '/bin/llvm-lit')
# used for cmake building test-suite step
options = [cc, cxx, cmake_lit_arg]
# always clobber the build directory to test each new compiler
f.addStep(ShellCommand(name='Clean Test Suite Build dir',
command=['rm', '-rf', test_suite_workdir],
haltOnFailure=True,
description='Removing the Test Suite build directory',
workdir=test_suite_base_dir,
env=env))
f.addGetSourcecodeForProject(
project='test-suite',
src_dir=test_suite_src_dir,
alwaysUseLatest=True)
f.addStep(CmakeCommand(name='cmake Test Suite',
haltOnFailure=True,
description='Running cmake on Test Suite dir',
workdir=test_suite_workdir,
options=options,
path=test_suite_src_dir,
generator='Ninja'))
f.addStep(NinjaCommand(name='ninja Test Suite',
description='Running Ninja on Test Suite dir',
haltOnFailure=True,
workdir=test_suite_workdir))
f.addStep(LitTestCommand(name='Run Test Suite with lit',
haltOnFailure=True,
description='Running test suite tests',
workdir=test_suite_workdir,
command=[lit] + lit_args + ['.'],
env=env,
**kwargs))
return f
def getTestSuiteBuildFactory(
depends_on_projects = None,
enable_runtimes = "auto",
targets = None,
llvm_srcdir = None,
obj_dir = None,
checks = None,
install_dir = None,
clean = False,
extra_configure_args = None,
env = None,
**kwargs):
# handle the -DCMAKE args for lit
lit_args = list()
if any("DLLVM_LIT_ARGS" in arg for arg in extra_configure_args):
arg = [arg for arg in extra_configure_args
if "DLLVM_LIT_ARGS" in arg][0]
lit_args = arg.split("=")[1]
lit_args = lit_args.split(" ")
f = getCmakeWithNinjaBuildFactory(
depends_on_projects = depends_on_projects,
enable_runtimes = enable_runtimes,
targets = targets,
llvm_srcdir = llvm_srcdir,
obj_dir = obj_dir,
checks = checks,
install_dir = install_dir,
clean = clean,
extra_configure_args = extra_configure_args,
env = env,
**kwargs)
addTestSuiteStep(f,
compiler_dir=f.obj_dir,
env=env,
lit_args=lit_args,
**kwargs)
return f