Fixing issues due to Buildbot 0.8.4p1 upgrade.

BUG=None
TEST=Tested with local edits on buildmaster and try master.

Review URL: https://webrtc-codereview.appspot.com/490007

git-svn-id: http://webrtc.googlecode.com/svn/trunk@2024 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
kjellander@webrtc.org 2012-04-13 09:17:05 +00:00
parent 9784512bf3
commit 04d452e968
4 changed files with 579 additions and 42 deletions

8
tools/.gitignore vendored
View File

@ -28,12 +28,6 @@ state.sqlite-wal
twistd.log*
twistd.pid
# Output by buildbot into public_html:
bg_gradient.jpg
default.css
favicon.ico.new
robots.txt
# Chrome buildbot scripts
/continuous_build/build
@ -51,6 +45,7 @@ robots.txt
/continuous_build/build_internal/masters/master.webrtc/linux-valgrind
/continuous_build/build_internal/masters/master.webrtc/mac-slave-2
/continuous_build/build_internal/masters/master.webrtc/mac-slave-3
/continuous_build/build_internal/masters/master.webrtc/public_html
/continuous_build/build_internal/masters/master.webrtc/win-32-dbg
/continuous_build/build_internal/masters/master.webrtc/win-32-release
/continuous_build/build_internal/masters/master.webrtc/video
@ -58,6 +53,7 @@ robots.txt
/continuous_build/build_internal/masters/master.tryserver.webrtc/linux-trybot-2
/continuous_build/build_internal/masters/master.tryserver.webrtc/mac-trybot-1
/continuous_build/build_internal/masters/master.tryserver.webrtc/mac-trybot-2
/continuous_build/build_internal/masters/master.tryserver.webrtc/public_html
/continuous_build/build_internal/masters/master.tryserver.webrtc/win-trybot-1
/continuous_build/build_internal/masters/master.tryserver.webrtc/win-trybot-2

View File

@ -7,7 +7,7 @@
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
__author__ = 'ivinnichenko@webrtc.org (Illya Vinnichenko)'
__author__ = 'kjellander@webrtc.org (Henrik Kjellander)'
c = BuildmasterConfig = {}
@ -164,7 +164,18 @@ chromeos_factory.EnableBuild(chrome_os=True)
chromeos_factory.EnableTests(linux_normal_tests)
linux_chrome_factory = utils.WebRTCChromeFactory(
utils.BuildStatusOracle('linux_chrome'))
utils.BuildStatusOracle('linux_chrome'),
gclient_solution_name='src',
svn_url='http://src.chromium.org/svn/trunk/src',
custom_deps_list=[
('src/third_party/webrtc',
'http://webrtc.googlecode.com/svn/stable/src'),
('src/third_party/WebKit/LayoutTests',
None),
('src/chrome/tools/test/reference_build',
None),
],
safesync_url='http://chromium-status.appspot.com/lkgr')
linux_chrome_factory.EnableBuild()
linux_clang = utils.WebRTCLinuxFactory(
@ -173,7 +184,11 @@ linux_clang.EnableBuild(clang=True)
linux_clang.EnableTests(linux_normal_tests)
linux_valgrind = utils.WebRTCLinuxFactory(
utils.BuildStatusOracle('linux_valgrind'), valgrind_enabled=True)
utils.BuildStatusOracle('linux_valgrind'), valgrind_enabled=True,
custom_deps_list=[
('trunk/third_party/valgrind',
'http://src.chromium.org/svn/trunk/deps/third_party/valgrind/binaries'),
])
linux_valgrind.EnableBuild(release=True)
# Filter out disabled Valgrind tests:
valgrind_tests = filter(lambda test: test not in VALGRIND_DISABLED_TESTS,

View File

@ -0,0 +1,504 @@
body {
margin-bottom:50px;
}
body, td {
font-family: Verdana, Cursor;
font-size: 10px;
font-weight: bold;
}
a:link,a:visited,a:active {
color: #444;
}
a:hover {
color: #000000;
}
table {
border-spacing: 1px 1px;
}
table td {
padding: 3px 0px 3px 0px;
text-align: center;
}
.closerbox {
border: 1px solid #aaa;
background-color: #eef;
border-radius: 8px;
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
}
.closerbox table {
padding: 0 4px;
}
.closerbox .title {
background-color: #ccc;
border-top-left-radius: 8px;
-webkit-border-top-left-radius: 8px;
-moz-border-top-left-radius: 8px;
border-top-right-radius: 8px;
-webkit-border-top-right-radius: 8px;
-moz-border-top-right-radius: 8px;
padding: 0 0 2px;
}
.Project {
width: 100px;
}
.LastBuild, .Activity {
padding: 0 0 0 4px;
}
.LastBuild, .Activity, .Builder, .BuildStep {
width: 155px;
max-width: 155px;
}
/* Chromium Specific styles */
div.BuildResultInfo {
color: #444;
}
div.Announcement {
margin-bottom: 1em;
}
div.Announcement > a:hover {
color: black;
}
div.Announcement > div.Notice {
background-color: #afdaff;
padding: 0.5em;
font-size: 16px;
text-align: center;
}
div.Announcement > div.Open {
border: 3px solid #8fdf5f;
padding: 0.5em;
font-size: 16px;
text-align: center;
}
div.Announcement > div.Closed {
border: 5px solid #e98080;
padding: 0.5em;
font-size: 24px;
font-weight: bold;
text-align: center;
}
td.Time {
color: #000;
border-bottom: 1px solid #aaa;
background-color: #eee;
}
td.Activity, td.Change, td.Builder {
color: #333333;
background-color: #CCCCCC;
}
td.Change {
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
}
td.Event {
color: #777;
background-color: #ddd;
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
}
td.Activity {
border-top-left-radius: 10px;
-webkit-border-top-left-radius: 10px;
-moz-border-radius-topleft: 10px;
min-height: 20px;
padding: 2px 0 2px 0;
}
td.idle, td.waiting, td.offline, td.building {
border-top-left-radius: 0px;
-webkit-border-top-left-radius: 0px;
-moz-border-radius-topleft: 0px;
}
.LastBuild {
border-top-left-radius: 5px;
-webkit-border-top-left-radius: 5px;
-moz-border-radius-topleft: 5px;
border-top-right-radius: 5px;
-webkit-border-top-right-radius: 5px;
-moz-border-radius-topright: 5px;
}
/* Console view styles */
td.DevRev {
padding: 4px 8px 4px 8px;
color: #333333;
border-top-left-radius: 5px;
-webkit-border-top-left-radius: 5px;
-moz-border-radius-topleft: 5px;
background-color: #eee;
width: 1%;
}
td.DevRevCollapse {
border-bottom-left-radius: 5px;
-webkit-border-bottom-left-radius: 5px;
-moz-border-radius-bottomleft: 5px;
}
td.DevName {
padding: 4px 8px 4px 8px;
color: #333333;
background-color: #eee;
width: 1%;
text-align: left;
}
td.DevStatus {
padding: 4px 4px 4px 4px;
color: #333333;
background-color: #eee;
}
td.DevSlave {
padding: 4px 4px 4px 4px;
color: #333333;
background-color: #eee;
}
td.first {
border-top-left-radius: 5px;
-webkit-border-top-left-radius: 5px;
-moz-border-radius-topleft: 5px;
}
td.last {
border-top-right-radius: 5px;
-webkit-border-top-right-radius: 5px;
-moz-border-radius-topright: 5px;
}
td.DevStatusCategory {
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-width:1px;
border-style:solid;
}
td.DevStatusCollapse {
border-bottom-right-radius: 5px;
-webkit-border-bottom-right-radius: 5px;
-moz-border-radius-bottomright: 5px;
}
td.DevDetails {
font-weight: normal;
padding: 8px 8px 8px 8px;
color: #333333;
background-color: #eee;
text-align: left;
}
td.DevComment {
font-weight: normal;
padding: 8px 8px 8px 8px;
color: #333333;
border-bottom-right-radius: 5px;
-webkit-border-bottom-right-radius: 5px;
-moz-border-radius-bottomright: 5px;
border-bottom-left-radius: 5px;
-webkit-border-bottom-left-radius: 5px;
-moz-border-radius-bottomleft: 5px;
background-color: #eee;
text-align: left;
}
td.Alt {
background-color: #CCCCCC;
}
.legend {
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
width: 100px;
max-width: 100px;
text-align:center;
padding: 2px 2px 2px 2px;
height:14px;
white-space:nowrap;
}
.DevStatusBox {
text-align:center;
height:20px;
padding:0 2px;
line-height:0;
white-space:nowrap;
}
.DevStatusBox a {
opacity: 0.85;
border-width:1px;
border-style:solid;
border-radius: 4px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
display:block;
width:90%;
height:20px;
line-height:20px;
margin-left: auto;
margin-right: auto;
}
.DevSlaveBox {
text-align:center;
height:10px;
padding:0 2px;
line-height:0;
white-space:nowrap;
}
.DevSlaveBox a {
opacity: 0.85;
border-width:1px;
border-style:solid;
border-radius: 4px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
display:block;
width:90%;
height:10px;
line-height:20px;
margin-left: auto;
margin-right: auto;
}
a.noround {
border-radius: 0px;
-webkit-border-radius: 0px;
-moz-border-radius: 0px;
position: relative;
margin-top: -8px;
margin-bottom: -8px;
height: 36px;
border-top-width: 0;
border-bottom-width: 0;
}
a.begin {
border-top-width:1px;
position: relative;
margin-top: 0px;
margin-bottom: -7px;
height: 27px;
border-top-left-radius: 4px;
-webkit-border-top-left-radius: 4px;
-moz-border-radius-topleft: 4px;
border-top-right-radius: 4px;
-webkit-border-top-right-radius: 4px;
-moz-border-radius-topright: 4px;
}
a.end {
border-bottom-width:1px;
position: relative;
margin-top: -7px;
margin-bottom: 0px;
height: 27px;
border-bottom-left-radius: 4px;
-webkit-border-bottom-left-radius: 4px;
-moz-border-radius-bottomleft: 4px;
border-bottom-right-radius: 4px;
-webkit-border-bottom-right-radius: 4px;
-moz-border-radius-bottomright: 4px;
}
.center_align {
text-align: center;
}
.right_align {
text-align: right;
}
.left_align {
text-align: left;
}
div.BuildWaterfall {
border-radius: 7px;
-webkit-border-radius: 7px;
-moz-border-radius: 7px;
position: absolute;
left: 0px;
top: 0px;
background-color: #FFFFFF;
padding: 4px 4px 4px 4px;
float: left;
display: none;
border-width: 1px;
border-style: solid;
}
/* LastBuild, BuildStep states */
.success {
color: #FFFFFF;
background-color: #8fdf5f;
border-color: #4F8530;
}
.failure {
color: #FFFFFF;
background-color: #e98080;
border-color: #A77272;
}
.warnings {
color: #FFFFFF;
background-color: #ffc343;
border-color: #C29D46;
}
.never {
color: #FFFFFF;
background-color: #f0f0e0;
border-color: #A77272;
}
.exception, .offline, .retry {
color: #FFFFFF;
background-color: #e0b0ff;
border-color: #ACA0B3;
}
.start,.running, td.building {
color: #666666;
background-color: #fffc6c;
border-color: #C5C56D;
}
.running_failure {
color: #FFFFFF;
background-color: #fffc6c;
border-color: #ff0000;
}
.start {
border-bottom-left-radius: 10px;
-webkit-border-bottom-left-radius: 10px;
-moz-border-radius-bottomleft: 10px;
border-bottom-right-radius: 10px;
-webkit-border-bottom-right-radius: 10px;
-moz-border-radius-bottomright: 10px;
}
.notstarted {
border-width:1px;
border-style:solid;
border-color:#aaa;
}
.closed {
background-color: #ff0000;
}
.closed .large {
font-size: 1.5em;
font-weight: bolder;
}
td.Project a:hover, td.start a:hover {
color: #000;
}
.mini-box {
text-align:center;
height:20px;
padding:0 2px;
line-height:0;
white-space:nowrap;
}
.mini-box a {
border-radius: 0;
-webkit-border-radius: 0;
-moz-border-radius: 0;
display:block;
width:100%;
height:20px;
line-height:20px;
margin-top:-30px;
}
.mini-closed {
-box-sizing:border-box;
-webkit-box-sizing:border-box;
border:4px solid red;
}
/* grid styles */
table.Grid {
border-collapse: collapse;
}
table.Grid tr td {
padding: 0.2em;
margin: 0px;
text-align: center;
}
table.Grid tr td.title {
font-size: 90%;
border-right: 1px gray solid;
border-bottom: 1px gray solid;
}
table.Grid tr td.sourcestamp {
font-size: 90%;
}
table.Grid tr td.builder {
text-align: right;
font-size: 90%;
}
table.Grid tr td.build {
border: 1px gray solid;
}
div.data {
font-family: "Courier New", courier, monotype;
}
span.stdout, span.stderr, span.header {
font-family: "Courier New", courier, monotype;
font-size: 16px;
font-weight: normal;
}
span.stderr {
color: red;
}
span.header {
color: blue;
}

View File

@ -27,6 +27,7 @@ from master.factory import gclient_factory
# dictionaries in master.cfg.
SUPPORTED_PLATFORMS = ('Linux', 'Mac', 'Windows')
WEBRTC_SOLUTION_NAME = 'trunk'
WEBRTC_SVN_LOCATION = 'http://webrtc.googlecode.com/svn/trunk'
WEBRTC_TRUNK_DIR = 'build/trunk/'
WEBRTC_BUILD_DIR = 'build/'
@ -76,7 +77,10 @@ class WebRTCFactory(factory.BuildFactory):
can be overridden to create customized build sequences.
"""
def __init__(self, build_status_oracle, is_try_slave=False):
def __init__(self, build_status_oracle, is_try_slave=False,
gclient_solution_name=WEBRTC_SOLUTION_NAME,
svn_url=WEBRTC_SVN_LOCATION,
custom_deps_list=None, safesync_url=None):
"""Creates the abstract factory.
Args:
@ -84,6 +88,12 @@ class WebRTCFactory(factory.BuildFactory):
keep track of our build state.
is_try_slave: If this bot is a try slave. Needed since we're handling
some things differently between normal slaves and try slaves.
gclient_solution_name: The name of the solution used for gclient.
svn_url: The Subversion URL for gclient to sync agains.
custom_deps_list: Content to be put in the custom_deps entry of the
.gclient file. The parameter must be a list of tuples with two
strings in each: path and remote URL.
safesync_url: If a LKGR URL shall be used for the gclient sync command.
"""
factory.BuildFactory.__init__(self)
@ -93,6 +103,11 @@ class WebRTCFactory(factory.BuildFactory):
self.gyp_params = []
self.release = False
self.path_joiner = PosixPathJoin
# For GClient solution definition:
self.gclient_solution_name = gclient_solution_name
self.svn_url = svn_url
self.custom_deps_list = custom_deps_list
self.safesync_url = safesync_url
def EnableBuild(self):
"""Adds steps for building WebRTC [must be overridden].
@ -206,12 +221,6 @@ class WebRTCFactory(factory.BuildFactory):
"""
self.AddCommonTestRunStep(test)
def AddGclientConfigStep(self):
"""Helper method for adding a gclient config step."""
self.AddCommonStep(['gclient', 'config', WEBRTC_SVN_LOCATION],
workdir=WEBRTC_BUILD_DIR,
descriptor='gclient_config')
def AddGclientSyncStep(self):
"""Helper method for invoking gclient sync."""
gclient_spec = self._ConfigureWhatToBuild()
@ -255,8 +264,9 @@ class WebRTCFactory(factory.BuildFactory):
def _ConfigureWhatToBuild(self):
"""Returns a string with the contents of a .gclient file."""
solution = gclient_factory.GClientSolution(name='trunk',
svn_url=WEBRTC_SVN_LOCATION)
solution = gclient_factory.GClientSolution(name=self.gclient_solution_name,
svn_url=self.svn_url, custom_deps_list=self.custom_deps_list,
safesync_url=self.safesync_url)
return 'solutions = [ %s ]' % solution.GetSpec()
def _GetEnvironmentWithDisabledDepotToolsUpdate(self):
@ -414,8 +424,11 @@ class GenerateCodeCoverage(ShellCommand):
self.flunkOnFailure = False
output_dir = os.path.join(coverage_dir,
'%(buildername)s_%(buildnumber)s')
self.setCommand(['./tools/continuous_build/generate_coverage_html.sh',
coverage_file, WithProperties(output_dir)])
generate_script = PosixPathJoin('tools', 'continuous_build',
'build_internal', 'scripts',
'generate_coverage_html.sh')
self.setCommand([generate_script, coverage_file,
WithProperties(output_dir)])
def createSummary(self, log):
coverage_url = urlparse.urljoin(self.coverage_url,
@ -447,11 +460,9 @@ class WebRTCAndroidFactory(WebRTCFactory):
cmd = 'svn checkout %s external/webrtc' % WEBRTC_SVN_LOCATION
self.AddCommonStep(cmd, descriptor='svn (checkout)')
cmd = ('source build/envsetup.sh && lunch full_%s-eng ' % product)
self.AddCommonStep(cmd, descriptor='make_android')
cmd = 'source build/envsetup.sh && mmm external/webrtc showcommands'
self.AddCommonStep(cmd, descriptor='make_webrtc')
cmd = ('source build/envsetup.sh && lunch full_%s-eng '
'&& mmm external/webrtc showcommands' % product)
self.AddCommonStep(cmd, descriptor='build')
class WebRTCAndroidNDKFactory(WebRTCFactory):
@ -462,19 +473,31 @@ class WebRTCAndroidNDKFactory(WebRTCFactory):
def EnableBuild(self):
self.AddSmartCleanStep()
self.AddGclientConfigStep()
self.AddGclientSyncStep()
cmd = 'source ./build/android/envsetup.sh && gclient runhooks'
self.AddCommonStep(cmd, descriptor='gen_android_makefiles')
cmd = 'source ./build/android/envsetup.sh && make -j8'
self.AddCommonStep(cmd, descriptor='make')
self._AddAndroidStep(cmd='gclient runhooks',
descriptor='gen_android_makefiles')
self._AddAndroidStep(cmd='make -j100', descriptor='make')
def _AddAndroidStep(self, cmd, descriptor):
full_cmd = ('source build/android/buildbot_functions.sh &&'
'bb_setup_environment && '
'source build/android/envsetup.sh &&'
'%s' % cmd)
self.AddCommonStep(cmd=full_cmd, descriptor=descriptor)
class WebRTCChromeFactory(WebRTCFactory):
"""Sets up the Chrome OS build."""
def __init__(self, build_status_oracle):
WebRTCFactory.__init__(self, build_status_oracle)
def __init__(self, build_status_oracle,
gclient_solution_name,
svn_url,
custom_deps_list=None,
safesync_url=None):
WebRTCFactory.__init__(self, build_status_oracle=build_status_oracle,
gclient_solution_name=gclient_solution_name,
svn_url=svn_url,
custom_deps_list=custom_deps_list,
safesync_url=safesync_url)
def EnableBuild(self):
self.AddCommonStep(['rm', '-rf', 'src'], workdir=WEBRTC_BUILD_DIR,
@ -498,9 +521,10 @@ class WebRTCLinuxFactory(WebRTCFactory):
"""
def __init__(self, build_status_oracle, is_try_slave=False,
valgrind_enabled=False):
WebRTCFactory.__init__(self, build_status_oracle, is_try_slave)
valgrind_enabled=False, custom_deps_list=None):
WebRTCFactory.__init__(self, build_status_oracle=build_status_oracle,
is_try_slave=is_try_slave,
custom_deps_list=custom_deps_list)
self.build_enabled = False
self.coverage_enabled = False
self.valgrind_enabled = valgrind_enabled
@ -538,8 +562,6 @@ class WebRTCLinuxFactory(WebRTCFactory):
if self.valgrind_enabled:
for gyp_define in MEMORY_TOOLS_GYP_DEFINES:
self.gyp_params.append('-D' + gyp_define)
else:
self.AddGclientConfigStep()
self.AddGclientSyncStep()
if chrome_os:
@ -611,7 +633,9 @@ class WebRTCLinuxFactory(WebRTCFactory):
# Delete all third-party .gcda files to save time and work around a bug
# in lcov which tends to hang when capturing on libjpgturbo.
self.AddCommonStep(['./tools/continuous_build/clean_third_party_gcda.sh'],
clean_script = PosixPathJoin('tools', 'continuous_build', 'build_internal',
'scripts', 'clean_third_party_gcda.sh')
self.AddCommonStep([clean_script],
warn_on_failure=True,
halt_build_on_failure=False,
descriptor='LCOV (Delete 3rd party)')
@ -706,7 +730,6 @@ class WebRTCMacFactory(WebRTCFactory):
else:
self.build_type = build_type
self.AddSmartCleanStep()
self.AddGclientConfigStep()
self.AddGclientSyncStep()
if self.build_type == 'make' or self.build_type == 'both':
@ -800,14 +823,13 @@ class WebRTCWinFactory(WebRTCFactory):
# To avoid having to modify kill_processes.py, we set the working dir to
# the build dir (three levels up from the build dir that contains
# third_party/psutils).
kill_script = self.PathJoin(WEBRTC_BUILD_DIR, '..', '..', '..', 'scripts',
'slave', 'kill_processes.py')
kill_script = WindowsPathJoin(WEBRTC_BUILD_DIR, '..', '..', '..', '..',
'scripts', 'slave', 'kill_processes.py')
cmd = 'python %s' % kill_script
self.AddCommonStep(cmd, 'taskkill', workdir=WEBRTC_BUILD_DIR)
# Now do the clean + build.
self.AddSmartCleanStep()
self.AddGclientConfigStep()
self.AddGclientSyncStep()
if self.configuration == 'Debug' or self.configuration == 'both':