From bb24b14c8a4c566859bbdfffa8d9581f869e062f Mon Sep 17 00:00:00 2001 From: "kjellander@webrtc.org" Date: Thu, 31 May 2012 10:42:51 +0000 Subject: [PATCH] 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 --- .../masters/master.libvpx/master.cfg | 10 ++- .../master.libvpx/master_builders_cfg.py | 87 ++++++++++++++++++- .../masters/master.webrtc/master.cfg | 61 ++++++------- .../master.webrtc/master_builders_cfg.py | 2 - .../master.webrtc/master_source_cfg.py | 2 - .../scripts/webrtc_buildbot/utils.py | 2 - .../scripts/webrtc_buildbot/utils_test.py | 2 - .../webrtc_chromium_factory.py | 2 - .../webrtc_buildbot/webrtc_commands.py | 2 - .../site_config/config_private.py | 7 ++ 10 files changed, 132 insertions(+), 45 deletions(-) mode change 120000 => 100644 tools/continuous_build/build_internal/masters/master.libvpx/master_builders_cfg.py diff --git a/tools/continuous_build/build_internal/masters/master.libvpx/master.cfg b/tools/continuous_build/build_internal/masters/master.libvpx/master.cfg index 6c3d12f2c1..6b0653e761 100755 --- a/tools/continuous_build/build_internal/masters/master.libvpx/master.cfg +++ b/tools/continuous_build/build_internal/masters/master.libvpx/master.cfg @@ -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']) + diff --git a/tools/continuous_build/build_internal/masters/master.libvpx/master_builders_cfg.py b/tools/continuous_build/build_internal/masters/master.libvpx/master_builders_cfg.py deleted file mode 120000 index 7337a2f5f0..0000000000 --- a/tools/continuous_build/build_internal/masters/master.libvpx/master_builders_cfg.py +++ /dev/null @@ -1 +0,0 @@ -../master.webrtc/master_builders_cfg.py \ No newline at end of file diff --git a/tools/continuous_build/build_internal/masters/master.libvpx/master_builders_cfg.py b/tools/continuous_build/build_internal/masters/master.libvpx/master_builders_cfg.py new file mode 100644 index 0000000000..11a1050d9b --- /dev/null +++ b/tools/continuous_build/build_internal/masters/master.libvpx/master_builders_cfg.py @@ -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) diff --git a/tools/continuous_build/build_internal/masters/master.webrtc/master.cfg b/tools/continuous_build/build_internal/masters/master.webrtc/master.cfg index 736da6123a..ccc97f163c 100755 --- a/tools/continuous_build/build_internal/masters/master.webrtc/master.cfg +++ b/tools/continuous_build/build_internal/masters/master.webrtc/master.cfg @@ -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()) diff --git a/tools/continuous_build/build_internal/masters/master.webrtc/master_builders_cfg.py b/tools/continuous_build/build_internal/masters/master.webrtc/master_builders_cfg.py index 9010371ba0..e440fc94d1 100644 --- a/tools/continuous_build/build_internal/masters/master.webrtc/master_builders_cfg.py +++ b/tools/continuous_build/build_internal/masters/master.webrtc/master_builders_cfg.py @@ -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 diff --git a/tools/continuous_build/build_internal/masters/master.webrtc/master_source_cfg.py b/tools/continuous_build/build_internal/masters/master.webrtc/master_source_cfg.py index 8af6c9e9e5..cf831013c4 100644 --- a/tools/continuous_build/build_internal/masters/master.webrtc/master_source_cfg.py +++ b/tools/continuous_build/build_internal/masters/master.webrtc/master_source_cfg.py @@ -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 diff --git a/tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils.py b/tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils.py index a312947f94..f39c014cc6 100755 --- a/tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils.py +++ b/tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils.py @@ -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 diff --git a/tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils_test.py b/tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils_test.py index 7da58f6fed..4d73a614f4 100644 --- a/tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils_test.py +++ b/tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils_test.py @@ -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 diff --git a/tools/continuous_build/build_internal/scripts/webrtc_buildbot/webrtc_chromium_factory.py b/tools/continuous_build/build_internal/scripts/webrtc_buildbot/webrtc_chromium_factory.py index f962986d0d..c543e981b1 100644 --- a/tools/continuous_build/build_internal/scripts/webrtc_buildbot/webrtc_chromium_factory.py +++ b/tools/continuous_build/build_internal/scripts/webrtc_buildbot/webrtc_chromium_factory.py @@ -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.""" diff --git a/tools/continuous_build/build_internal/scripts/webrtc_buildbot/webrtc_commands.py b/tools/continuous_build/build_internal/scripts/webrtc_buildbot/webrtc_commands.py index 50dcbdb4ea..e676f88cb4 100644 --- a/tools/continuous_build/build_internal/scripts/webrtc_buildbot/webrtc_commands.py +++ b/tools/continuous_build/build_internal/scripts/webrtc_buildbot/webrtc_commands.py @@ -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.""" diff --git a/tools/continuous_build/build_internal/site_config/config_private.py b/tools/continuous_build/build_internal/site_config/config_private.py index d85e7aebf4..1df5103dc1 100644 --- a/tools/continuous_build/build_internal/site_config/config_private.py +++ b/tools/continuous_build/build_internal/site_config/config_private.py @@ -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