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
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 6c3d12f..6b0653e 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 @@
 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 @@
 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 7337a2f..0000000
--- 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 0000000..11a1050
--- /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 736da61..ccc97f1 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.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 @@
 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 @@
 ####### 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 @@
                               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 @@
    '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 @@
 
 # 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 9010371..e440fc9 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 8af6c9e..cf83101 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 a312947..f39c014 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 7da58f6..4d73a61 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 f962986..c543e98 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 50dcbdb..e676f88 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 d85e7ae..1df5103 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 @@
     # 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