Skip to content

Commit 1bd0f70

Browse files
authored
Use annotation protocol for the Fuchsia builder (#72)
This streamlines development as we can deploy changes without having to restart the Buildbot master.
1 parent c37d176 commit 1bd0f70

File tree

3 files changed

+92
-155
lines changed

3 files changed

+92
-155
lines changed

buildbot/osuosl/master/config/builders.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
from zorg.buildbot.builders import AOSPBuilder
1818
from zorg.buildbot.builders import AnnotatedBuilder
1919
from zorg.buildbot.builders import LLDPerformanceTestsuite
20-
from zorg.buildbot.builders import FuchsiaBuilder
2120
from zorg.buildbot.builders import XToolchainBuilder
2221
from zorg.buildbot.builders import TestSuiteBuilder
2322
from zorg.buildbot.builders import BOLTBuilder
@@ -40,7 +39,6 @@
4039
reload(AOSPBuilder)
4140
reload(AnnotatedBuilder)
4241
reload(LLDPerformanceTestsuite)
43-
reload(FuchsiaBuilder)
4442
reload(XToolchainBuilder)
4543
reload(TestSuiteBuilder)
4644
reload(BOLTBuilder)
@@ -1819,7 +1817,22 @@
18191817
'tags' : ["toolchain"],
18201818
'workernames' :["fuchsia-debian-64-us-central1-a-1", "fuchsia-debian-64-us-central1-b-1"],
18211819
'builddir': "fuchsia-x86_64-linux",
1822-
'factory': FuchsiaBuilder.getFuchsiaToolchainBuildFactory()},
1820+
'factory' : AnnotatedBuilder.getAnnotatedBuildFactory(
1821+
script="fuchsia-linux.py",
1822+
depends_on_projects=[
1823+
'bolt',
1824+
'clang',
1825+
'clang-tools-extra',
1826+
'compiler-rt',
1827+
'libc',
1828+
'libcxx',
1829+
'libcxxabi',
1830+
'libunwind',
1831+
'lld',
1832+
'lldb',
1833+
'llvm',
1834+
'polly'
1835+
])},
18231836

18241837
# libc Builders.
18251838

zorg/buildbot/builders/FuchsiaBuilder.py

Lines changed: 0 additions & 152 deletions
This file was deleted.
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
#!/usr/bin/env python3
2+
3+
import argparse
4+
import os
5+
import subprocess
6+
import sys
7+
import traceback
8+
import util
9+
10+
from contextlib import contextmanager
11+
12+
13+
@contextmanager
14+
def step(step_name, halt_on_fail=False):
15+
util.report(f'@@@BUILD_STEP {step_name}@@@')
16+
if halt_on_fail:
17+
util.report('@@@HALT_ON_FAILURE@@@')
18+
try:
19+
yield
20+
except subprocess.CalledProcessError as e:
21+
util.report(f'{e.cmd} exited with return code {e.returncode}.')
22+
util.report('@@@STEP_FAILURE@@@')
23+
except:
24+
util.report('The build step threw an exception...')
25+
traceback.print_exc()
26+
util.report('@@@STEP_EXCEPTION@@@')
27+
28+
29+
def run_command(cmd, directory='.'):
30+
util.report_run_cmd(cmd, cwd=directory)
31+
32+
33+
def main(argv):
34+
parser = argparse.ArgumentParser()
35+
parser.add_argument('--sdk-dir', default='/usr/local/fuchsia/sdk',
36+
help='Path to Fuchsia SDK')
37+
args, _ = parser.parse_known_args()
38+
39+
buildbot_buildername = os.environ.get('BUILDBOT_BUILDERNAME')
40+
buildbot_clobber = os.environ.get('BUILDBOT_CLOBBER') is not None
41+
buildbot_revision = os.environ.get('BUILDBOT_REVISION', 'origin/main')
42+
43+
cwd = os.getcwd()
44+
build_dir = cwd
45+
source_dir = os.path.join(cwd, '..', 'llvm-project')
46+
47+
if buildbot_clobber:
48+
with step('clean', halt_on_fail=True):
49+
util.clean_dir(build_dir)
50+
51+
with step('configure', halt_on_fail=True):
52+
cmake_args = [
53+
'-S', f'{source_dir}/llvm',
54+
'-B', build_dir,
55+
'-G', 'Ninja',
56+
'-D', 'BOOTSTRAP_LLVM_ENABLE_LTO=OFF',
57+
'-D', 'LLVM_ENABLE_LTO=OFF',
58+
'-D', f'FUCHSIA_SDK={args.sdk_dir}',
59+
'-C', f'{source_dir}/clang/cmake/caches/Fuchsia.cmake',
60+
]
61+
62+
run_command(['cmake'] + cmake_args)
63+
64+
with step('build'):
65+
run_command(['ninja', '-C', build_dir, 'stage2-toolchain-distribution'])
66+
67+
with step('check'):
68+
run_command(['ninja', '-C', build_dir] +
69+
[f'stage2-check-{p}' for p in ('llvm', 'clang', 'lld')])
70+
71+
return 0
72+
73+
74+
if __name__ == '__main__':
75+
sys.path.append(os.path.dirname(__file__))
76+
sys.exit(main(sys.argv))

0 commit comments

Comments
 (0)