Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(419)

Side by Side Diff: client/tools/pub_buildbot.py

Issue 11236012: Add script for pub buildbots. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « client/tools/buildbot_annotated_steps.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/python
2
3 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file.
6
7 """Pub buildbot steps
8
9 Runs tests for pub and the pub packages that are hosted in the main Dart repo.
10 This file is heartily inspired by utils/compiler/buildbot.py.
11 """
12
13 import optparse
14 import os
15 from os.path import abspath
16 from os.path import dirname
17 import re
18 import subprocess
19 import sys
20
21 BUILDER_NAME = 'BUILDBOT_BUILDERNAME'
22 BUILDER_CLOBBER = 'BUILDBOT_CLOBBER'
23
24 DART_PATH = dirname(dirname(dirname(abspath(__file__))))
25
26 PUB_BUILDER = r'pub-(linux|mac|win)'
27
28 NO_COLOR_ENV = dict(os.environ)
29 NO_COLOR_ENV['TERM'] = 'nocolor'
30
31
32 def GetBuildInfo():
33 """Returns info for the current buildbot based on the name of the builder.
34
35 Currently, this is just:
36 - mode: always "release"
37 - system: "linux", "mac", or "win"
38 """
39
40 # For testing the bot locally, allow the user to pass in a buildbot name.
Emily Fortuna 2012/10/19 21:35:53 :-D
41 parser = optparse.OptionParser()
42 parser.add_option('-n', '--name', dest='name', help='The name of the build'
43 'bot you would like to emulate (ex: web-chrome-win7)', default=None)
Emily Fortuna 2012/10/19 21:35:53 nit: change the name to a pub-like bot name instea
Bob Nystrom 2012/10/20 01:06:38 Done.
44 args, _ = parser.parse_args()
45
46 if args.name:
47 builder_name = args.name
48 else:
49 builder_name = os.environ.get(BUILDER_NAME)
50 if not builder_name:
51 print 'Use -n $BUILDBOT_NAME for the bot you would like to emulate.'
52 sys.exit(1)
53
54 pub_pattern = re.match(PUB_BUILDER, builder_name)
55 if not pub_pattern:
56 print 'Could not handle unfamiliar bot name "$builder_name".'
57 sys.exit(1)
58
59 system = pub_pattern.group(1)
60 if system == 'win': system = 'windows'
61
62 return ('release', system)
63
64
65 def TestStepName(name, flags):
66 # Filter out flags with '=' as this breaks the /stats feature of the
67 # build bot.
68 flags = [x for x in flags if not '=' in x]
69 return ('%s tests %s' % (name, ' '.join(flags))).strip()
70
71
72 def TestStep(name, mode, system, compiler, runtime, targets, flags):
73 step_name = TestStepName(name, flags)
74 print '@@@BUILD_STEP %s@@@' % step_name
75 sys.stdout.flush()
76
77 cmd = [
78 sys.executable, os.path.join(os.curdir, 'tools', 'test.py'),
79 '--step_name=' + step_name,
80 '--mode=' + mode,
81 '--compiler=' + compiler,
82 '--runtime=' + runtime,
83 '--progress=buildbot',
84 '-v', '--time', '--use-sdk', '--checked', '--report'
85 ]
86
87 if flags:
88 cmd.extend(flags)
89 cmd.extend(targets)
90
91 print 'Running: %s' % (' '.join(cmd))
92 exit_code = subprocess.call(cmd, env=NO_COLOR_ENV)
93 return CheckFailure(exit_code)
94
95
96 def BuildSDK(mode, system):
Emily Fortuna 2012/10/19 21:35:53 A lot of this is pretty much exactly copied code f
Bob Nystrom 2012/10/20 01:06:38 I don't want to add pub stuff to the original scri
97 """ build the SDK.
98 Args:
99 - mode: either 'debug' or 'release'
100 - system: either 'linux', 'mac', or 'win7'
101 """
102 print '@@@BUILD_STEP build sdk@@@'
103 args = [sys.executable, './tools/build.py', '--mode=' + mode, 'create_sdk']
104 print 'Building SDK: %s' % (' '.join(args))
105 return subprocess.call(args, env=NO_COLOR_ENV)
106
107
108 def ClobberBuilder(mode):
109 """ Clobber the builder before we do the build, if appropriate.
110 Args:
111 - mode: either 'debug' or 'release'
112 """
113 if os.environ.get(BUILDER_CLOBBER) != "1":
114 return 0
115
116 print '@@@BUILD_STEP Clobber@@@'
117 cmd = [sys.executable,
118 './tools/clean_output_directory.py',
119 '--mode=' + mode]
120 print 'Clobbering %s' % (' '.join(cmd))
121 return subprocess.call(cmd, env=NO_COLOR_ENV)
122
123
124 def CheckFailure(status):
125 """ Prints the appropriate buildbot message if status is a failure code.
126 """
127 if status != 0:
128 print '@@@STEP_FAILURE@@@'
129
130 return status
131
132
133 def main():
134 if len(sys.argv) == 0:
135 print 'Script pathname not known, giving up.'
136 return 1
137
138 (mode, system) = GetBuildInfo()
139
140 # Make sure we are in the dart directory
141 os.chdir(DART_PATH)
142
143 status = ClobberBuilder(mode)
144 if CheckFailure(status): return status
145
146 status = BuildSDK(mode, system)
147 if CheckFailure(status): return status
148
149 # TODO(rnystrom): Eventually test other targets here like 'utils'?
150 status = TestStep('pub', mode, system, 'none', 'vm', ['pub'], [])
151 if CheckFailure(status): return status
152
153 if __name__ == '__main__':
154 sys.exit(main())
OLDNEW
« no previous file with comments | « client/tools/buildbot_annotated_steps.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698