Libvpx waterfall additional changes. The CL http://review.webrtc.org/595005/ was not complete since it didn't put the libvpx waterfall at its own port.

Chrome bots are now using the correct scheduler.
Created separate watchlist e-mail for libvpx builds to avoid spamming WebRTC when these builds fail.

BUG=None
TEST=Tested on local master and slaves.

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@2331 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
kjellander@webrtc.org 2012-05-31 10:42:51 +00:00
parent 7d3b07a516
commit bb24b14c8a
10 changed files with 132 additions and 45 deletions

View File

@ -7,7 +7,9 @@
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
__author__ = 'kjellander@webrtc.org (Henrik Kjellander)'
from master import master_utils
from master import slaves_list
import config
# This master configuration file reuses most of the WebRTC buildbot master,
# to avoid duplicating the configuration as much as possible.
@ -16,7 +18,7 @@ __author__ = 'kjellander@webrtc.org (Henrik Kjellander)'
LIBVPX_BUILD = True
LIBVPX_DEPS_LIST = [
('trunk/third_party/libvpx/source/libvpx',
'http://git.chromium.org/webm/libvpx.git'),
'http://git.chromium.org/webm/libvpx.git@master'),
]
vars = {'LIBVPX_BUILD':LIBVPX_BUILD,
@ -24,3 +26,7 @@ vars = {'LIBVPX_BUILD':LIBVPX_BUILD,
execfile('../master.webrtc/master.cfg', vars, vars)
c = BuildmasterConfig = vars['c']
# Remove the Chrome Bloat builder since it's not useful for the libvpx project.
c['builders'] = filter(lambda x: x['name'] != 'LinuxChromeBloat', c['builders'])

View File

@ -1 +0,0 @@
../master.webrtc/master_builders_cfg.py

View File

@ -0,0 +1,86 @@
#!/usr/bin/env python
# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
"""Chrome+WebRTC bots customized for Libvpx build."""
from buildbot.schedulers import timed
from master import master_config
from webrtc_buildbot import webrtc_chromium_factory
def linux():
return webrtc_chromium_factory.ChromiumWebRTCFactory('src/build', 'linux2')
def mac():
return webrtc_chromium_factory.ChromiumWebRTCFactory('src/build', 'mac')
def win():
return webrtc_chromium_factory.ChromiumWebRTCFactory('src/build', 'win32')
CHROME_LKGR = 'http://chromium-status.appspot.com/lkgr'
def ConfigureChromeWebRTCBuilders(c, custom_deps_list=[]):
# The Libvpx Chrome bots are setup without the Chromium helper classes since
# they don't have support for a Nightly scheduler.
# Linux
chrome_linux_debug_factory = linux().ChromiumWebRTCLatestFactory(
target='Debug',
factory_properties={'safesync_url': CHROME_LKGR},
custom_deps_list=custom_deps_list)
chrome_linux_debug_builder = {
'name': 'LinuxChrome',
'factory': chrome_linux_debug_factory,
}
c['builders'].append(chrome_linux_debug_builder)
c['schedulers'][0].builderNames.append('LinuxChrome')
# Mac 10.7 (Lion) ...
chrome_mac_debug_factory = mac().ChromiumWebRTCLatestFactory(
target='Debug',
factory_properties={'safesync_url': CHROME_LKGR},
custom_deps_list=custom_deps_list)
chrome_mac_debug_builder = {
'name': 'MacChrome',
'factory': chrome_mac_debug_factory,
}
c['builders'].append(chrome_mac_debug_builder)
c['schedulers'][0].builderNames.append('MacChrome')
# Windows...
chrome_win_debug_factory = win().ChromiumWebRTCLatestFactory(
target='Debug',
factory_properties={'safesync_url': CHROME_LKGR},
custom_deps_list=custom_deps_list)
chrome_win_debug_builder = {
'name': 'WinChrome',
'factory': chrome_win_debug_factory,
}
c['builders'].append(chrome_win_debug_builder)
c['schedulers'][0].builderNames.append('WinChrome')
def ConfigureNightlyChromeWebRTCBloatBuilder(c, custom_deps_list=[]):
# Must add a Bloat builder for Libvpx to avoid an error during the
# slave configuration check. This builder will be removed at the last stage of
# the configuration loading (see master.libvpx/master.cfg).
chrome_bloat_factory = linux().ChromiumWebRTCBloatFactory(
target='Release',
factory_properties={'safesync_url': CHROME_LKGR,
'gclient_env': {'GYP_DEFINES': 'profiling=1'}},
custom_deps_list=custom_deps_list)
chrome_bloat_builder = {
'name': 'LinuxChromeBloat',
'factory': chrome_bloat_factory,
'category': 'linux',
}
c['builders'].append(chrome_bloat_builder)

View File

@ -7,8 +7,6 @@
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
__author__ = 'kjellander@webrtc.org (Henrik Kjellander)'
c = BuildmasterConfig = {}
import os
@ -16,7 +14,7 @@ from buildbot.buildslave import BuildSlave
from buildbot.changes.pb import PBChangeSource
from buildbot.changes.svnpoller import SVNPoller
from buildbot.process import factory
from buildbot.scheduler import Scheduler
from buildbot.schedulers import basic
from buildbot.schedulers import timed
from buildbot.status import html
from buildbot.status import mail
@ -29,12 +27,14 @@ from master import slaves_list
import config
from webrtc_buildbot import utils
ActiveMaster = config.Master.WebRTC
def is_libvpx_build():
"""Used to check if this master is the default or the libvpx master."""
return 'LIBVPX_BUILD' in globals()
ActiveMaster = (config.Master.Libvpx if is_libvpx_build() else
config.Master.WebRTC)
####### CHANGESOURCES
import master_source_cfg
master_source_cfg.ConfigureChangeSource(config, c)
@ -42,25 +42,25 @@ master_source_cfg.ConfigureChangeSource(config, c)
####### SCHEDULERS
from buildbot.scheduler import Scheduler
builder_names = ['Win32Debug',
'Win32Release',
'MacOS32DBG',
'MacOS32Release',
'Linux32DBG',
'Linux32Release',
'Linux64DBG',
'Linux64Release',
'LinuxClang',
'LinuxMemcheck',
'LinuxTsan',
'LinuxAsan',
'Linux64DBG-GCC4.6',
'LinuxLargeTests',
'MacLargeTests',
'WinLargeTests',
'Android',
'AndroidNDK',
'ChromeOS',
]
'Win32Release',
'MacOS32DBG',
'MacOS32Release',
'Linux32DBG',
'Linux32Release',
'Linux64DBG',
'Linux64Release',
'LinuxClang',
'LinuxMemcheck',
'LinuxTsan',
'LinuxAsan',
'Linux64DBG-GCC4.6',
'LinuxLargeTests',
'MacLargeTests',
'WinLargeTests',
'Android',
'AndroidNDK',
'ChromeOS',
]
if is_libvpx_build():
# Run the libvpx waterfall only nightly since it re-uses the WebRTC bots and
@ -69,7 +69,8 @@ if is_libvpx_build():
builderNames=builder_names, hour=20)
else:
# Trigger builds on each check-in if we are the regular WebRTC waterfall.
scheduler = Scheduler(name='all', branch='trunk', builderNames=builder_names)
scheduler = basic.SingleBranchScheduler(name='all', branch='trunk',
builderNames=builder_names)
# Note that additional schedulers (used by the Chrome+WebRTC builders) are
# defined in master_builders_cfg.py. This is an in progress change to make all
@ -175,10 +176,8 @@ ASAN_DEPS_LIST = [
'http://src.chromium.org/chrome/trunk/deps/third_party/asan'),
]
DEFAULT_CUSTOM_DEPS = []
if is_libvpx_build():
# Additional configuration for libvpx waterfall (inherits this config).
DEFAULT_CUSTOM_DEPS += LIBVPX_DEPS_LIST
# Libvpx waterfall has additional configuration (inherits this config).
DEFAULT_CUSTOM_DEPS = LIBVPX_DEPS_LIST if is_libvpx_build() else []
# Linux
linux_factory_64_dbg = utils.WebRTCLinuxFactory(
@ -476,9 +475,11 @@ c['status'][0].putChild("tgrid", grid.TransposedGridStatusResource())
# Use an environment variable to easily avoid enabling e-mail for development.
if not os.getenv('BUILDBOT_DEVELOPMENT_MODE'):
watchlist_email = ('libvpx-cb-watchlist@google.com' if is_libvpx_build() else
'webrtc-cb-watchlist@google.com')
email_status = mail.MailNotifier(
fromaddr='webrtc-cb-watchlist@google.com',
extraRecipients=['webrtc-cb-watchlist@google.com'],
fromaddr=watchlist_email,
extraRecipients=[watchlist_email],
sendToInterestedUsers=True,
mode='failing',
lookup=master_utils.UsersAreEmails())

View File

@ -7,8 +7,6 @@
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
__author__ = 'kjellander@webrtc.org (Henrik Kjellander)'
"""Chrome+WebRTC bots configured in Chromium style."""
from buildbot.schedulers import timed

View File

@ -7,8 +7,6 @@
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
__author__ = 'kjellander@webrtc.org (Henrik Kjellander)'
"""Source control poller for the WebRTC code."""
from buildbot.changes import svnpoller

View File

@ -7,8 +7,6 @@
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
__author__ = 'kjellander@webrtc.org (Henrik Kjellander)'
import ntpath
import os
import posixpath

View File

@ -9,8 +9,6 @@
"""Unit tests for helper functions in utils.py."""
__author__ = 'kjellander@webrtc.org (Henrik Kjellander)'
import unittest
from webrtc_buildbot import utils

View File

@ -7,8 +7,6 @@
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
__author__ = 'kjellander@webrtc.org (Henrik Kjellander)'
"""Utility class to build Chromium with the latest WebRTC.
Based on chromium_factory.py and adds WebRTC-specific custom_deps."""

View File

@ -7,8 +7,6 @@
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
__author__ = 'kjellander@webrtc.org (Henrik Kjellander)'
"""Set of utilities to add commands to a buildbot factory.
This is based on chromium_commands.py and adds WebRTC-specific commands."""

View File

@ -140,6 +140,13 @@ class Master(object):
# separate repo to put all the diff files to be tried.
svn_url = None
class Libvpx(_ChromiumBase):
# Used by the waterfall display.
project_name = 'libvpx'
master_port = 8011
slave_port = 9114
master_port_alt = 9016
class Archive(object):
archive_host = 'localhost'
# Skip any filenames (exes, symbols, etc.) starting with these strings