/
TestSuiteBuilder.py
97 lines (81 loc) · 3.47 KB
/
TestSuiteBuilder.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
from zorg.buildbot.builders.UnifiedTreeBuilder import getCmakeWithNinjaBuildFactory
from buildbot.plugins import util
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 = None,
env = None,
lit_args = [],
**kwargs):
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_src_dir = util.Interpolate('%(prop:builddir)s/' + 'test/test-suite')
test_suite_workdir='test/sandbox/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]
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 = None,
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