From ba5a97db4afe5106def788f897888619e8d07b2b Mon Sep 17 00:00:00 2001 From: "kjellander@webrtc.org" Date: Wed, 20 Jun 2012 07:55:41 +0000 Subject: [PATCH] Moving buildbot to internal repository. BUG=None TEST=None Review URL: https://webrtc-codereview.appspot.com/654007 git-svn-id: http://webrtc.googlecode.com/svn/trunk@2428 4adac7df-926f-26a2-2b94-8c16560cd09d --- tools/.gitignore | 31 - tools/DEPS | 34 - tools/continuous_build/OWNERS | 3 - tools/continuous_build/README | 76 -- .../build_internal/masters/master-common.mk | 123 -- .../masters/master.libvpx/Makefile | 5 - .../masters/master.libvpx/buildbot | 4 - .../masters/master.libvpx/buildbot.tac | 11 - .../masters/master.libvpx/master.cfg | 32 - .../master.libvpx/master_builders_cfg.py | 86 -- .../master.libvpx/master_source_cfg.py | 1 - .../masters/master.libvpx/public_html | 1 - .../masters/master.libvpx/slaves.cfg | 1 - .../masters/master.tryserver.webrtc/Makefile | 5 - .../masters/master.tryserver.webrtc/buildbot | 4 - .../master.tryserver.webrtc/buildbot.tac | 11 - .../master.tryserver.webrtc/master.cfg | 290 ----- .../public_html/buildbot.css | 457 ------- .../public_html/favicon.ico | Bin 1150 -> 0 bytes .../master.tryserver.webrtc/slaves.cfg | 86 -- .../masters/master.webrtc/Makefile | 5 - .../masters/master.webrtc/buildbot | 4 - .../masters/master.webrtc/buildbot.tac | 11 - .../masters/master.webrtc/master.cfg | 515 -------- .../master.webrtc/master_builders_cfg.py | 97 -- .../master.webrtc/master_source_cfg.py | 31 - .../master.webrtc/public_html/buildbot.css | 486 -------- .../master.webrtc/public_html/default.css | 504 -------- .../master.webrtc/public_html/favicon.ico | Bin 1150 -> 0 bytes .../masters/master.webrtc/slaves.cfg | 199 --- .../build_internal/scripts/clean_old_files.py | 136 --- .../scripts/clean_third_party_gcda.sh | 13 - .../scripts/generate_coverage_html.sh | 18 - .../scripts/webrtc_buildbot/__init__.py | 8 - .../scripts/webrtc_buildbot/utils.py | 1077 ----------------- .../scripts/webrtc_buildbot/utils_test.py | 74 -- .../webrtc_chromium_factory.py | 57 - .../webrtc_buildbot/webrtc_commands.py | 145 --- .../site_config/config_private.py | 164 --- .../build_internal/symsrc/calculate_bloat.py | 88 -- .../build_internal/symsrc/cleanup_build.py | 50 - .../build_internal/symsrc/webrtc_bloat.html | 44 - .../symsrc/webrtc_buildbot/__init__.py | 8 - .../symsrc/webrtc_buildbot/slave_utils.py | 66 - tools/fix_webrtc_buildbots.py | 64 - 45 files changed, 5125 deletions(-) delete mode 100644 tools/continuous_build/OWNERS delete mode 100644 tools/continuous_build/README delete mode 100644 tools/continuous_build/build_internal/masters/master-common.mk delete mode 100644 tools/continuous_build/build_internal/masters/master.libvpx/Makefile delete mode 100644 tools/continuous_build/build_internal/masters/master.libvpx/buildbot delete mode 100644 tools/continuous_build/build_internal/masters/master.libvpx/buildbot.tac delete mode 100755 tools/continuous_build/build_internal/masters/master.libvpx/master.cfg delete mode 100644 tools/continuous_build/build_internal/masters/master.libvpx/master_builders_cfg.py delete mode 120000 tools/continuous_build/build_internal/masters/master.libvpx/master_source_cfg.py delete mode 120000 tools/continuous_build/build_internal/masters/master.libvpx/public_html delete mode 120000 tools/continuous_build/build_internal/masters/master.libvpx/slaves.cfg delete mode 100644 tools/continuous_build/build_internal/masters/master.tryserver.webrtc/Makefile delete mode 100644 tools/continuous_build/build_internal/masters/master.tryserver.webrtc/buildbot delete mode 100644 tools/continuous_build/build_internal/masters/master.tryserver.webrtc/buildbot.tac delete mode 100755 tools/continuous_build/build_internal/masters/master.tryserver.webrtc/master.cfg delete mode 100644 tools/continuous_build/build_internal/masters/master.tryserver.webrtc/public_html/buildbot.css delete mode 100644 tools/continuous_build/build_internal/masters/master.tryserver.webrtc/public_html/favicon.ico delete mode 100644 tools/continuous_build/build_internal/masters/master.tryserver.webrtc/slaves.cfg delete mode 100644 tools/continuous_build/build_internal/masters/master.webrtc/Makefile delete mode 100644 tools/continuous_build/build_internal/masters/master.webrtc/buildbot delete mode 100644 tools/continuous_build/build_internal/masters/master.webrtc/buildbot.tac delete mode 100755 tools/continuous_build/build_internal/masters/master.webrtc/master.cfg delete mode 100644 tools/continuous_build/build_internal/masters/master.webrtc/master_builders_cfg.py delete mode 100644 tools/continuous_build/build_internal/masters/master.webrtc/master_source_cfg.py delete mode 100644 tools/continuous_build/build_internal/masters/master.webrtc/public_html/buildbot.css delete mode 100644 tools/continuous_build/build_internal/masters/master.webrtc/public_html/default.css delete mode 100644 tools/continuous_build/build_internal/masters/master.webrtc/public_html/favicon.ico delete mode 100644 tools/continuous_build/build_internal/masters/master.webrtc/slaves.cfg delete mode 100755 tools/continuous_build/build_internal/scripts/clean_old_files.py delete mode 100755 tools/continuous_build/build_internal/scripts/clean_third_party_gcda.sh delete mode 100755 tools/continuous_build/build_internal/scripts/generate_coverage_html.sh delete mode 100755 tools/continuous_build/build_internal/scripts/webrtc_buildbot/__init__.py delete mode 100755 tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils.py delete mode 100644 tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils_test.py delete mode 100644 tools/continuous_build/build_internal/scripts/webrtc_buildbot/webrtc_chromium_factory.py delete mode 100644 tools/continuous_build/build_internal/scripts/webrtc_buildbot/webrtc_commands.py delete mode 100644 tools/continuous_build/build_internal/site_config/config_private.py delete mode 100755 tools/continuous_build/build_internal/symsrc/calculate_bloat.py delete mode 100755 tools/continuous_build/build_internal/symsrc/cleanup_build.py delete mode 100644 tools/continuous_build/build_internal/symsrc/webrtc_bloat.html delete mode 100755 tools/continuous_build/build_internal/symsrc/webrtc_buildbot/__init__.py delete mode 100644 tools/continuous_build/build_internal/symsrc/webrtc_buildbot/slave_utils.py delete mode 100755 tools/fix_webrtc_buildbots.py diff --git a/tools/.gitignore b/tools/.gitignore index 87f26a479..db9f36229 100644 --- a/tools/.gitignore +++ b/tools/.gitignore @@ -1,4 +1,3 @@ -*.failed *.pyc *~ .*.sw? @@ -10,36 +9,6 @@ .pydevproject .settings .status_password -/continuous_build/depot_tools -/third_party/bloat /third_party/gaeunit /third_party/google-visualization-python /third_party/oauth2 -/third_party/webtreemap - -# Buildbot creates these files: -*.new -.manhole -bg_gradient.jpg -changes.pck -changes.pck.old -dropin.cache -events_* -http.log -master.cfg.sample -robots.txt -state.sqlite -state.sqlite-shm -state.sqlite-wal -twistd.log* -twistd.pid - -# Chrome buildbot scripts -/continuous_build/build - -# Buildbot slave log directories: -/continuous_build/build_internal/masters/master.libvpx/*/ -/continuous_build/build_internal/masters/master.webrtc/*/ -/continuous_build/build_internal/masters/master.tryserver.webrtc/*/ -# Public HTML folder is also a subdirectory, make sure it's not ignored: -!public_html diff --git a/tools/DEPS b/tools/DEPS index 657af71f1..8c7429c40 100644 --- a/tools/DEPS +++ b/tools/DEPS @@ -2,10 +2,6 @@ # Use http rather than https; the latter can cause problems for users behind # proxies. -vars = { - "chromium_trunk" : "http://src.chromium.org/svn/trunk", -} - deps = { # Used by quality_tracking. "tools/third_party/gaeunit": @@ -15,38 +11,8 @@ deps = { "tools/third_party/oauth2": "http://github.com/simplegeo/python-oauth2.git@a83f4a29", - # Chromium buildbot scripts needs to be at the same level as our scripts. - "tools/continuous_build/build": - Var("chromium_trunk") + "/tools/build", - - # Chromium buildbot scripts needs their own depot_tools. - "tools/continuous_build/depot_tools": - Var("chromium_trunk") + "/tools/depot_tools", - # Used by tools/quality_tracking/dashboard and tools/python_charts. "tools/third_party/google-visualization-python": "http://google-visualization-python.googlecode.com/svn/trunk/@15", - - # Used by tools/continuous_build/build_internal/symsrc/calculate_bloat.py. - "tools/third_party/bloat": - "https://github.com/martine/bloat.git@31428aaa491", - "tools/third_party/webtreemap": - "https://github.com/martine/webtreemap.git@7839cf9154", } -deps_os = { - # Statically built Xvfb to be used for browser tests on headless machines. - "unix": { - "tools/continuous_build/build/third_party/xvfb": - Var("chromium_trunk") + "/tools/third_party/xvfb", - }, -} - -hooks = [ - { - # Make changes needed for customization of WebRTC buildbots. - "pattern": ".", - "action": ["python", "tools/fix_webrtc_buildbots.py"], - }, -] - diff --git a/tools/continuous_build/OWNERS b/tools/continuous_build/OWNERS deleted file mode 100644 index 311c3c5cf..000000000 --- a/tools/continuous_build/OWNERS +++ /dev/null @@ -1,3 +0,0 @@ -kjellander@webrtc.org -phoglund@webrtc.org -ivinnichenko@webrtc.org diff --git a/tools/continuous_build/README b/tools/continuous_build/README deleted file mode 100644 index 9f48a7c92..000000000 --- a/tools/continuous_build/README +++ /dev/null @@ -1,76 +0,0 @@ -WebRTC buildbots -================ -These buildbot setups are based on how Chromium uses Buildbot scripts with their -own customizations of startup and master-slave configurations. - -The directory layout and the files inside build_internal/masters are copied from -Chromium's repository and modified for our needs according to the guidelines at -http://goo.gl/kPSSv - -One nice advantage with using this, is that all slaves run out of the box by -just syncing the WebRTC tools and the third-party dependencies. No additional -dependencies are required except a Python install. - - -Setup a tools workspace: -======================== -mkdir webrtc-tools -cd webrtc-tools -gclient config http://webrtc.googlecode.com/svn/trunk/tools -gclient sync -cd tools/continuous_build -svn co http://src.chromium.org/svn/trunk/tools/depot_tools -echo pass > build/site_config/.bot_password - - -To run the build master: -======================== -cd tools/continuous_build/build_internal/masters/master.webrtc -make restart - - -To run the try master: -====================== -cd tools/continuous_build/build_internal/masters/master.tryserver.webrtc -make restart - - -To run a slave: -=============== -cd tools/continuous_build/build/slave - -There are some variables that can be set for flexible development testing: -* TESTING_SLAVENAME : Simulates the slave name. Since slave names are - based on hostnames, they must be overridden using - the this variable in order to run the slave on the - local machine. -* TESTING_MASTER : The master to connect to. We usually use 'WebRTC' - or 'TryServer'. -* TESTING_MASTER_HOST : The host the master is located at. - Default: localhost -* RUN_SLAVE_UPDATED_SCRIPTS : Set this to False to avoid checking for updates - during startup. - -For Windows, make sure to add the --use_buildbot_8 flag to the run_slave.bat -in order to make the tests execute properly. - -Examples: ---------- - -Connect to a running build master: -* Linux and Mac: -TESTING_SLAVENAME=webrtc-cb-linux-slave-1 TESTING_MASTER=WebRTC make restart - -* Windows: -set TESTING_SLAVENAME=webrtc-cb-linux-slave-1 -set TESTING_MASTER=WebRTC -run_slave.bat --use_buildbot_8 - -Connect to a running try master: -* Linux and Mac: -TESTING_SLAVENAME=linux-trybot-1 TESTING_MASTER=TryServer make restart - -* Windows: -set TESTING_SLAVENAME=linux-trybot-1 -set TESTING_MASTER=TryServer -run_slave.bat --use_buildbot_8 diff --git a/tools/continuous_build/build_internal/masters/master-common.mk b/tools/continuous_build/build_internal/masters/master-common.mk deleted file mode 100644 index 7a5288f9c..000000000 --- a/tools/continuous_build/build_internal/masters/master-common.mk +++ /dev/null @@ -1,123 +0,0 @@ -# -*- makefile -*- - -# This file is a copy of the Chromium master-common.mk located at -# /trunk/tools/build/masters of the Chromium tools. It is just modified to add -# the PRIVATESCRIPTS_DIR property. - -# This should be included by a makefile which lives in a buildmaster/buildslave -# directory (next to the buildbot.tac file). That including makefile *must* -# define MASTERPATH. - -# The 'start' and 'stop' targets start and stop the buildbot master. -# The 'reconfig' target will tell a buildmaster to reload its config file. - -# Note that a relative PYTHONPATH entry is relative to the current directory. - -# Confirm that MASTERPATH has been defined. -ifeq ($(MASTERPATH),) - $(error MASTERPATH not defined.) -endif - -# On the Mac, the buildbot is started via the launchd mechanism as a -# LaunchAgent to give the slave a proper Mac UI environment for tests. In -# order for this to work, the plist must be present and loaded by launchd, and -# the user must be logged in to the UI. The plist is loaded by launchd at user -# login (and the job may have been initially started at that time too). Our -# Mac build slaves are all set up this way, and have auto-login enabled, so -# "make start" should just work and do the right thing. -# -# When using launchd to start the job, it also needs to be used to stop the -# job. Otherwise, launchd might try to restart the job when stopped manually -# by SIGTERM. Using SIGHUP for reconfig is safe with launchd. -# -# Because it's possible to have more than one slave on a machine (for testing), -# this tests to make sure that the slave is in the known slave location, -# /b/slave, which is what the LaunchAgent operates on. -USE_LAUNCHD := \ - $(shell [ -f ~/Library/LaunchAgents/org.chromium.buildbot.$(MASTERPATH).plist ] && \ - [ "$$(pwd -P)" = "/b/build/masters/$(MASTERPATH)" ] && \ - echo 1) - -# Elements used to construct PYTHONPATH. These may be overridden by the -# including Makefile. -# -# For example: while we transition from buildbot 0.7.12 to buildbot 0.8.x , -# some masters will override BUILDBOT_PATH in their local Makefiles. -TOPLEVEL_DIR ?= ../../../build -THIRDPARTY_DIR ?= $(TOPLEVEL_DIR)/third_party -SCRIPTS_DIR ?= $(TOPLEVEL_DIR)/scripts -PUBLICCONFIG_DIR ?= $(TOPLEVEL_DIR)/site_config -PRIVATECONFIG_DIR ?= $(TOPLEVEL_DIR)/../build_internal/site_config -PRIVATESCRIPTS_DIR ?= $(TOPLEVEL_DIR)/../build_internal/scripts - -# Packages needed by buildbot7 -BUILDBOT7_PATH = $(THIRDPARTY_DIR)/buildbot_7_12:$(THIRDPARTY_DIR)/twisted_8_1 - -# Packages needed by buildbot8 -BUILDBOT8_DEPS := \ - buildbot_8_4p1 \ - twisted_10_2 \ - jinja2 \ - sqlalchemy_0_7_1 \ - sqlalchemy_migrate_0_7_1 \ - tempita_0_5 \ - decorator_3_3_1 - -nullstring := -space := $(nullstring) # -BUILDBOT8_PATH = $(subst $(space),:,$(BUILDBOT8_DEPS:%=$(THIRDPARTY_DIR)/%)) - -# Default to buildbot7. To override, put this in the master's Makefile: -# BUILDBOT_PATH = $(BUILDBOT8_PATH) -BUILDBOT_PATH ?= $(BUILDBOT7_PATH) - -PYTHONPATH := $(BUILDBOT_PATH):$(SCRIPTS_DIR):$(THIRDPARTY_DIR):$(PUBLICCONFIG_DIR):$(PRIVATECONFIG_DIR):$(PRIVATESCRIPTS_DIR):. - -ifeq ($(BUILDBOT_PATH),$(BUILDBOT8_PATH)) -start: upgrade -else -start: -endif -ifneq ($(USE_LAUNCHD),1) - PYTHONPATH=$(PYTHONPATH) python $(SCRIPTS_DIR)/common/twistd --no_save -y buildbot.tac -else - launchctl start org.chromium.buildbot.$(MASTERPATH) -endif - -ifeq ($(BUILDBOT_PATH),$(BUILDBOT8_PATH)) -start-prof: upgrade -else -start-prof: -endif -ifneq ($(USE_LAUNCHD),1) - TWISTD_PROFILE=1 PYTHONPATH=$(PYTHONPATH) python $(SCRIPTS_DIR)/common/twistd --no_save -y buildbot.tac -else - launchctl start org.chromium.buildbot.$(MASTERPATH) -endif - -stop: -ifneq ($(USE_LAUNCHD),1) - if `test -f twistd.pid`; then kill `cat twistd.pid`; fi; -else - launchctl stop org.chromium.buildbot.$(MASTERPATH) -endif - -reconfig: - kill -HUP `cat twistd.pid` - -log: - tail -F twistd.log - -wait: - while `test -f twistd.pid`; do sleep 1; done; - -restart: stop wait start log - -restart-prof: stop wait start-prof log - -# This target is only known to work on 0.8.x masters. -upgrade: - @[ -e '.dbconfig' ] || [ -e 'state.sqlite' ] || PYTHONPATH=$(PYTHONPATH) python buildbot upgrade-master . - -setup: - @echo export PYTHONPATH=$(PYTHONPATH) diff --git a/tools/continuous_build/build_internal/masters/master.libvpx/Makefile b/tools/continuous_build/build_internal/masters/master.libvpx/Makefile deleted file mode 100644 index 55a376f94..000000000 --- a/tools/continuous_build/build_internal/masters/master.libvpx/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -# -*- makefile -*- - -BUILDBOT_PATH = $(BUILDBOT8_PATH) -MASTERPATH := master.libvpx -include ../master-common.mk diff --git a/tools/continuous_build/build_internal/masters/master.libvpx/buildbot b/tools/continuous_build/build_internal/masters/master.libvpx/buildbot deleted file mode 100644 index cf3628dd5..000000000 --- a/tools/continuous_build/build_internal/masters/master.libvpx/buildbot +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/python - -from buildbot.scripts import runner -runner.run() diff --git a/tools/continuous_build/build_internal/masters/master.libvpx/buildbot.tac b/tools/continuous_build/build_internal/masters/master.libvpx/buildbot.tac deleted file mode 100644 index f4bca882a..000000000 --- a/tools/continuous_build/build_internal/masters/master.libvpx/buildbot.tac +++ /dev/null @@ -1,11 +0,0 @@ -import os - -from twisted.application import service -from buildbot.master import BuildMaster - -basedir = os.path.dirname(os.path.abspath(__file__)) -configfile = r'master.cfg' - -application = service.Application('buildmaster') -BuildMaster(basedir, configfile).setServiceParent(application) - diff --git a/tools/continuous_build/build_internal/masters/master.libvpx/master.cfg b/tools/continuous_build/build_internal/masters/master.libvpx/master.cfg deleted file mode 100755 index 6b0653e76..000000000 --- a/tools/continuous_build/build_internal/masters/master.libvpx/master.cfg +++ /dev/null @@ -1,32 +0,0 @@ -#!/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. - -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. -# It uses a global variable to get the different configuration required for -# the libvpx source path to be set as custom_deps for the build factories. -LIBVPX_BUILD = True -LIBVPX_DEPS_LIST = [ - ('trunk/third_party/libvpx/source/libvpx', - 'http://git.chromium.org/webm/libvpx.git@master'), -] - -vars = {'LIBVPX_BUILD':LIBVPX_BUILD, - 'LIBVPX_DEPS_LIST': LIBVPX_DEPS_LIST} -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 100644 index 11a1050d9..000000000 --- a/tools/continuous_build/build_internal/masters/master.libvpx/master_builders_cfg.py +++ /dev/null @@ -1,86 +0,0 @@ -#!/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.libvpx/master_source_cfg.py b/tools/continuous_build/build_internal/masters/master.libvpx/master_source_cfg.py deleted file mode 120000 index 4f32c881c..000000000 --- a/tools/continuous_build/build_internal/masters/master.libvpx/master_source_cfg.py +++ /dev/null @@ -1 +0,0 @@ -../master.webrtc/master_source_cfg.py \ No newline at end of file diff --git a/tools/continuous_build/build_internal/masters/master.libvpx/public_html b/tools/continuous_build/build_internal/masters/master.libvpx/public_html deleted file mode 120000 index 57a5a19a4..000000000 --- a/tools/continuous_build/build_internal/masters/master.libvpx/public_html +++ /dev/null @@ -1 +0,0 @@ -../master.webrtc/public_html \ No newline at end of file diff --git a/tools/continuous_build/build_internal/masters/master.libvpx/slaves.cfg b/tools/continuous_build/build_internal/masters/master.libvpx/slaves.cfg deleted file mode 120000 index a3ec1d317..000000000 --- a/tools/continuous_build/build_internal/masters/master.libvpx/slaves.cfg +++ /dev/null @@ -1 +0,0 @@ -../master.webrtc/slaves.cfg \ No newline at end of file diff --git a/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/Makefile b/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/Makefile deleted file mode 100644 index 53c040078..000000000 --- a/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -# -*- makefile -*- - -BUILDBOT_PATH = $(BUILDBOT8_PATH) -MASTERPATH := master.tryserver.webrtc -include ../master-common.mk diff --git a/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/buildbot b/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/buildbot deleted file mode 100644 index cf3628dd5..000000000 --- a/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/buildbot +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/python - -from buildbot.scripts import runner -runner.run() diff --git a/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/buildbot.tac b/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/buildbot.tac deleted file mode 100644 index f4bca882a..000000000 --- a/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/buildbot.tac +++ /dev/null @@ -1,11 +0,0 @@ -import os - -from twisted.application import service -from buildbot.master import BuildMaster - -basedir = os.path.dirname(os.path.abspath(__file__)) -configfile = r'master.cfg' - -application = service.Application('buildmaster') -BuildMaster(basedir, configfile).setServiceParent(application) - diff --git a/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/master.cfg b/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/master.cfg deleted file mode 100755 index 59f165f70..000000000 --- a/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/master.cfg +++ /dev/null @@ -1,290 +0,0 @@ -#!/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. - -__author__ = 'kjellander@webrtc.org (Henrik Kjellander)' - -c = BuildmasterConfig = {} - -import os -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.status import html -from buildbot.status import mail -from buildbot.steps import shell - -# These modules come from scripts, which must be in the PYTHONPATH. -from master import master_utils -from master import slaves_list -from master.builders_pools import BuildersPools -from master.try_job_http import TryJobHTTP -from master.try_job_svn import TryJobSubversion -from master.try_mail_notifier import TryMailNotifier -import config - -from webrtc_buildbot import utils - -ActiveMaster = config.Master.TryServer - -####### CHANGESOURCES -c['change_source'] = [] - -####### SCHEDULERS -pools = BuildersPools('webrtc') -pools['webrtc'].append('android') -pools['webrtc'].append('android_ndk') -pools['webrtc'].append('linux') -pools['webrtc'].append('linux_rel') -pools['webrtc'].append('mac') -pools['webrtc'].append('mac_rel') -pools['webrtc'].append('win') -pools['webrtc'].append('win_rel') - -last_good_urls = {'webrtc': ActiveMaster.last_good_url} -code_review_sites = {'webrtc': ActiveMaster.code_review_site} - -try_scheduler = TryJobHTTP(name='try_job_http', - port=ActiveMaster.try_job_port, - last_good_urls=last_good_urls, - code_review_sites=code_review_sites, - pools=pools) -c['schedulers'] = [try_scheduler] - -####### TESTS - -# Tests to run on the trybots -# Defines the supported tests followed by a tuple defining if the tests are -# enabled on Linux, Mac and/or Windows (in that order; defined in utils.py). -NORMAL_TESTS = { - # Test name Linux Mac Windows - 'audio_coding_module_test': (True, True, True), - 'audio_coding_unittests': (True, True, True), - 'audio_conference_mixer_unittests':(True, True, True), - 'audioproc_unittest': (True, True, True), - 'bitrate_controller_unittests': (True, True, True), - 'cng_unittests': (True, True, True), - 'g711_unittests': (True, True, True), - 'g722_unittests': (True, True, True), - 'libyuv_unittests': (True, True, True), - 'jpeg_unittests': (True, True, True), - 'media_file_unittests': (True, True, True), - 'metrics_unittests': (True, True, True), - 'neteq_unittests': (True, True, True), - 'pcm16b_unittests': (True, True, True), - 'remote_bitrate_estimator_unittests': (True, True, True), - 'resampler_unittests': (True, True, True), - 'rtp_rtcp_unittests': (True, True, True), - 'signal_processing_unittests': (True, True, True), - 'system_wrappers_unittests': (True, True, True), - 'test_support_unittests': (True, True, True), - 'udp_transport_unittests': (True, True, True), - 'vad_unittests': (True, True, True), - 'video_codecs_test_framework_integrationtests': (True, True, True), - 'video_codecs_test_framework_unittests': (True, True, True), - 'video_coding_unittests': (True, True, True), - 'video_engine_core_unittests': (True, True, True), - 'video_processing_unittests': (True, True, True), - 'voice_engine_unittests': (True, True, True), - 'vp8_unittests': (True, True, True), - 'webrtc_utility_unittests': (True, True, True), -} -linux_normal_tests = utils.GetEnabledTests(NORMAL_TESTS, 'Linux') -mac_normal_tests = utils.GetEnabledTests(NORMAL_TESTS, 'Mac') -windows_normal_tests = utils.GetEnabledTests(NORMAL_TESTS, 'Windows') - -####### FACTORIES -# Linux -linux_factory_dbg = utils.WebRTCLinuxFactory( - utils.BuildStatusOracle('linux_factory_dbg'), is_try_slave=True) -linux_factory_dbg.EnableBuild() -linux_factory_dbg.EnableTests(linux_normal_tests) - -linux_factory_release = utils.WebRTCLinuxFactory( - utils.BuildStatusOracle('linux_factory_release'), is_try_slave=True) -linux_factory_release.EnableBuild(release=True) -linux_factory_release.EnableTests(linux_normal_tests) - -android_factory = utils.WebRTCAndroidFactory( - utils.BuildStatusOracle('android_factory'), is_try_slave=True) -android_factory.EnableBuild(product='toro') - -android_ndk_factory = utils.WebRTCAndroidNDKFactory( - utils.BuildStatusOracle('android_ndk_factory'), is_try_slave=True) -android_ndk_factory.EnableBuild() - -# Mac -mac_factory_dbg = utils.WebRTCMacFactory( - utils.BuildStatusOracle('mac_factory_dbg'), is_try_slave=True) -mac_factory_dbg.EnableBuild(build_type='make') -mac_factory_dbg.EnableTests(mac_normal_tests) - -mac_factory_release = utils.WebRTCMacFactory( - utils.BuildStatusOracle('mac_factory_release'), is_try_slave=True) -mac_factory_release.EnableBuild(build_type='make', release=True) -mac_factory_release.EnableTests(mac_normal_tests) - -# Windows -win_factory_debug = utils.WebRTCWinFactory( - utils.BuildStatusOracle('win_factory_debug'), is_try_slave=True) -win_factory_debug.EnableBuild(configuration='Debug') -win_factory_debug.EnableTests(windows_normal_tests) - -win_factory_release = utils.WebRTCWinFactory( - utils.BuildStatusOracle('win_factory_release'), is_try_slave=True) -win_factory_release.EnableBuild(configuration='Release') -win_factory_release.EnableTests(windows_normal_tests) - -####### BUILDERS -android_builder = { - 'name': 'android', - 'slavename': 'webrtc-cb-linux-slave-7', - 'builddir': 'android-trybot', - 'factory': android_factory, - } -android_ndk_builder = { - 'name': 'android_ndk', - 'slavename': 'webrtc-cb-linux-slave-10', - 'builddir': 'android-ndk-trybot', - 'factory': android_ndk_factory, - } -linux_builder_debug = { - 'name': 'linux', - 'slavename': 'webrtc-cb-linux-slave-11', - 'builddir': 'linux-trybot-1', - 'factory': linux_factory_dbg, - } -linux_builder_release = { - 'name': 'linux_rel', - 'slavename': 'webrtc-cb-linux-slave-12', - 'builddir': 'linux-trybot-2', - 'factory': linux_factory_release, - } -mac_builder_debug = { - 'name': 'mac', - 'slavename': 'dhcp-172-28-249-129', - 'builddir': 'mac-trybot-1', - 'factory': mac_factory_dbg, - } -mac_builder_release = { - 'name': 'mac_rel', - 'slavename': 'dhcp-172-28-249-145', - 'builddir': 'mac-trybot-2', - 'factory': mac_factory_release, - } -win_builder_debug = { - 'name': 'win', - 'slavename': 'webrtc-win2k8-3', - 'builddir': 'win-trybot-1', - 'factory': win_factory_debug, - } -win_builder_release = { - 'name': 'win_rel', - 'slavename': 'webrtc-win-x86', - 'builddir': 'win-trybot-2', - 'factory': win_factory_release, - } - -c['builders'] = [ - win_builder_debug, - win_builder_release, - mac_builder_debug, - mac_builder_release, - linux_builder_debug, - linux_builder_release, - android_builder, - android_ndk_builder, - ] - - -def NextJob(builder, requests): - """Always prioritize commit queue jobs over try jobs.""" - for req in requests: - if any(c.who == 'commit-bot@webrtc.org' for c in req.source.changes): - return req - return requests[0] - - -# Slaves are loaded from slaves.cfg. -slaves = slaves_list.SlavesList('slaves.cfg', 'TryServer') - -for builder in c['builders']: - # Associate the slaves to the builders. The configuration is in slaves.cfg. - builder['slavenames'] = slaves.GetSlavesName(builder=builder['name']) - # Don't enable auto_reboot for our bots (Chrome uses it since they don't trust - # their unit tests to clean up properly) - builder['auto_reboot'] = False - # Prioritize commit-queue jobs over try jobs. - # This is documented starting with 0.8.2 - # http://buildbot.net/buildbot/docs/0.8.2/Prioritizing-Builds.html#Prioritizing-Builds - # but appears to be working on 0.7.12 already. - builder['nextBuild'] = NextJob - - -####### BUILDSLAVES - -# The 'slaves' list defines the set of allowable buildslaves. List all the -# slaves registered to a builder. Remove dupes. -c['slaves'] = master_utils.AutoSetupSlaves(c['builders'], - config.Master.GetBotPassword()) - -# Make sure everything works together. -master_utils.VerifySetup(c, slaves) - -# Adds common status and tools to this master. -# Use our own mail notifier. -master_utils.AutoSetupMaster(c, ActiveMaster, mail_notifier=False, - public_html='../master.webrtc/public_html', - templates=['./templates', - '../master.webrtc/templates']) - -####### STATUS TARGETS - -# Use an environment variable to easily avoid enabling e-mail for development. -if not os.getenv('BUILDBOT_DEVELOPMENT_MODE'): - email_status = mail.MailNotifier( - fromaddr='webrtc-try-watchlist@google.com', - extraRecipients=['webrtc-try-watchlist@google.com'], - sendToInterestedUsers=True, - mode='failing') - c['status'] += [email_status] - -# Try job result emails. -c['status'].append(TryMailNotifier( - fromaddr='webrtc-try-watchlist@google.com', - subject='try %(result)s for %(reason)s on %(builder)s @ r%(revision)s', - mode='all', - lookup=master_utils.UsersAreEmails())) - -####### DB URL - -# This specifies what database buildbot uses to store change and scheduler -# state. You can leave this at its default for all but the largest -# installations. -c['db_url'] = 'sqlite:///state.sqlite' - -####### DEBUGGING OPTIONS - -# if you set 'debugPassword', then you can connect to the buildmaster with -# the diagnostic tool in contrib/debugclient.py . From this tool, you can -# manually force builds and inject changes, which may be useful for testing -# your buildmaster without actually committing changes to your repository (or -# before you have a functioning 'sources' set up). The debug tool uses the -# same port number as the slaves do: 'slavePortnum'. - -#c['debugPassword'] = 'debugpassword' - -# if you set 'manhole', you can ssh into the buildmaster and get an -# interactive python shell, which may be useful for debugging buildbot -# internals. It is probably only useful for buildbot developers. You can also -# use an authorized_keys file, or plain telnet. -#from buildbot import manhole -#c['manhole'] = manhole.PasswordManhole('tcp:9999:interface=127.0.0.1', -# 'admin', 'password') diff --git a/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/public_html/buildbot.css b/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/public_html/buildbot.css deleted file mode 100644 index 1fb556d3a..000000000 --- a/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/public_html/buildbot.css +++ /dev/null @@ -1,457 +0,0 @@ -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; -} - -.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; -} - -.exception, td.offline { - 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; -} diff --git a/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/public_html/favicon.ico b/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/public_html/favicon.ico deleted file mode 100644 index 324a6caf6fec8b7791ccd1484561b60818ac6c3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmb7@T}YEr7{{Nv$ei0+Vp(o`9r>{l1VVv@xlJvl?8=LXpxV?6t>{MRDj^8k+)zUh z+$=JPx-tl&FVaagbMD;~LyT~viwr7aNu^77&eQYmL$XZhy!_w)InR53|8w3i02v(` z4ba&Dt(yRL0Dy@^C90(AWdCfMW=vjF+gP^Jo+u}sP&RXm!j5Wd|2DbR3&mzHG+MlH zw5mTDpPYZt1E5Q@xu;_}swO_5Y+{M*GYrX5)f6Az*R{8cxUbd$KyoCHn7y)^KR2Va zvko;ejolpEZgR}EB`~+ehh1Sa*%#wT#vW?a!&?a*OwA2cx-$R?thy9p?s*XMB@E!eU|9b zT?jg~i;vt#kgrRoigC7#^>57F6r4a~2uDi-%bH-PAdo%<96FpCY}g3LI9tKm=>;qc zBAP-BO(JWXaO&!aM~Q!Zt6_uHIq^t5CqBWABJm+M6mSZML|4&&@GQwE*AFqzD~B#G z=n}#cP5~$TDlj(x7NgORI5!u=xya(Gq7lvm?>SaXCNRDB&(bifjCc$nb_xeXx9~!A z3G8-zEtVF$P_KWCdSQ&@Pr9Iu;O^GNWn+-VjbT1h7G`I622d`&gVBpx2zD1LrriaF zm8H((0MEVv4096w7#WRVmeTJq4FA|w9Of#6xFVBSsRerTQk~>k%%Q|503&Ny0N-b- zS7jz@1F3&5Gfw$L$#1xSzYcwC=PP*<} jLm_SBT{elH#OUv$ySpNZW+z2`>3V!CiBc050Eztt$}btn diff --git a/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/slaves.cfg b/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/slaves.cfg deleted file mode 100644 index 72e598d49..000000000 --- a/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/slaves.cfg +++ /dev/null @@ -1,86 +0,0 @@ -# -*- python -*- -# ex: set syntax=python: -# Copyright (c) 2012 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -# See master.experimental/slaves.cfg for documentation. - - -def linux(): - return [ - { - 'master': 'TryServer', - 'os': 'linux', - 'version': 'lucid', - 'bits': '64', - 'builder': 'android', - 'hostname': 'webrtc-cb-linux-slave-13', - }, - { - 'master': 'TryServer', - 'os': 'linux', - 'version': 'lucid', - 'bits': '64', - 'builder': 'android_ndk', - 'hostname': 'webrtc-cb-linux-slave-14', - }, - { - 'master': 'TryServer', - 'os': 'linux', - 'version': 'lucid', - 'bits': '64', - 'builder': 'linux', - 'hostname': 'webrtc-cb-linux-slave-11', - }, - { - 'master': 'TryServer', - 'os': 'linux', - 'version': 'lucid', - 'bits': '64', - 'builder': 'linux_rel', - 'hostname': 'webrtc-cb-linux-slave-12', - }, - ] - -def mac(): - return [ - { - 'master': 'TryServer', - 'os': 'mac', - 'version': '10.7', - 'bits': '64', - 'builder': 'mac', - 'hostname': 'dhcp-172-28-249-129', - }, - { - 'master': 'TryServer', - 'os': 'mac', - 'version': '10.7', - 'bits': '64', - 'builder': 'mac_rel', - 'hostname': 'dhcp-172-28-249-145', - }, - ] - -def windows(): - return [ - { - 'master': 'TryServer', - 'os': 'win', - 'version': 'server2008', - 'bits': '64', - 'builder': 'win', - 'hostname': 'webrtc-win2k8-3', - }, - { - 'master': 'TryServer', - 'os': 'win', - 'version': 'server2008', - 'bits': '64', - 'builder': 'win_rel', - 'hostname': 'webrtc-win-x86', - }, - ] - -slaves = linux() + mac() + windows() diff --git a/tools/continuous_build/build_internal/masters/master.webrtc/Makefile b/tools/continuous_build/build_internal/masters/master.webrtc/Makefile deleted file mode 100644 index 36476d683..000000000 --- a/tools/continuous_build/build_internal/masters/master.webrtc/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -# -*- makefile -*- - -BUILDBOT_PATH = $(BUILDBOT8_PATH) -MASTERPATH := master.webrtc -include ../master-common.mk diff --git a/tools/continuous_build/build_internal/masters/master.webrtc/buildbot b/tools/continuous_build/build_internal/masters/master.webrtc/buildbot deleted file mode 100644 index cf3628dd5..000000000 --- a/tools/continuous_build/build_internal/masters/master.webrtc/buildbot +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/python - -from buildbot.scripts import runner -runner.run() diff --git a/tools/continuous_build/build_internal/masters/master.webrtc/buildbot.tac b/tools/continuous_build/build_internal/masters/master.webrtc/buildbot.tac deleted file mode 100644 index f4bca882a..000000000 --- a/tools/continuous_build/build_internal/masters/master.webrtc/buildbot.tac +++ /dev/null @@ -1,11 +0,0 @@ -import os - -from twisted.application import service -from buildbot.master import BuildMaster - -basedir = os.path.dirname(os.path.abspath(__file__)) -configfile = r'master.cfg' - -application = service.Application('buildmaster') -BuildMaster(basedir, configfile).setServiceParent(application) - diff --git a/tools/continuous_build/build_internal/masters/master.webrtc/master.cfg b/tools/continuous_build/build_internal/masters/master.webrtc/master.cfg deleted file mode 100755 index 0dafae148..000000000 --- a/tools/continuous_build/build_internal/masters/master.webrtc/master.cfg +++ /dev/null @@ -1,515 +0,0 @@ -#!/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. - -c = BuildmasterConfig = {} - -import os -from buildbot.buildslave import BuildSlave -from buildbot.changes.pb import PBChangeSource -from buildbot.changes.svnpoller import SVNPoller -from buildbot.process import factory -from buildbot.schedulers import basic -from buildbot.schedulers import timed -from buildbot.status import html -from buildbot.status import mail -from buildbot.status.web import grid -from buildbot.steps import shell - -# These modules come from scripts, which must be in the PYTHONPATH. -from master import master_utils -from master import slaves_list -import config -from webrtc_buildbot import utils - - -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) - -####### 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', - ] - -if is_libvpx_build(): - # Run the libvpx waterfall only nightly since it re-uses the WebRTC bots and - # would cause colliding builds otherwise. - scheduler = timed.Nightly(name='libvpx_nightly', branch='trunk', - builderNames=builder_names, hour=20) -else: - # Trigger builds on each check-in if we are the regular WebRTC waterfall. - 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 -# our bots use the Chromium Buildbot scripts. -c['schedulers'] = [scheduler] - -####### TESTS -# Defines the supported tests followed by a tuple defining if the tests are -# enabled on Linux, Mac and/or Windows (in that order; defined in utils.py). - -from webrtc_buildbot import utils - -# Normal tests run on Virtual machines for Linux and Windows and physical -# machines for Mac. -NORMAL_TESTS = { - # Test name Linux Mac Windows - 'audio_coding_module_test': (True, True, True), - 'audio_coding_unittests': (True, True, True), - 'audio_conference_mixer_unittests':(True, True, True), - 'audio_device_test_api': (False, True, False), # no audio devices - 'audioproc_unittest': (True, True, True), - 'bitrate_controller_unittests': (True, True, True), - 'cng_unittests': (True, True, True), - 'g711_unittests': (True, True, True), - 'g722_unittests': (True, True, True), - 'libyuv_unittests': (True, True, True), - 'jpeg_unittests': (True, True, True), - 'media_file_unittests': (True, True, True), - 'metrics_unittests': (True, True, True), - 'neteq_unittests': (True, True, True), - 'pcm16b_unittests': (True, True, True), - 'resampler_unittests': (True, True, True), - 'rtp_rtcp_unittests': (True, True, True), - 'signal_processing_unittests': (True, True, True), - 'system_wrappers_unittests': (True, True, True), - 'remote_bitrate_estimator_unittests': (True, True, True), - 'test_fec': (True, True, True), - 'test_support_unittests': (True, True, True), - 'udp_transport_unittests': (True, True, True), - 'vad_unittests': (True, True, True), - 'video_codecs_test_framework_integrationtests': (True, True, True), - 'video_codecs_test_framework_unittests': (True, True, True), - 'video_coding_unittests': (True, True, True), - 'video_engine_core_unittests': (True, True, True), - 'video_processing_unittests': (True, True, True), - 'voice_engine_unittests': (True, True, True), - 'vp8_integrationtests': (True, True, True), - 'vp8_unittests': (True, True, True), - 'webrtc_utility_unittests': (True, True, True), -} - -# Physical machine tests run on hardware with audio device and webcam present. -PHYSICAL_MACHINE_TESTS = { - # Test name Linux Mac Windows - 'audio_e2e_test': (True, False, False), - 'audio_device_test_api': (False, False, False), # Issue 257+339 - 'video_render_module_test': (True, True, True), - 'vie_auto_test': (True, True, True), - 'voe_auto_test': (True, True, True), -} - -MEMCHECK_DISABLED_TESTS = [ - 'audio_coding_module_test', # Issue 270 - 'test_fec', # Too slow for Valgrind memcheck -] -TSAN_DISABLED_TESTS = [ - 'audio_coding_module_test', # Issue 283 - 'audioproc_unittest', # Issue 299 - 'system_wrappers_unittests', # Issue 300 - 'video_processing_unittests', # Issue 303 - 'test_fec', # Too slow for TSAN -] -ASAN_DISABLED_TESTS = [ - 'audio_coding_module_test', # Issue 281 - 'bitrate_controller_unittests', # Issue 555 - 'neteq_unittests', # Issue 282 -] - -linux_normal_tests = utils.GetEnabledTests(NORMAL_TESTS, 'Linux') -mac_normal_tests = utils.GetEnabledTests(NORMAL_TESTS, 'Mac') -windows_normal_tests = utils.GetEnabledTests(NORMAL_TESTS, 'Windows') - -linux_physical_machine_tests = utils.GetEnabledTests(PHYSICAL_MACHINE_TESTS, - 'Linux') -mac_physical_machine_tests = utils.GetEnabledTests(PHYSICAL_MACHINE_TESTS, - 'Mac') -windows_physical_machine_tests = utils.GetEnabledTests(PHYSICAL_MACHINE_TESTS, - 'Windows') - -####### FACTORIES -CHROME_SVN_URL = 'http://src.chromium.org/svn/trunk/src' -CHROME_LKGR_URL = 'http://chromium-status.appspot.com/lkgr' -CHROME_GCLIENT_SOLUTION_NAME='src' -CHROME_CUSTOM_DEPS_LIST = [ - ('src/third_party/webrtc', 'http://webrtc.googlecode.com/svn/stable/src'), - ('src/third_party/WebKit/LayoutTests', None), - ('src/webkit/data/layout_tests/LayoutTests', None), -] - -VALGRIND_DEPS_LIST = [ - ('trunk/third_party/valgrind', - 'http://src.chromium.org/svn/trunk/deps/third_party/valgrind/binaries'), -] -ASAN_DEPS_LIST = [ - ('trunk/third_party/asan', - 'http://src.chromium.org/chrome/trunk/deps/third_party/asan'), -] - -# 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( - utils.BuildStatusOracle('linux_factory_64_dbg'), - custom_deps_list=DEFAULT_CUSTOM_DEPS) -linux_factory_64_dbg.EnableBuild() -linux_factory_64_dbg.EnableTests(linux_normal_tests) - -linux_factory_32_release = utils.WebRTCLinuxFactory( - utils.BuildStatusOracle('linux_factory_32_release'), - custom_deps_list=DEFAULT_CUSTOM_DEPS) -linux_factory_32_release.EnableBuild(release=True, build32=True) -linux_factory_32_release.EnableTests(linux_normal_tests) - -linux_factory_64_release = utils.WebRTCLinuxFactory( - utils.BuildStatusOracle('linux_factory_64_release'), - custom_deps_list=DEFAULT_CUSTOM_DEPS) -linux_factory_64_release.EnableBuild(release=True) -linux_factory_64_release.EnableTests(linux_normal_tests) - -linux_factory_32_dbg = utils.WebRTCLinuxFactory( - utils.BuildStatusOracle('linux_factory_32_dbg'), - custom_deps_list=DEFAULT_CUSTOM_DEPS) -linux_factory_32_dbg.EnableCoverage( - coverage_url='http://webrtc-cb-linux-slave-4.cbf.corp.google.com/coverage/') -linux_factory_32_dbg.EnableBuild(build32=True) -linux_factory_32_dbg.EnableTests(linux_normal_tests) - -# The video factory needs to prepare for valgrind since some tests will run -# under tooling. Not all tests will though since that would be too slow. -linux_factory_large_tests = utils.WebRTCLinuxFactory( - utils.BuildStatusOracle('linux_factory_large_tests'), - custom_deps_list=VALGRIND_DEPS_LIST + DEFAULT_CUSTOM_DEPS) -linux_factory_large_tests.EnableCoverage( - coverage_url='http://webrtc-build-bot-se.lul/coverage/') -linux_factory_large_tests.EnableBuild(compile_for_memory_tooling=True) -linux_factory_large_tests.EnableTests(linux_physical_machine_tests) - -chromeos_factory = utils.WebRTCLinuxFactory( - utils.BuildStatusOracle('chromeos_factory'), - custom_deps_list=DEFAULT_CUSTOM_DEPS) -chromeos_factory.EnableBuild(chrome_os=True) -chromeos_factory.EnableTests(linux_normal_tests) - -linux_clang = utils.WebRTCLinuxFactory( - utils.BuildStatusOracle('linux_clang'), - custom_deps_list=DEFAULT_CUSTOM_DEPS) -linux_clang.EnableBuild(clang=True) -linux_clang.EnableTests(linux_normal_tests) - -linux_memcheck_factory = utils.WebRTCLinuxFactory( - utils.BuildStatusOracle('linux_memcheck_factory'), run_with_memcheck=True, - custom_deps_list=VALGRIND_DEPS_LIST + DEFAULT_CUSTOM_DEPS) -linux_memcheck_factory.EnableBuild(release=True, - compile_for_memory_tooling=True) -# Filter out disabled memcheck tests: -memcheck_tests = filter(lambda test: test not in MEMCHECK_DISABLED_TESTS, - linux_normal_tests) -linux_memcheck_factory.EnableTests(memcheck_tests) - -linux_tsan_factory = utils.WebRTCLinuxFactory( - utils.BuildStatusOracle('linux_tsan_factory'), run_with_tsan=True, - custom_deps_list=VALGRIND_DEPS_LIST + DEFAULT_CUSTOM_DEPS) -linux_tsan_factory.EnableBuild(release=True, compile_for_memory_tooling=True) -# Filter out disabled tsan tests: -tsan_tests = filter(lambda test: test not in TSAN_DISABLED_TESTS, - linux_normal_tests) -linux_tsan_factory.EnableTests(tsan_tests) - -linux_asan_factory = utils.WebRTCLinuxFactory( - utils.BuildStatusOracle('linux_asan_factory'), run_with_asan=True, - custom_deps_list=ASAN_DEPS_LIST + DEFAULT_CUSTOM_DEPS) -linux_asan_factory.EnableBuild(release=True, clang=True) -# Filter out disabled asan tests: -asan_tests = filter(lambda test: test not in ASAN_DISABLED_TESTS, - linux_normal_tests) -linux_asan_factory.EnableTests(asan_tests) - -android_factory = utils.WebRTCAndroidFactory( - utils.BuildStatusOracle('android_factory'), - custom_deps_list=DEFAULT_CUSTOM_DEPS) -android_factory.EnableBuild(product='toro') - -android_ndk_factory = utils.WebRTCAndroidNDKFactory( - utils.BuildStatusOracle('android_ndk_factory'), - custom_deps_list=DEFAULT_CUSTOM_DEPS) -android_ndk_factory.EnableBuild() - -# Mac -mac_factory_32_dbg = utils.WebRTCMacFactory( - utils.BuildStatusOracle('mac_factory_32_dbg'), - custom_deps_list=DEFAULT_CUSTOM_DEPS) -mac_factory_32_dbg.EnableBuild(build_type='both') -mac_factory_32_dbg.EnableTests(mac_normal_tests) - -mac_factory_32_release = utils.WebRTCMacFactory( - utils.BuildStatusOracle('mac_factory_32_release'), - custom_deps_list=DEFAULT_CUSTOM_DEPS) -mac_factory_32_release.EnableBuild(build_type='both', release=True) -mac_factory_32_release.EnableTests(mac_normal_tests) - -mac_factory_large_tests = utils.WebRTCMacFactory( - utils.BuildStatusOracle('mac_factory_large_tests'), - custom_deps_list=DEFAULT_CUSTOM_DEPS) -mac_factory_large_tests.EnableBuild(build_type='make') -mac_factory_large_tests.EnableTests(mac_physical_machine_tests) - -# Windows -win_factory_32_Debug = utils.WebRTCWinFactory( - utils.BuildStatusOracle('win_factory_32_debug'), - custom_deps_list=DEFAULT_CUSTOM_DEPS) -win_factory_32_Debug.EnableBuild(configuration='Debug') -win_factory_32_Debug.EnableTests(windows_normal_tests) - -win_factory_32_Release = utils.WebRTCWinFactory( - utils.BuildStatusOracle('win_factory_32_release'), - custom_deps_list=DEFAULT_CUSTOM_DEPS) -win_factory_32_Release.EnableBuild(configuration='Release') -win_factory_32_Release.EnableTests(windows_normal_tests) - -win_factory_large_tests = utils.WebRTCWinFactory( - utils.BuildStatusOracle('win_factory_large_tests'), - custom_deps_list=DEFAULT_CUSTOM_DEPS) -win_factory_large_tests.EnableBuild() -win_factory_large_tests.EnableTests(windows_physical_machine_tests) - -####### BUILDERS -linux_builder_64_debug = { - 'name': 'Linux64DBG', - 'slavename': 'webrtc-cb-linux-slave-1', - 'builddir': 'linux-slave-1', - 'factory': linux_factory_64_dbg, - } -linux_builder_32_release = { - 'name': 'Linux32Release', - 'slavename': 'webrtc-cb-linux-slave-2', - 'builddir': 'linux-slave-2', - 'factory': linux_factory_32_release, - } -linux_builder_64_release = { - 'name': 'Linux64Release', - 'slavename': 'webrtc-cb-linux-slave-5', - 'builddir': 'linux-slave-5', - 'factory': linux_factory_64_release, - } -linux_builder_32_debug = { - 'name': 'Linux32DBG', - 'slavename': 'webrtc-cb-linux-slave-4', - 'builddir': 'linux-slave-4', - 'factory': linux_factory_32_dbg, - } -mac_builder_32_debug = { - 'name': 'MacOS32DBG', - 'slavename': 'dhcp-172-28-249-144', - 'builddir': 'mac-slave-3', - 'factory': mac_factory_32_dbg, - } -mac_builder_32_release = { - 'name': 'MacOS32Release', - 'slavename': 'dhcp-172-28-249-167', - 'builddir': 'mac-slave-2', - 'factory': mac_factory_32_release, - } -mac_builder_large_tests = { - 'name': 'MacLargeTests', - 'slavename': 'dhcp-172-28-249-168', - 'builddir': 'mac-large-tests', - 'factory': mac_factory_large_tests, - } -chromeos_builder = { - 'name': 'ChromeOS', - 'slavename': 'webrtc-cb-linux-slave-3', - 'builddir': 'chromeos', - 'factory': chromeos_factory, - } -win_builder_32_debug = { - 'name': 'Win32Debug', - 'slavename': 'webrtc-win2k8-1', - 'builddir': 'win-32-dbg', - 'factory': win_factory_32_Debug, - } -win_builder_32_release = { - 'name': 'Win32Release', - 'slavename': 'webrtc-win2k8-2', - 'builddir': 'win-32-release', - 'factory': win_factory_32_Release, - } -win_builder_large_tests = { - 'name': 'WinLargeTests', - 'slavename': 'webrtc-test-w', - 'builddir': 'win-large-tests', - 'factory': win_factory_large_tests, - } -linux_builder_large_tests = { - 'name': 'LinuxLargeTests', - 'slavename': 'webrtc-build-bot-se', - 'builddir': 'linux-large-tests', - 'factory': linux_factory_large_tests, - } -linux_builder_clang = { - 'name': 'LinuxClang', - 'slavename': 'webrtc-cb-linux-slave-8', - 'builddir': 'linux-clang', - 'factory': linux_clang, - } -linux_builder_memcheck = { - 'name': 'LinuxMemcheck', - 'slavename': 'webrtc-cb-linux-slave-6', - 'builddir': 'linux-memcheck', - 'factory': linux_memcheck_factory, - } -linux_builder_tsan = { - 'name': 'LinuxTsan', - 'slavename': 'webrtc-cb-linux-slave-15', - 'builddir': 'linux-tsan', - 'factory': linux_tsan_factory, - } -linux_builder_asan = { - 'name': 'LinuxAsan', - 'slavename': 'webrtc-cb-linux-slave-16', - 'builddir': 'linux-asan', - 'factory': linux_asan_factory, - } -android_builder_1 = { - 'name': 'Android', - 'slavename': 'webrtc-cb-linux-slave-7', - 'builddir': 'android', - 'factory': android_factory, - } -android_builder_ndk = { - 'name': 'AndroidNDK', - 'slavename': 'webrtc-cb-linux-slave-10', - 'builddir': 'android-ndk', - 'factory': android_ndk_factory, - } -linux_builder_gcc_4_6 = { - 'name': 'Linux64DBG-GCC4.6', - 'slavename': 'webrtc-cb-linux-slave-9', - 'builddir': 'linux-slave-gcc-4.6', - 'factory': linux_factory_64_dbg, - } -c['builders'] = [ - win_builder_32_debug, - win_builder_32_release, - mac_builder_32_debug, - mac_builder_32_release, - linux_builder_32_debug, - linux_builder_32_release, - linux_builder_64_release, - linux_builder_64_debug, - linux_builder_clang, - linux_builder_memcheck, - linux_builder_tsan, - linux_builder_asan, - linux_builder_gcc_4_6, - win_builder_large_tests, - mac_builder_large_tests, - linux_builder_large_tests, - android_builder_1, - android_builder_ndk, - chromeos_builder, - ] - -# Load Chrome bots that are using Chromium factories. -# These modules come from the local directory. -import master_builders_cfg -master_builders_cfg.ConfigureChromeWebRTCBuilders(c, - custom_deps_list=DEFAULT_CUSTOM_DEPS) -master_builders_cfg.ConfigureNightlyChromeWebRTCBloatBuilder(c, - custom_deps_list=DEFAULT_CUSTOM_DEPS) - -####### BUILDSLAVES - -# Slaves are loaded from slaves.cfg. -slaves = slaves_list.SlavesList('slaves.cfg', 'WebRTC') -for builder in c['builders']: - # Associate the slaves to the builders. The configuration is in slaves.cfg. - builder['slavenames'] = slaves.GetSlavesName(builder=builder['name']) - -# The 'slaves' list defines the set of allowable buildslaves. List all the -# slaves registered to a builder. Remove dupes. -c['slaves'] = master_utils.AutoSetupSlaves(c['builders'], - config.Master.GetBotPassword()) -# Make sure everything works together. -master_utils.VerifySetup(c, slaves) - -# Adds common status and tools to this master. -master_utils.AutoSetupMaster(c, ActiveMaster, mail_notifier=False, - enable_http_status_push=False) - -####### STATUS TARGETS -# Override the tgrid URL since we're parsing that in WebRTC for LKGR -# (Chrome doesn't use it and puts the Console page on that URL instead). -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=watchlist_email, - extraRecipients=[watchlist_email], - sendToInterestedUsers=True, - mode='failing', - lookup=master_utils.UsersAreEmails()) - c['status'] += [email_status] - -####### DB URL - -# This specifies what database buildbot uses to store change and scheduler -# state. You can leave this at its default for all but the largest -# installations. -c['db_url'] = 'sqlite:///state.sqlite' - -####### DEBUGGING OPTIONS - -# if you set 'debugPassword', then you can connect to the buildmaster with -# the diagnostic tool in contrib/debugclient.py . From this tool, you can -# manually force builds and inject changes, which may be useful for testing -# your buildmaster without actually committing changes to your repository (or -# before you have a functioning 'sources' set up). The debug tool uses the -# same port number as the slaves do: 'slavePortnum'. - -#c['debugPassword'] = 'debugpassword' - -# if you set 'manhole', you can ssh into the buildmaster and get an -# interactive python shell, which may be useful for debugging buildbot -# internals. It is probably only useful for buildbot developers. You can also -# use an authorized_keys file, or plain telnet. -#from buildbot import manhole -#c['manhole'] = manhole.PasswordManhole('tcp:9999:interface=127.0.0.1', -# 'admin', 'password') 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 deleted file mode 100644 index e440fc94d..000000000 --- a/tools/continuous_build/build_internal/masters/master.webrtc/master_builders_cfg.py +++ /dev/null @@ -1,97 +0,0 @@ -#!/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 configured in Chromium style.""" - -from buildbot.schedulers import timed - -from master import master_config -from webrtc_buildbot import webrtc_chromium_factory - -# Used to put builders into different categories by the Helper class. -defaults = {} - - -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=[]): - helper = master_config.Helper(defaults) - B = helper.Builder - F = helper.Factory - S = helper.Scheduler - - # Main Scheduler for WebRTC - S('webrtc_rel', branch='trunk', treeStableTimer=0) - - # Set up all the builders. - # Don't put spaces or 'funny characters' within the builder names, so that - # we can safely use the builder name as part of a filepath. - - # Linux... - defaults['category'] = 'linux' - B('LinuxChrome', 'chrome_linux_debug_factory', scheduler='webrtc_rel') - F('chrome_linux_debug_factory', linux().ChromiumWebRTCLatestFactory( - target='Debug', - factory_properties={'safesync_url': CHROME_LKGR, - 'use_xvfb_on_linux': True}, - custom_deps_list=custom_deps_list)) - - # Mac 10.7 (Lion) ... - defaults['category'] = 'mac-10.7' - B('MacChrome', 'chrome_mac_debug_factory', scheduler='webrtc_rel') - F('chrome_mac_debug_factory', mac().ChromiumWebRTCLatestFactory( - target='Debug', - factory_properties={'safesync_url': CHROME_LKGR}, - custom_deps_list=custom_deps_list)) - - # Windows... - defaults['category'] = 'windows' - B('WinChrome', 'chrome_win32_debug_factory', scheduler='webrtc_rel') - F('chrome_win32_debug_factory', win().ChromiumWebRTCLatestFactory( - project=r'..\chrome\chrome.sln', - target='Debug', - factory_properties={'safesync_url': CHROME_LKGR}, - custom_deps_list=custom_deps_list)) - - # Use the helper class to connect the builders, factories and schedulers - # and add them to the BuildmasterConfig (c) dictionary. - helper.Update(c) - - -def ConfigureNightlyChromeWebRTCBloatBuilder(c, custom_deps_list=[]): - # Nightly Scheduler at 22 PM CST/CDT. This will mean 5 AM in the CET - # time zone, which should avoid everyone's working hours. - nightly_scheduler = timed.Nightly(name='webrtc_nightly', - branch='trunk', - builderNames=['LinuxChromeBloat'], - hour=22) - c['schedulers'].append(nightly_scheduler) - - # The Bloat calculator bot is setup without the helper classes since they - # don't have support for a Nightly scheduler. - 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_source_cfg.py b/tools/continuous_build/build_internal/masters/master.webrtc/master_source_cfg.py deleted file mode 100644 index cf831013c..000000000 --- a/tools/continuous_build/build_internal/masters/master.webrtc/master_source_cfg.py +++ /dev/null @@ -1,31 +0,0 @@ -#!/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. - -"""Source control poller for the WebRTC code.""" - -from buildbot.changes import svnpoller -from master import build_utils - - -def WebRTCFileSplitter(path): - """Splits the SVN path into branch and filename sections.""" - # We're currently only using trunk branch but we may soon start building - # multiple branches. - projects = ['trunk'] - return build_utils.SplitPath(projects, path) - - -def ConfigureChangeSource(config, c): - webrtc_revlinktmpl = 'http://code.google.com/p/webrtc/source/browse?r=%s' - webrtc_poller = svnpoller.SVNPoller(svnurl=config.Master.webrtc_root_url, - split_file=WebRTCFileSplitter, - pollinterval=30, - histmax=10, - revlinktmpl=webrtc_revlinktmpl) - c['change_source'] = webrtc_poller diff --git a/tools/continuous_build/build_internal/masters/master.webrtc/public_html/buildbot.css b/tools/continuous_build/build_internal/masters/master.webrtc/public_html/buildbot.css deleted file mode 100644 index 3a136f927..000000000 --- a/tools/continuous_build/build_internal/masters/master.webrtc/public_html/buildbot.css +++ /dev/null @@ -1,486 +0,0 @@ -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, td.offline { - 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; -} diff --git a/tools/continuous_build/build_internal/masters/master.webrtc/public_html/default.css b/tools/continuous_build/build_internal/masters/master.webrtc/public_html/default.css deleted file mode 100644 index bc55d7ebf..000000000 --- a/tools/continuous_build/build_internal/masters/master.webrtc/public_html/default.css +++ /dev/null @@ -1,504 +0,0 @@ -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; -} diff --git a/tools/continuous_build/build_internal/masters/master.webrtc/public_html/favicon.ico b/tools/continuous_build/build_internal/masters/master.webrtc/public_html/favicon.ico deleted file mode 100644 index 324a6caf6fec8b7791ccd1484561b60818ac6c3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmb7@T}YEr7{{Nv$ei0+Vp(o`9r>{l1VVv@xlJvl?8=LXpxV?6t>{MRDj^8k+)zUh z+$=JPx-tl&FVaagbMD;~LyT~viwr7aNu^77&eQYmL$XZhy!_w)InR53|8w3i02v(` z4ba&Dt(yRL0Dy@^C90(AWdCfMW=vjF+gP^Jo+u}sP&RXm!j5Wd|2DbR3&mzHG+MlH zw5mTDpPYZt1E5Q@xu;_}swO_5Y+{M*GYrX5)f6Az*R{8cxUbd$KyoCHn7y)^KR2Va zvko;ejolpEZgR}EB`~+ehh1Sa*%#wT#vW?a!&?a*OwA2cx-$R?thy9p?s*XMB@E!eU|9b zT?jg~i;vt#kgrRoigC7#^>57F6r4a~2uDi-%bH-PAdo%<96FpCY}g3LI9tKm=>;qc zBAP-BO(JWXaO&!aM~Q!Zt6_uHIq^t5CqBWABJm+M6mSZML|4&&@GQwE*AFqzD~B#G z=n}#cP5~$TDlj(x7NgORI5!u=xya(Gq7lvm?>SaXCNRDB&(bifjCc$nb_xeXx9~!A z3G8-zEtVF$P_KWCdSQ&@Pr9Iu;O^GNWn+-VjbT1h7G`I622d`&gVBpx2zD1LrriaF zm8H((0MEVv4096w7#WRVmeTJq4FA|w9Of#6xFVBSsRerTQk~>k%%Q|503&Ny0N-b- zS7jz@1F3&5Gfw$L$#1xSzYcwC=PP*<} jLm_SBT{elH#OUv$ySpNZW+z2`>3V!CiBc050Eztt$}btn diff --git a/tools/continuous_build/build_internal/masters/master.webrtc/slaves.cfg b/tools/continuous_build/build_internal/masters/master.webrtc/slaves.cfg deleted file mode 100644 index 8839d71d4..000000000 --- a/tools/continuous_build/build_internal/masters/master.webrtc/slaves.cfg +++ /dev/null @@ -1,199 +0,0 @@ -#!/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. - - -def linux(): - return [ - { - 'master': 'WebRTC', - 'os': 'linux', - 'version': 'lucid', - 'bits': '64', - 'builder': 'Linux64DBG', - 'hostname': 'webrtc-cb-linux-slave-1', - }, - { - 'master': 'WebRTC', - 'os': 'linux', - 'version': 'lucid', - 'bits': '64', - 'builder': 'Linux32Release', - 'hostname': 'webrtc-cb-linux-slave-2', - }, - { - 'master': 'WebRTC', - 'os': 'linux', - 'version': 'lucid', - 'bits': '64', - 'builder': 'ChromeOS', - 'hostname': 'webrtc-cb-linux-slave-3', - }, - { - 'master': 'WebRTC', - 'os': 'linux', - 'version': 'lucid', - 'bits': '64', - 'builder': 'Linux32DBG', - 'hostname': 'webrtc-cb-linux-slave-4', - }, - { - 'master': 'WebRTC', - 'os': 'linux', - 'version': 'lucid', - 'bits': '64', - 'builder': 'Linux64Release', - 'hostname': 'webrtc-cb-linux-slave-5', - }, - { - 'master': 'WebRTC', - 'os': 'linux', - 'version': 'lucid', - 'bits': '64', - 'builder': 'LinuxMemcheck', - 'hostname': 'webrtc-cb-linux-slave-6', - }, - { - 'master': 'WebRTC', - 'os': 'linux', - 'version': 'lucid', - 'bits': '64', - 'builder': 'Android', - 'hostname': 'webrtc-cb-linux-slave-7', - }, - { - 'master': 'WebRTC', - 'os': 'linux', - 'version': 'lucid', - 'bits': '64', - 'builder': 'LinuxClang', - 'hostname': 'webrtc-cb-linux-slave-8', - }, - { - 'master': 'WebRTC', - 'os': 'linux', - 'version': 'lucid', - 'bits': '64', - 'builder': 'Linux64DBG-GCC4.6', - 'hostname': 'webrtc-cb-linux-slave-9', - }, - { - 'master': 'WebRTC', - 'os': 'linux', - 'version': 'lucid', - 'bits': '64', - 'builder': 'AndroidNDK', - 'hostname': 'webrtc-cb-linux-slave-10', - }, - { - 'master': 'WebRTC', - 'os': 'linux', - 'version': 'lucid', - 'bits': '64', - 'builder': 'LinuxTsan', - 'hostname': 'webrtc-cb-linux-slave-15', - }, - { - 'master': 'WebRTC', - 'os': 'linux', - 'version': 'lucid', - 'bits': '64', - 'builder': 'LinuxAsan', - 'hostname': 'webrtc-cb-linux-slave-16', - }, - { - 'master': 'WebRTC', - 'os': 'linux', - 'version': 'lucid', - 'bits': '64', - 'builder': 'LinuxLargeTests', - 'hostname': 'webrtc-build-bot-se', - }, - { - 'master': 'WebRTC', - 'os': 'linux', - 'version': 'lucid', - 'bits': '64', - 'builder': ['LinuxChrome', 'LinuxChromeBloat'], - 'hostname': 'webrtc-chrome', - }, - ] - -def mac(): - return [ - { - 'master': 'WebRTC', - 'os': 'mac', - 'version': '10.7', - 'bits': '64', - 'builder': 'MacOS32DBG', - 'hostname': 'dhcp-172-28-249-144', - }, - { - 'master': 'WebRTC', - 'os': 'mac', - 'version': '10.7', - 'bits': '64', - 'builder': 'MacOS32Release', - 'hostname': 'dhcp-172-28-249-167', - }, - { - 'master': 'WebRTC', - 'os': 'mac', - 'version': '10.7', - 'bits': '64', - 'builder': 'MacLargeTests', - 'hostname': 'dhcp-172-28-249-168', - }, - { - 'master': 'WebRTC', - 'os': 'mac', - 'version': '10.7', - 'bits': '64', - 'builder': 'MacChrome', - 'hostname': 'dhcp-172-28-249-146', - }, - ] - -def windows(): - return [ - { - 'master': 'WebRTC', - 'os': 'win', - 'version': 'server2008', - 'bits': '64', - 'builder': 'Win32Debug', - 'hostname': 'webrtc-win2k8-1', - }, - { - 'master': 'WebRTC', - 'os': 'win', - 'version': 'server2008', - 'bits': '64', - 'builder': 'Win32Release', - 'hostname': 'webrtc-win2k8-2', - }, - { - 'master': 'WebRTC', - 'os': 'win', - 'version': 'win7', - 'bits': '64', - 'builder': 'WinLargeTests', - 'hostname': 'webrtc-test-w', - }, - { - 'master': 'WebRTC', - 'os': 'win', - 'version': 'win7', - 'bits': '64', - 'builder': 'WinChrome', - 'hostname': 'webrtc-chrome-w', - }, - ] - -slaves = linux() + mac() + windows() diff --git a/tools/continuous_build/build_internal/scripts/clean_old_files.py b/tools/continuous_build/build_internal/scripts/clean_old_files.py deleted file mode 100755 index 2b2d4811c..000000000 --- a/tools/continuous_build/build_internal/scripts/clean_old_files.py +++ /dev/null @@ -1,136 +0,0 @@ -#!/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. - -__author__ = 'ivinnichenko@webrtc.org (Illya Vinnichenko)' - -"""This script will prune sufficiently old files and empty directories. - - The algorithm is to look into the provided directory and delete any files - that is older than x days, recursively. Then all empty directories will be - deleted (we can't look at timestamps there since the act of deleting a file - will refresh the directory's timestamp). - - Note: This script has only been tested on Linux. -""" - -from optparse import OptionParser -import os -import sys -import time - -# The path is considered whitelisted if any of these entries appear -# at some point in the path -WHITELIST = ['buildbot', 'buildbot.tac', 'Makefile', 'master.cfg', - 'public_html', 'slaves.cfg', 'state.sqlite', 'twistd.pid'] - - -def is_whitelisted(path): - '''Check if file is whitelisted. - - Args: - path: file path. - ''' - for entry in WHITELIST: - if entry in path: - return True - return False - - -def delete_directory(directory): - try: - os.rmdir(directory) - return True - except OSError as exception: - if 'not empty' in str(exception): - # This is normal, ignore it - pass - else: - print >> sys.stderr, ('Could not remove directory %s: reason %s.' % - (directory, exception)) - return False - - -def delete_file(file): - try: - os.remove(file) - except OSError as exception: - print >> sys.stderr, ('Unexpectedly failed to remove file %s: reason %s.' % - (file, exception)) - - -def log_removal(file_or_directory, time_stamp, verbose): - if verbose: - str_stamp = time.strftime('%a, %d %b %Y %H:%M:%S +0000', - time.gmtime(time_stamp)) - print 'Removing [%s], stamped on %s' % (file_or_directory, str_stamp) - - -def remove_old_files_and_directories(path, num_days, verbose, skip_dirs): - '''Removes all files under path that are older than num_days days. - The algorithm also tried to delete all directories, except for those who - contain files that are sufficiently new. - - Implementation note: it doesn't make sense to look at timestamps for - directories since their timestamps are updated when a file is deleted. - - Args: - path: The starting point. - num_days: days limit for removal. - verbose: print every cmd? - ''' - current_time = time.time() - limit = 60 * 60 * 24 * num_days - - # Walk bottom-up so directories are deleted in the right order. - for root, directories, files in os.walk(path, topdown=False): - for file in files: - current_file = os.path.join(root, file) - time_stamp = os.stat(current_file).st_mtime - - if is_whitelisted(current_file): - continue - - if (current_time - time_stamp) > limit: - delete_file(current_file) - log_removal(current_file, time_stamp, verbose) - - if not skip_dirs: - for directory in directories: - current_directory = os.path.join(root, directory) - time_stamp = os.stat(current_directory).st_mtime - if delete_directory(current_directory): - log_removal(current_directory, time_stamp, verbose) - - -def main(): - usage = 'usage: %prog -p -n [-q] [-d]' - parser = OptionParser(usage) - parser.add_option('-p', '--path', dest='cleanup_path', help='base directory') - parser.add_option('-n', '--num_days', dest='num_days', help='number of days') - parser.add_option('-q', '--quiet', - action='store_false', dest='verbose', default=True, - help='do not print status messages to stdout') - parser.add_option('-d', '--delete-dirs-too', - action='store_false', dest='skip_dirs', default=True, - help='number of days') - - options, unused_args = parser.parse_args() - if not options.cleanup_path: - sys.exit('You must specify base directory') - if not options.num_days: - sys.exit('You must specify number of days old') - - if options.verbose: - print 'Cleaning up everything in %s older than %s days' % ( - options.cleanup_path, options.num_days) - remove_old_files_and_directories(options.cleanup_path, int(options.num_days), - options.verbose, options.skip_dirs) - -if __name__ == '__main__': - main() diff --git a/tools/continuous_build/build_internal/scripts/clean_third_party_gcda.sh b/tools/continuous_build/build_internal/scripts/clean_third_party_gcda.sh deleted file mode 100755 index 38547d874..000000000 --- a/tools/continuous_build/build_internal/scripts/clean_third_party_gcda.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -# 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. -# - -# This script removes all .gcda files from third_party in order to work around -# a bug in LCOV (this should also increase the bot speed). -find . -name "*.gcda" -path "*/third_party/*" | xargs rm -f diff --git a/tools/continuous_build/build_internal/scripts/generate_coverage_html.sh b/tools/continuous_build/build_internal/scripts/generate_coverage_html.sh deleted file mode 100755 index 6b4c17528..000000000 --- a/tools/continuous_build/build_internal/scripts/generate_coverage_html.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# 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. -# - -# Generates a LCOV error report and makes the results readable to all. - -genhtml $1 --output-directory $2 -if [ "$?" -ne "0" ]; then - exit 1 -fi - -chmod -R 777 $2 diff --git a/tools/continuous_build/build_internal/scripts/webrtc_buildbot/__init__.py b/tools/continuous_build/build_internal/scripts/webrtc_buildbot/__init__.py deleted file mode 100755 index e6f0468af..000000000 --- a/tools/continuous_build/build_internal/scripts/webrtc_buildbot/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -#!/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. diff --git a/tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils.py b/tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils.py deleted file mode 100755 index 3f54d7b53..000000000 --- a/tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils.py +++ /dev/null @@ -1,1077 +0,0 @@ -#!/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. - -import ntpath -import os -import posixpath -import sys -import urlparse -from buildbot.process import factory -from buildbot.process import properties -from buildbot.process.properties import WithProperties -from buildbot.status import builder -from buildbot.steps.shell import ShellCommand - -from master import chromium_step -from master.factory import gclient_factory - -# Defines the order of the booleans of the supported platforms in the test -# 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' - -MEMCHECK_CMD = ['tools/valgrind-webrtc/webrtc_tests.sh', '-t'] -TSAN_CMD = ['tools/valgrind-webrtc/webrtc_tests.sh', '--tool', 'tsan', '-t'] -ASAN_CMD = ['tools/valgrind-webrtc/webrtc_tests.sh', '--tool', 'asan', '-t'] - -DEFAULT_COVERAGE_DIR = '/var/www/coverage' -DEFAULT_MASTER_WORK_DIR = '.' -GCLIENT_RETRIES = 3 - -# Copied from trunk/tools/build/scripts/master/factory/chromium_factory.py -# but converted to a list since we set defines instead of using an environment -# variable. -# -# On memcheck and tsan bots, override the optimizer settings so we don't inline -# too much and make the stacks harder to figure out. Use the same settings -# on all buildbot masters to make it easier to move bots. -MEMORY_TOOLS_GYP_DEFINES = [ - # GCC flags - 'mac_debug_optimization=1 ', - 'mac_release_optimization=1 ', - 'release_optimize=1 ', - 'no_gc_sections=1 ', - 'debug_extra_cflags="-g -fno-inline -fno-omit-frame-pointer ' - '-fno-builtin -fno-optimize-sibling-calls" ', - 'release_extra_cflags="-g -fno-inline -fno-omit-frame-pointer ' - '-fno-builtin -fno-optimize-sibling-calls" ', - # MSVS flags - 'win_debug_RuntimeChecks=0 ', - 'win_debug_disable_iterator_debugging=1 ', - 'win_debug_Optimization=1 ', - 'win_debug_InlineFunctionExpansion=0 ', - 'win_release_InlineFunctionExpansion=0 ', - 'win_release_OmitFramePointers=0 ', - - 'linux_use_tcmalloc=1 ', - 'release_valgrind_build=1 ', - 'werror= ', -] - - -class WebRTCFactory(factory.BuildFactory): - """Abstract superclass for all build factories. - - A build factory defines a sequence of steps to take in a build process. - This class provides some helper methods and some abstract methods that - can be overridden to create customized build sequences. - """ - - 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: - build_status_oracle: An instance of BuildStatusOracle which is used to - 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) - - self.build_status_oracle = build_status_oracle - self.is_try_slave = is_try_slave - self.properties = properties.Properties() - self.gyp_params = ['-Dfastbuild=1'] # No debug symbols = build speedup - 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]. - - Implementations of this method must add clean and build steps so that - when all steps have been run, we have an up-to-date, complete and correct - build of WebRTC for the platform. It is up to the method how to do this. - """ - pass - - def EnableTests(self, tests): - """Adds test run steps for all tests in the list. - - This method must be run after enabling the build. - - Args: - tests: list of test to be run. - """ - for test in tests: - self.EnableTest(test) - - def AddCommonStep(self, cmd, descriptor='', workdir=WEBRTC_TRUNK_DIR, - halt_build_on_failure=True, timeout=1200, use_pty=True, - env={}): - """Adds a step which will run as a shell command on the slave. - - NOTE: you are recommended to use this method to add new shell commands - instead of the base-class addStep method, since steps added here will - work with the smart-clean system (e.g. only do a full rebuild if the - previous build failed). Steps handled outside this method will not lead - to a full rebuild on the next build if they fail. - - Args: - cmd: The command to run. This command follows the contract for - ShellCommand, so see that documentation for more details. - descriptor: A string, or a list of strings, describing what the step - does. The descriptor gets printed in the waterfall display. - workdir: The working directory to run the command in, relative to - the bot's build name directory. The WebRTC root will generally be - in build/trunk/ relative to that directory. The caller is - responsible for making sure that the slashes are flipped the right - way depending on platform, which means you can't use the default - value if the step will run on a Windows machine. - halt_build_on_failure: Stops the build dead in its tracks if this step - fails. Use for critical steps. - timeout: The timeout for the command, in seconds. - use_pty: If Pseudo-terminal shall be enabled for the command. This is - needed if stdout and stderr output shall be collected - separately, which is useful to make it possible to color-code - stderr output with red in the web interface. Some shell - commands seem to fail when Pseudo-terminal is enabled on - Linux. - env: dict of string->string that describes the environment the command - shall be excuted with on the build slave. - """ - description, description_done = self._FormatDescriptor(descriptor) - - self.addStep(MonitoredShellCommand( - build_status_oracle=self.build_status_oracle, - command=cmd, - workdir=workdir, - description=description, - descriptionDone=description_done, - flunkOnFailure=True, - haltOnFailure=halt_build_on_failure, - name='_'.join(description_done), - timeout=timeout, - usePTY=use_pty, - env=env)) - - def AddCommonFyiStep(self, cmd, descriptor='', workdir=WEBRTC_TRUNK_DIR): - """Adds a command which is merely FYI. - - This command will only produce a warning on failure and will not be - considered a failure by the build status oracle. - - The parameters here have the same semantics as their counterparts in - AddCommonStep. - """ - description, description_done = self._FormatDescriptor(descriptor) - - self.addStep(ShellCommand( - command=cmd, - workdir=workdir, - description=description, - descriptionDone=description_done, - name='_'.join(description_done), - flunkOnFailure=False, - haltOnFailure=False, - warnOnFailure=True)) - - def AddSmartCleanStep(self): - """Adds a smart clean step. - - Smart clean only cleans the whole repository if the build status oracle - thinks the last build failed. Otherwise it cleans just the build output. - """ - self.addStep(SmartClean(self.build_status_oracle, self.is_try_slave, - self.path_joiner, workdir=WEBRTC_BUILD_DIR)) - - def AddCommonTestRunStep(self, test, descriptor='', cmd=None): - """Adds a step for running a single test [must be overridden]. - - In general, failing tests should not halt the build and allow other tests - to execute. A failing test should fail, or 'flunk', the build though. - - The working directory for this command will be the WebRTC root directory - (generally build/trunk). - - Implementations of this method must add new steps through AddCommonStep - and not by calling addStep. - - Args: - test: The test binary name. The step will attempt to execute this - binary in the binary output folder, except if the cmd argument is - defined (in that case, we will run cmd instead and just use the - test name in the descriptor). - descriptor: This should either be a string or a list of strings. The - descriptor or descriptors are appended to the test name and - displayed in the waterfall. - cmd: If necessary, you can specify this argument to override the - default behavior, which is to just run the binary specified in - test without arguments. - """ - raise NotImplementedError('Must be overridden') - - def EnableTest(self, test): - """Makes a test run in the build sequence. May be overridden. - - Override to handle special cases for specific platforms, for instance if - a particular test binary requires command line arguments. - - Args: - test: The test name to enable. - """ - self.AddCommonTestRunStep(test) - - def AddGclientSyncStep(self, workdir=WEBRTC_BUILD_DIR, - always_use_latest=False): - """Helper method for invoking gclient sync. - - Args: - workdir: The name of the directory to checkout the source into. - The default is 'build' which is the base working dir of - most build slaves. - always_use_latest: Set to true to always use the latest build, - otherwise the highest revision in the changeset will - be used for sync. - """ - gclient_spec = self._ConfigureWhatToBuild() - env = self._GetEnvironmentWithDisabledDepotToolsUpdate() - - # Define how the GClient command shall be executed. - # Try 4+1=5 times, 10 seconds apart. - retry = (10, 4) - # Subversion timeout is by default 2 minutes; we allow 5 minutes. - timeout = 60 * 5 - # Removal can take a long time. Allow 15 minutes. - rm_timeout = 60 * 15 - self.addStep(chromium_step.GClient, - alwaysUseLatest=always_use_latest, - gclient_spec=gclient_spec, - workdir=workdir, - mode='update', - env=env, - retry=retry, - timeout=timeout, - rm_timeout=rm_timeout) - - def AddCommonGYPStep(self, gyp_file, gyp_params=[], descriptor='gyp'): - """Helper method for invoking GYP on WebRTC. - - GYP will generate makefiles or its equivalent in a platform-specific - manner. A failed GYP step will halt the build. - - This command will run in the WebRTC root directory - (generally build/trunk). - - Args: - gyp_file: The root GYP file to use. - gyp_params: Custom GYP parameters (same semantics as the GYP_PARAMS - environment variable). - descriptor: The descriptor to use for the step. - """ - cmd = ['./build/gyp_chromium', '--depth=.', gyp_file] - cmd += gyp_params + self.gyp_params - self.AddCommonStep(cmd=cmd, descriptor=descriptor) - - def _ConfigureWhatToBuild(self): - """Returns a string with the contents of a .gclient file.""" - 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): - """Returns a dictionary of environment variables to be used by GClient.""" - env = {} - env['DEPOT_TOOLS_UPDATE'] = '0' - return env - - def _WrapLongLines(self, string_list, max_line_length=25, wrap_character='_'): - """ Creates a list with wrapped strings for lines that are too long. - - This is done by inserting spaces to long lines with the wrap character - in. It's a simple way to make long test targets wrap nicer in the - waterfall display. - - This method should only be used for lists that are displayed in the web - interface! - - Args: - string_list: List of strings where each string represents one line. - max_line_length: Number of characters a line may have to avoid - getting wrapped. - wrap_character: The character we're looking for when inserting a - space if a string is larger than max_line_length. If no such - character is found, no space will be inserted. - Returns: - A new list of the same length as the input list, but with strings - that may contain extra spaces in them, if longer than the max length. - """ - result = [] - for line in string_list: - if len(line) > max_line_length: - index = line.rfind(wrap_character) - if index != -1: - line = line[:index] + ' ' + line[index:] - result.append(line) - return result - - def _FormatDescriptor(self, descriptor): - """Formats the descriptor. - - Args: - descriptor: A string or list describing the build step. - - Returns: - A tuple containing the formatted descriptor as well as a suitable - descriptor to use when the step is done. - """ - if type(descriptor) is str: - descriptor = [descriptor] - - # Add spaces to wrap long test names to make waterfall output more compact. - wrapped_text = self._WrapLongLines(descriptor) - return (wrapped_text + ['running'], wrapped_text) - - -class BuildStatusOracle: - """Keeps track of a particular build's state. - - The oracle uses files in the default master work directory to keep track - of whether a build has failed. It only keeps track of the most recent build - until told to forget it. - """ - - def __init__(self, builder_name): - """Creates the oracle. - - Args: - builder_name: The name of the associated builder. This name is used - in the filename on disk. This name should be unique. - """ - self.builder_name = builder_name - self.master_work_dir = DEFAULT_MASTER_WORK_DIR - - def LastBuildSucceeded(self): - failure_file_path = self._GetFailureBuildPath() - return not os.path.exists(failure_file_path) - - def ForgetLastBuild(self): - if not self.LastBuildSucceeded(): - os.remove(self._GetFailureBuildPath()) - - def SetLastBuildAsFailed(self): - open(self._GetFailureBuildPath(), 'w').close() - - def _GetFailureBuildPath(self): - return os.path.join(self.master_work_dir, self.builder_name + ".failed") - - -class MonitoredShellCommand(ShellCommand): - """Wraps a shell command and notifies the oracle if the command fails.""" - def __init__(self, build_status_oracle, **kwargs): - ShellCommand.__init__(self, **kwargs) - - self.addFactoryArguments(build_status_oracle=build_status_oracle) - self.build_status_oracle = build_status_oracle - - def finished(self, results): - if (results == builder.FAILURE or results == builder.EXCEPTION): - self.build_status_oracle.SetLastBuildAsFailed() - ShellCommand.finished(self, results) - - -class SmartClean(ShellCommand): - """Cleans the repository fully or partially depending on the build state.""" - - def __init__(self, build_status_oracle, is_try_slave, path_joiner, **kwargs): - """Args: - build_status_oracle: class that knows if the previous build failed. - is_try_slave: if the current factory is a try slave. - path_joiner: function to create paths for the current platform, given - a number of path elements in string form. - """ - ShellCommand.__init__(self, **kwargs) - - self.addFactoryArguments(build_status_oracle=build_status_oracle, - is_try_slave=is_try_slave, path_joiner=path_joiner) - self.name = "Clean" - self.haltOnFailure = True - self.build_status_oracle = build_status_oracle - self.is_try_slave = is_try_slave - self.clean_script = path_joiner(WEBRTC_BUILD_DIR, '..', '..', '..', '..', - '..', 'build_internal', 'symsrc', - 'cleanup_build.py') - - def start(self): - # Always do normal clean for try slaves, since nuking confuses the Chromium - # scripts' GClient sync step. - if self.is_try_slave or self.build_status_oracle.LastBuildSucceeded(): - self.description = ['Clean'] - cmd = 'python %s ' % self.clean_script - else: - self.build_status_oracle.ForgetLastBuild() - self.description = ['Nuke Repository', '(Previous Failed)'] - cmd = 'python %s --nuke' % self.clean_script - self.setCommand(cmd) - ShellCommand.start(self) - - -class GenerateCodeCoverage(ShellCommand): - """This custom shell command generates coverage HTML using genhtml. - - The command will dump the HTML output into coverage_dir, in a directory - whose name is generated from the build number and slave name. We will - expect that the coverage directory is somewhere under the web server root - (i.e. public html root) that corresponds to the web server URL. That is, if - we write Foo to the coverage directory we expect that directory to be - reachable from url/Foo. - """ - - def __init__(self, build_status_oracle, coverage_url, coverage_dir, - coverage_file, **kwargs): - """Prepares the coverage command. - - Args: - build_status_oracle: class that knows if the current build has failed. - coverage_url: The base URL for the serving web server we will use - when we generate the link to the coverage. This will generally - be the slave's URL (something like http://slave-hostname/). - coverage_dir: Where to write coverage HTML. - coverage_file: The LCOV file to generate the coverage from. - """ - ShellCommand.__init__(self, **kwargs) - self.addFactoryArguments(build_status_oracle=build_status_oracle, - coverage_url=coverage_url, - coverage_dir=coverage_dir, - coverage_file=coverage_file) - self.build_status_oracle = build_status_oracle - self.coverage_url = coverage_url - self.description = ['Coverage Report'] - self.name = 'LCOV (Report)' - self.warnOnFailure = True - self.flunkOnFailure = False - output_dir = os.path.join(coverage_dir, - '%(buildername)s_%(buildnumber)s') - 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): - if self.build_status_oracle.LastBuildSucceeded(): - output_url = urlparse.urljoin(self.coverage_url, '%s_%s' - % (self.getProperty('buildername'), - self.getProperty('buildnumber'))) - self.addURL('click here', output_url) - - def start(self): - if not self.build_status_oracle.LastBuildSucceeded(): - self.description = ['Step skipped due to test failure.'] - self.setCommand(['false']) # Dummy command that fails. - ShellCommand.start(self) - - -class WebRTCAndroidFactory(WebRTCFactory): - """Sets up the Android build.""" - - def __init__(self, build_status_oracle, is_try_slave=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) - - def EnableBuild(self, product='toro'): - prefix = 'rm -rf out/target/product/%s/obj/' % product - cleanup_list = [ - 'rm -rf external/webrtc', - prefix + 'STATIC_LIBRARIES/libwebrtc_*', - prefix + 'SHARE_LIBRARIES/libwebrtc_*', - prefix + 'EXECUTABLES/webrtc_*' - ] - cmd = ' ; '.join(cleanup_list) - self.AddCommonStep(cmd, descriptor='cleanup') - self.AddGclientSyncStep(workdir='build/trunk/external/webrtc') - # Work around lack of support for checking out into another dir than the - # last dir of the Subversion URL. - self.AddCommonStep(cmd='mv external/webrtc/trunk/* external/webrtc', - use_pty=False, descriptor='Prepare WebRTC source') - cmd = ('source build/envsetup.sh && lunch full_%s-eng ' - '&& mmm external/webrtc showcommands' % product) - self.AddCommonStep(cmd, descriptor='build') - - -class WebRTCAndroidNDKFactory(WebRTCFactory): - """Sets up the Android NDK build.""" - - def __init__(self, build_status_oracle, is_try_slave=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) - - def EnableBuild(self): - self.AddSmartCleanStep() - self.AddGclientSyncStep() - self._AddAndroidStep(cmd='gclient runhooks', - descriptor='gen_android_makefiles') - self._AddAndroidStep(cmd='make -j100', descriptor='build') - - 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 WebRTCLinuxFactory(WebRTCFactory): - """Sets up the Linux build. - - This factory is quite configurable and can run a variety of builds. - """ - - def __init__(self, build_status_oracle, is_try_slave=False, - run_with_memcheck=False, run_with_tsan=False, - run_with_asan=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.run_with_memcheck = run_with_memcheck - self.run_with_tsan = run_with_tsan - self.run_with_asan = run_with_asan - self.compile_for_memory_tooling = False - - def EnableCoverage(self, coverage_url, coverage_dir=DEFAULT_COVERAGE_DIR): - """Enables coverage measurements using LCOV/GCOV. - - This method must be called before enabling build. - - Args: - coverage_url: See the GenerateCodeCoverage command's contract for - this argument. - coverage_dir: See the GenerateCodeCoverage command's contract for - this argument. - """ - assert self.build_enabled is False - - self.coverage_enabled = True - self.coverage_url = coverage_url - self.coverage_dir = coverage_dir - - def EnableBuild(self, release=False, build32=False, chrome_os=False, - clang=False, compile_for_memory_tooling=False): - if build32: - self.gyp_params.append('-Dtarget_arch=ia32') - - self.build_enabled = True - self.compile_for_memory_tooling = compile_for_memory_tooling - self.release = release - - self.AddSmartCleanStep() - self.AddGclientSyncStep() - - # Valgrind bots need special GYP defines to enable memory profiling - # friendly compilation. - if self.compile_for_memory_tooling: - for gyp_define in MEMORY_TOOLS_GYP_DEFINES: - self.gyp_params.append('-D' + gyp_define) - - if self.run_with_asan: - # ASAN requires Clang compilation and we enforce Release mode since - # that's what Chromium recommends. - assert clang - assert release - self.gyp_params.append('-Dasan=1') - self.gyp_params.append('-Dlinux_use_tcmalloc=0') - self.gyp_params.append('-Drelease_extra_cflags="-g -O1 ' - '-fno-inline-functions -fno-inline"') - if chrome_os: - self.gyp_params.append('-Dchromeos=1') - - if clang: - self.gyp_params.append('-Dclang=1') - - if self.coverage_enabled: - self.gyp_params.append('-Dcoverage=1') - self.AddCommonGYPStep('webrtc.gyp', descriptor='CommonGYP') - - if clang: - self.AddCommonStep(['trunk/tools/clang/scripts/update.sh'], - workdir=WEBRTC_BUILD_DIR, - descriptor='Update_Clang') - - if self.release: - self.AddCommonMakeStep('all', make_extra='BUILDTYPE=Release') - else: - self.AddCommonMakeStep('all') - - def AddCommonTestRunStep(self, test, extra_text=None, cmd=None): - descriptor = [test, extra_text] if extra_text else [test] - if cmd is None: - test_folder = 'Release' if self.release else 'Debug' - cmd = ['out/%s/%s' % (test_folder, test)] - if self.run_with_memcheck: - cmd = MEMCHECK_CMD + cmd - if self.run_with_tsan: - cmd = TSAN_CMD + cmd - if self.run_with_asan: - cmd = ASAN_CMD + cmd - self.AddCommonStep(cmd, descriptor=descriptor, halt_build_on_failure=False) - - def AddCommonMakeStep(self, target, extra_text=None, make_extra=None): - descriptor = ['make ' + target, extra_text] if extra_text else ['make ' + - target] - cmd = ['make', target, '-j100'] - if make_extra: - cmd.append(make_extra) - - env = {} - if self.run_with_asan: - # Override the Clang compiler with the prebuilt ASAN executables. - # It seems like CC and CXX must contain full paths and since there's no - # way to evaluate subcommands on the slaves, this hardcoding is the only - # way for now. - asan_bin = ('/b/build/slave/linux-asan/build/trunk/third_party/asan/' - 'asan_clang_Linux/bin') - env = {'CC': '%s/clang' % asan_bin, - 'CXX': '%s/clang++ ' % asan_bin} - self.AddCommonStep(cmd=cmd, descriptor=descriptor, env=env) - - def AddStepsToEstablishCoverageBaseline(self): - self.AddCommonFyiStep(['lcov', '--directory', '.', '--capture', '-b', - '.', '--initial', - '--output-file', 'webrtc_base.info'], - descriptor='LCOV (Baseline Capture)') - self.AddCommonFyiStep(['lcov', '--extract', 'webrtc_base.info', '*/src/*', - '--output', 'filtered.info'], - descriptor='LCOV (Baseline Extract)') - self.AddCommonFyiStep(['lcov', '--remove', 'filtered.info', - '*/usr/include/*', '/third*', '/testing/*', - '*/test/*', '*_unittest.*', '*/mock/*', '--output', - 'webrtc_base_filtered_final.info'], - descriptor='LCOV (Baseline Filter)') - - def AddStepsToComputeCoverage(self): - """Enable coverage data.""" - - # Delete all third-party .gcda files to save time and work around a bug - # in lcov which tends to hang when capturing on libjpgturbo. - clean_script = PosixPathJoin('tools', 'continuous_build', 'build_internal', - 'scripts', 'clean_third_party_gcda.sh') - self.AddCommonFyiStep([clean_script], - descriptor='LCOV (Delete 3rd party)') - self.AddCommonFyiStep(['lcov', '--directory', '.', '--capture', '-b', - '.', '--output-file', 'webrtc.info'], - descriptor='LCOV (Capture)') - self.AddCommonFyiStep(['lcov', '--extract', 'webrtc.info', '*/src/*', - '--output', 'test.info'], - descriptor='LCOV (Extract)') - self.AddCommonFyiStep(['lcov', '--remove', 'test.info', '*/usr/include/*', - '/third*', '/testing/*', '*/test/*', '*_unittest.*', - '*/mock/*', '--output', - 'final.info'], - descriptor='LCOV (Filter)') - self.AddCommonFyiStep(['lcov', '-a', - 'webrtc_base_filtered_final.info', '-a', - 'final.info', '-o', 'final.info'], - descriptor='LCOV (Merge)') - - self.addStep( - GenerateCodeCoverage(build_status_oracle=self.build_status_oracle, - coverage_url=self.coverage_url, - coverage_dir=self.coverage_dir, - coverage_file='final.info', - workdir=WEBRTC_TRUNK_DIR)) - - def EnableTests(self, tests): - if self.coverage_enabled: - self.AddStepsToEstablishCoverageBaseline() - - WebRTCFactory.EnableTests(self, tests) - - if self.coverage_enabled: - self.AddStepsToComputeCoverage() - - def EnableTest(self, test): - """Adds a step for running a test on Linux. - - In general, this method will interpret the name as the name of a binary - in the default build output directory, except for a few special cases - which require custom command lines. - - Args: - test: the test name as a string. - """ - if test == 'audioproc_unittest': - self.AddCommonTestRunStep(test) - self.AddCommonGYPStep('webrtc.gyp', gyp_params=['-Dprefer_fixed_point=1'], - descriptor='GYP fixed point') - self.AddCommonMakeStep(test, extra_text='(fixed point)') - self.AddCommonTestRunStep(test, extra_text='(fixed point)') - elif test == 'vie_auto_test': - binary = 'out/Debug/vie_auto_test' - filter = '-ViEVideoVerificationTest.RunsFullStack*:ViERtpFuzzTest*' - cmd = [binary, '--automated', '--gtest_filter=%s' % filter, - ('--capture_test_ensure_resolution_alignment' - '_in_capture_device=false')] - cmd = MakeCommandToRunTestInXvfb(cmd) - self.AddCommonTestRunStep(test=test, cmd=cmd) - - # Set up the fuzz tests as a separate step under memcheck. - # If this test is run we require that we have compiled for memory tools. - # We need to use some special black magic here: -- is replaced with ++ - # when calling the webrtc_tests.sh script since we want those parameters - # to not be caught by webrtc_tests.sh's options parser, but be passed on - # to vie_auto_test. This is a part of webrtc_tests.sh's contract. - # This test is considered to be a FYI test so we will only warn here. - assert self.compile_for_memory_tooling - fuzz_cmd = MEMCHECK_CMD + [binary, '++automated', - '++gtest_filter=ViERtpFuzzTest*'] - fuzz_cmd = MakeCommandToRunTestInXvfb(fuzz_cmd) - self.AddCommonFyiStep(cmd=fuzz_cmd, descriptor=test + ' (fuzz tests)') - elif test == 'video_render_module_test': - cmd = MakeCommandToRunTestInXvfb(['out/Debug/video_render_module_test']) - self.AddCommonTestRunStep(test=test, cmd=cmd) - elif test == 'voe_auto_test': - self._AddStartPulseAudioStep() - # Set up the regular test run. - binary = 'out/Debug/voe_auto_test' - cmd = [binary, '--automated', '--gtest_filter=-RtpFuzzTest.*'] - self.AddCommonTestRunStep(test=test, cmd=cmd) - - # Similarly to vie_auto_test, set up voe_auto_test fuzz tests. - assert self.compile_for_memory_tooling - cmd = MEMCHECK_CMD + [binary, ' ++automated', - '++gtest_filter=RtpFuzzTest*'] - self.AddCommonFyiStep(cmd=cmd, descriptor='voe_auto_test (fuzz tests)') - elif test == 'audio_e2e_test': - self._AddStartPulseAudioStep() - output_file = '/tmp/e2e_audio_out.pcm' - cmd = ('python tools/e2e_quality/audio/run_audio_test.py ' - '--input=/home/webrtc-cb/data/e2e_audio_in.pcm ' - '--output=%s --codec=L16 ' - '--compare="/home/webrtc-cb/bin/compare-audio +16000 +wb" ' - '--regexp="(\d\.\d{3})"' % output_file) - self.AddCommonStep(cmd, descriptor=test) - # Ensure anyone can read the output file, in case of problems. - cmd = 'chmod 644 %s' % output_file - self.AddCommonStep(cmd, descriptor='Make output file readable') - # TODO(andrew): how do we get the metric output to the dashboard? - else: - self.AddCommonTestRunStep(test) - - def _AddStartPulseAudioStep(self): - # Ensure a PulseAudio daemon is running. Options: - # --start starts the daemon if it is not running - # --daemonize daemonize after startup - # --high-priority succeeds due to changes in /etc/security/limits.conf. - # -vvvv gives us fully verbose logs. - cmd = ('/usr/bin/pulseaudio --start --daemonize --high-priority -vvvv') - self.AddCommonStep(cmd=cmd, descriptor='Start PulseAudio') - -class WebRTCMacFactory(WebRTCFactory): - """Sets up the Mac build, both for make and xcode.""" - - def __init__(self, build_status_oracle, is_try_slave=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_type = 'both' - self.allowed_build_types = ['both', 'xcode', 'make'] - - def EnableBuild(self, build_type='both', release=False): - self.release = release - - if build_type not in self.allowed_build_types: - print '*** INCORRECT BUILD TYPE (%s)!!! ***' % build_type - sys.exit(0) - else: - self.build_type = build_type - self.AddSmartCleanStep() - self.AddGclientSyncStep() - - if self.build_type == 'make' or self.build_type == 'both': - self.AddCommonGYPStep('webrtc.gyp', gyp_params=['-f', 'make'], - descriptor='EnableMake') - self.AddCommonMakeStep('all') - - def EnableTest(self, test): - """Adds a step for running a test on Mac. - - In general, this method will interpret the name as the name of a binary - in the default build output directory, except for a few special cases - which require custom command lines. - - Args: - test: the test name as a string. - """ - if test == 'vie_auto_test': - # Start ManyCam before the test starts: - self.AddCommonStep(cmd=['open', '/Applications/ManyCam/ManyCam.app'], - descriptor=['Starting ManyCam']) - # TODO(phoglund): Enable the full stack test once it is completed and - # nonflaky. - cmd = ( - 'out/Debug/vie_auto_test --automated --gtest_filter="' - 'ViEStandardIntegrationTest.*:' - 'ViEVideoVerificationTest.*:' - '-ViEVideoVerificationTest.RunsFullStackWithoutErrors:' - 'ViEVideoVerificationTest.RunsFileTestWithoutErrors:' # bug 524 - 'ViEStandardIntegrationTest.RunsRtpRtcpTestWithoutErrors" ' # bug 477 - '--capture_test_ensure_resolution_alignment_in_capture_device=false') - self.AddCommonTestRunStep(test=test, cmd=cmd) - self.AddCommonStep(cmd=['killall', 'ManyCam'], - descriptor=['Stopping ManyCam']) - elif test == 'voe_auto_test': - cmd = ('out/Debug/voe_auto_test --automated ' - # Disabled test until bug 527 is resolved. - '--gtest_filter=-VolumeTest.SetVolumeBeforePlayoutWorks') - self.AddCommonTestRunStep(test=test, cmd=cmd) - else: - self.AddCommonTestRunStep(test) - - def AddCommonTestRunStep(self, test, extra_text=None, cmd=None): - descriptor = [test, extra_text] if extra_text else [test] - if cmd is None: - out_path = 'xcodebuild' if self.build_type == 'xcode' else 'out' - test_folder = 'Release' if self.release else 'Debug' - cmd = ['%s/%s/%s' % (out_path, test_folder, test)] - - if self.build_type == 'xcode' or self.build_type == 'both': - self.AddCommonStep(cmd, descriptor=descriptor + ['(xcode)'], - halt_build_on_failure=False) - # Execute test only for 'make' build type. - # If 'both' is enabled we'll only execute the 'xcode' built ones. - if self.build_type == 'make': - self.AddCommonStep(cmd, descriptor=descriptor + ['(make)'], - halt_build_on_failure=False) - - def AddCommonMakeStep(self, target, extra_text=None, make_extra=None): - descriptor = [target, extra_text] if extra_text else [target] - if self.build_type == 'make' or self.build_type == 'both': - cmd = ['make', target, '-j100'] - if make_extra is not None: - cmd.append(make_extra) - if self.release: - cmd.append('BUILDTYPE=Release') - self.AddCommonStep(cmd, descriptor=descriptor + ['(make)']) - if self.build_type == 'xcode' or self.build_type == 'both': - configuration = 'Release' if self.release else 'Debug' - cmd = ['xcodebuild', '-project', 'webrtc.xcodeproj', '-configuration', - configuration, '-target', 'All'] - self.AddCommonStep(cmd, descriptor=descriptor + ['(xcode)']) - -class WebRTCWinFactory(WebRTCFactory): - """Sets up the Windows build. - - Allows building with Debug, Release or both in sequence. - """ - - # Must provide full path to the command since we cannot add custom paths to - # the PATH environment variable when using Chromium buildbot startup scripts. - BUILD_CMD = r'C:\Windows\Microsoft.NET\Framework\v3.5\msbuild.exe' - VCAM_PATH = r'C:\Program Files (x86)\e2eSoft\VCam\VCamManager.exe' - - def __init__(self, build_status_oracle, is_try_slave=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.configuration = 'Debug' - self.platform = 'x64' - self.allowed_platforms = ['x64', 'Win32'] - self.allowed_configurations = ['Debug', 'Release', 'both'] - self.path_joiner = WindowsPathJoin - - def AddCommonStep(self, cmd, descriptor='', workdir=WEBRTC_TRUNK_DIR, - halt_build_on_failure=True): - workdir = workdir.replace('/', '\\') - WebRTCFactory.AddCommonStep(self, cmd, descriptor, workdir, - halt_build_on_failure) - - def EnableBuild(self, platform='Win32', configuration='Debug'): - if platform not in self.allowed_platforms: - raise UnsupportedConfigurationError('Platform %s is not supported.' - % platform) - if configuration not in self.allowed_configurations: - raise UnsupportedConfigurationError('Configuration %s is not supported.' - % configuration) - self.platform = platform - self.configuration = configuration - - # List possible interfering processes here to make it easier to debug what - # processes can interfere with us. - cmd = '%WINDIR%\\system32\\tasklist || set ERRORLEVEL=0' - self.AddCommonStep(cmd, 'list_processes') - - # Since Windows is very picky about locking files, make sure to kill - # any interfering processes. Feel free to add more process kill steps if - # necessary. - self.KillProcesses('svn.exe') - - # TODO(kjellander): Enable for normal slaves too when all are moved over to - # the new slave architecture. - if self.is_try_slave: - # Run the Chromium kill process script. It requires the handle.exe to be - # copied into third_party/psutils in order to not fail. - # Download from: - # http://technet.microsoft.com/en-us/sysinternals/bb896655.aspx - # 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). Must reference outside the checkout since it may - # have been wiped completely in the previous build. - 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.AddGclientSyncStep() - - if self.configuration == 'Debug' or self.configuration == 'both': - cmd = [WebRTCWinFactory.BUILD_CMD, 'webrtc.sln', '/t:Clean', - '/p:Configuration=Debug;Platform=%s' % (self.platform)] - self.AddCommonStep(cmd, descriptor='Build(Clean)') - cmd = [WebRTCWinFactory.BUILD_CMD, 'webrtc.sln', - '/p:Configuration=Debug;Platform=%s' % (self.platform)] - self.AddCommonStep(cmd, descriptor='Build(Debug)') - if self.configuration == 'Release' or self.configuration == 'both': - cmd = [WebRTCWinFactory.BUILD_CMD, 'webrtc.sln', '/t:Clean', - '/p:Configuration=Release;Platform=%s' % (self.platform)] - self.AddCommonStep(cmd, descriptor='Build(Clean)') - cmd = [WebRTCWinFactory.BUILD_CMD, 'webrtc.sln', - '/p:Configuration=Release;Platform=%s' % (self.platform)] - self.AddCommonStep(cmd, descriptor='Build(Release)') - - def KillProcesses(self, process_name, descriptor=None): - """Kills all running processes with the specified name. - - Make sure the name contains .exe at the end. If no processes are found, this - method will execute silently doing nothing. - """ - # Setting ERRORLEVEL is to make sure the command always exits with exit code - # 0, since we want the step to succeed even when there's nothing to kill. - cmd = ('%WINDIR%\\system32\\taskkill.exe /f /im ' + process_name + - ' || set ERRORLEVEL=0') - if not descriptor: - descriptor = 'kill %s' % process_name - self.AddCommonStep(cmd, descriptor) - - def EnableTest(self, test): - """Adds a step for running a test on Windows. - - In general, this method will interpret the name as the name of a binary - in the default build output directory, except for a few special cases - which require custom command lines. - - Args: - test: the test name as a string. - """ - if test == 'vie_auto_test': - # Start VCam before the test starts: - self.AddCommonStep(cmd=['cmd', '-c', WebRTCWinFactory.VCAM_PATH], - descriptor=['Starting VCam']) - # TODO(phoglund): Enable the full stack test once it is completed and - # nonflaky. - cmd = ( - 'build\\Debug\\vie_auto_test.exe --automated --gtest_filter="' - 'ViEStandardIntegrationTest.*:' - 'ViEVideoVerificationTest.*:' - '-ViEVideoVerificationTest.RunsFullStackWithoutErrors:' - 'ViEStandardIntegrationTest.RunsRtpRtcpTestWithoutErrors" ' # bug 477 - '--capture_test_ensure_resolution_alignment_in_capture_device=false') - self.AddCommonTestRunStep(test=test, cmd=cmd) - self.KillProcesses('VCamManager.exe', 'Stop VCam') - elif test == 'voe_auto_test': - cmd = 'build\\Debug\\voe_auto_test.exe --automated' - self.AddCommonTestRunStep(test=test, cmd=cmd) - else: - self.AddCommonTestRunStep(test) - - def AddCommonTestRunStep(self, test, cmd=None): - descriptor = [test] - if self.configuration == 'Debug' or self.configuration == 'both': - if cmd is None: - cmd = ['build\Debug\%s.exe' % test] - self.AddCommonStep(cmd, descriptor=descriptor, - halt_build_on_failure=False) - if self.configuration == 'Release' or self.configuration == 'both': - if cmd is None: - cmd = ['build\Release\%s.exe' % test] - self.AddCommonStep(cmd, descriptor=descriptor, - halt_build_on_failure=False) - - -# Utility functions - -def PosixPathJoin(*args): - return posixpath.normpath(posixpath.join(*args)) - -def WindowsPathJoin(*args): - return ntpath.normpath(ntpath.join(*args)) - -def MakeCommandToRunTestInXvfb(cmd): - assert type(cmd) is list - return ('xvfb-run --server-args="-screen 0 800x600x24 -extension Composite" ' - '%s' % ' '.join(cmd)) - - -class UnsupportedConfigurationError(Exception): - pass - - -def GetEnabledTests(test_dict, platform): - """Returns a list of enabled test names for the provided platform. - - Args: - test_dict: Dictionary mapping test names to tuples representing if the - test shall be enabled on each platform. Each tuple contains one - boolean for each platform. The platforms are in the order specified - by SUPPORTED_PLATFORMS. - platform: The platform we're looking to get the tests for. - - Returns: - A list of test names, sorted alphabetically. - - Raises: - UnsupportedConfigurationError: if the platform supplied is not supported. - """ - if platform not in SUPPORTED_PLATFORMS: - raise UnsupportedConfigurationError('Platform %s is not supported.' - % platform) - result = [] - platform_index = SUPPORTED_PLATFORMS.index(platform) - for test_name, enabled_platforms in test_dict.iteritems(): - if enabled_platforms[platform_index]: - result.append(test_name) - result.sort() - return result 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 deleted file mode 100644 index 4d73a614f..000000000 --- a/tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils_test.py +++ /dev/null @@ -1,74 +0,0 @@ -#!/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. - -"""Unit tests for helper functions in utils.py.""" - -import unittest - -from webrtc_buildbot import utils - - -class Test(unittest.TestCase): - - def testGetEnabledTests(self): - tests = { - # Name Linux Mac Windows - 'test_1': (True, True, False), - 'test_2': (True, False, False), - } - result = utils.GetEnabledTests(tests, 'Linux') - self.assertEqual(2, len(result)) - self.assertEqual('test_1', result[0]) - self.assertEqual('test_2', result[1]) - - result = utils.GetEnabledTests(tests, 'Mac') - self.assertEqual(1, len(result)) - self.assertEqual('test_1', result[0]) - - result = utils.GetEnabledTests(tests, 'Windows') - self.assertEqual(0, len(result)) - - self.assertRaises(utils.UnsupportedPlatformError, - utils.GetEnabledTests, tests, 'BeOS') - - def testEmptyListExitQuietly(self): - factory = utils.WebRTCFactory() - self.assertEqual([], factory._WrapLongLines([])) - - def testShortLinesShallNotWrap(self): - factory = utils.WebRTCFactory() - self.assertEqual(['a'], factory._WrapLongLines(['a'])) - - string_25_len = '12345678901234567890123_5' - result = factory._WrapLongLines([string_25_len, string_25_len]) - self.assertEqual(string_25_len, result[0]) - self.assertEqual(string_25_len, result[1]) - - def testLinesWithMoreThan25CharactersWithNoWrapCharacterIsUnchanged(self): - factory = utils.WebRTCFactory() - string_26_len = '12345678901234567890123456' - result = factory._WrapLongLines([string_26_len, string_26_len]) - self.assertEqual(string_26_len, result[0]) - self.assertEqual(string_26_len, result[1]) - - def testLinesWithMoreThan25CharactersShallWrapOnWrapCharacter(self): - factory = utils.WebRTCFactory() - string_26_len = '123456789012345678901234_6' - test_list = [string_26_len, string_26_len] - result = factory._WrapLongLines(test_list) - expected_result = '123456789012345678901234 _6' - self.assertEqual(expected_result, result[0]) - self.assertEqual(expected_result, result[1]) - # Verify the original test_list was not modified too. - self.assertEqual(string_26_len, test_list[0]) - self.assertEqual(string_26_len, test_list[1]) - - -if __name__ == '__main__': - unittest.main() 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 deleted file mode 100644 index c543e981b..000000000 --- a/tools/continuous_build/build_internal/scripts/webrtc_buildbot/webrtc_chromium_factory.py +++ /dev/null @@ -1,57 +0,0 @@ -#!/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. - -"""Utility class to build Chromium with the latest WebRTC. - -Based on chromium_factory.py and adds WebRTC-specific custom_deps.""" - -from master.factory import chromium_factory -from webrtc_buildbot import webrtc_commands - - -class ChromiumWebRTCFactory(chromium_factory.ChromiumFactory): - - # gclient additional custom deps - CUSTOM_DEPS_WEBRTC_LATEST = ('src/third_party/webrtc', - 'http://webrtc.googlecode.com/svn/stable/src') - - def ChromiumWebRTCLatestFactory(self, target='Release', clobber=False, - tests=None, mode=None, - slave_type='BuilderTester', options=None, - compile_timeout=1200, build_url=None, - project=None, factory_properties=None, - custom_deps_list=[]): - custom_deps_list.append(self.CUSTOM_DEPS_WEBRTC_LATEST) - self._solutions[0].custom_deps_list = custom_deps_list - factory = self.ChromiumFactory(target, clobber, tests, mode, slave_type, - options, compile_timeout, build_url, project, - factory_properties) - webrtc_cmd_obj = webrtc_commands.WebRTCCommands(factory, target, - self._build_dir, - self._target_platform) - webrtc_cmd_obj.AddCompilePeerConnectionServerStep() - webrtc_cmd_obj.AddPyAutoTests(factory_properties) - return factory - - def ChromiumWebRTCBloatFactory(self, target='Release', clobber=False, - tests=None, mode=None, - slave_type='BuilderTester', options=None, - compile_timeout=1200, build_url=None, - project=None, factory_properties=None, - custom_deps_list=[]): - custom_deps_list.append(self.CUSTOM_DEPS_WEBRTC_LATEST) - self._solutions[0].custom_deps_list = custom_deps_list - factory = self.ChromiumFactory(target, clobber, tests, mode, slave_type, - options, compile_timeout, build_url, project, - factory_properties) - webrtc_cmd_obj = webrtc_commands.WebRTCCommands(factory, target, - self._build_dir, - self._target_platform) - webrtc_cmd_obj.AddBloatCalculationStep(factory_properties) - return factory 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 deleted file mode 100644 index e676f88cb..000000000 --- a/tools/continuous_build/build_internal/scripts/webrtc_buildbot/webrtc_commands.py +++ /dev/null @@ -1,145 +0,0 @@ -#!/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. - -"""Set of utilities to add commands to a buildbot factory. - -This is based on chromium_commands.py and adds WebRTC-specific commands.""" - -from buildbot.steps.shell import ShellCommand -from master.factory import chromium_commands -from master.log_parser import cl_command -from webrtc_buildbot import utils - -DEFAULT_BLOAT_DIR = '/var/www/bloat' -DEFAULT_BLOAT_URL = 'http://webrtc-chrome.lul/bloat/webrtc_bloat.html' - - -class PlatformNotSupportedException(Exception): pass -class MissingGypDefineException(Exception): pass - - -class WebRTCCommands(chromium_commands.ChromiumCommands): - """Encapsulates methods to add WebRTC commands to a buildbot factory.""" - - def __init__(self, factory=None, target=None, build_dir=None, - target_platform=None, target_arch=None): - chromium_commands.ChromiumCommands.__init__(self, factory, target, - build_dir, target_platform) - - self._arch = target_arch - self._factory = factory - - def AddPyAutoTests(self, factory_properties=None, timeout=1200): - """Adds WebRTC PyAuto test steps.""" - # The WEBRTC group lists the PyAuto tests we have written for WebRTC. - # It's located at: src/chrome/test/functional/PYAUTO_TESTS - self.AddPyAutoFunctionalTest('WebRTC functional PyAuto test', - suite='WEBRTC', timeout=timeout, perf=False, - factory_properties=factory_properties) - - def AddCompilePeerConnectionServerStep(self): - # Add platform dependent peerconnection_server compilation: - solution = None - options = None - if self._target_platform.startswith('linux'): - options=['peerconnection_server'] - elif self._target_platform.startswith('win'): - solution=r'..\third_party\libjingle\libjingle.sln;peerconnection_server' - elif self._target_platform is 'mac': - options=['--', '-project', '../third_party/libjingle/libjingle.xcodeproj', - '-target', 'peerconnection_server'], - else: - raise PlatformNotSupportedException( - 'Platform "%s" is not currently supported.' % self._target_platform) - self.AddCompileStep(solution=solution, - options=options, - description='compiling peerconnection_server', - descriptionDone='compile peerconnection_server') - - def AddBloatCalculationStep(self, factory_properties): - """Runs a bloat calculation, which will yield a size breakdown for Chrome. - - If running in Release mode, you should also run with profiling to get the - symbols right. Running this on Debug mode will work but it will probably - take hours. - - This step command is only supported on Linux platforms. - """ - if self._target is 'Release': - factory = factory_properties - if not (factory.has_key('gclient_env') and - factory['gclient_env'].has_key('GYP_DEFINES') and - factory['gclient_env']['GYP_DEFINES'].find('profiling=1') != -1): - raise MissingGypDefineException( - 'You must add a dictionary to the gclient_env factory property' - 'containing a key GYP_DEFINES and a value containing profiling=1.') - - bloat_path = self.PathJoin(utils.WEBRTC_BUILD_DIR, '..', '..', '..', '..', - '..', '..', 'build_internal', 'symsrc', - 'calculate_bloat.py') - output_filename = self.PathJoin(DEFAULT_BLOAT_DIR, 'bloat_latest.json') - chrome_binary = self.PathJoin('out', self._target, 'chrome') - cmd = [bloat_path, '--binary', chrome_binary, '--source-path', '.', - '--output-file', output_filename] - self._factory.addStep(ShellCommandWithUrl(command=cmd, - url=DEFAULT_BLOAT_URL, - description='calculate bloat', - warnOnFailure=True, - workdir='build/src', - timeout=7200)) - - def AddTestStep(self, command_class, test_name, test_command, - test_description='', timeout=10*60, max_time=8*60*60, - workdir=None, env=None, locks=None, halt_on_failure=False, - do_step_if=True): - """This override is a hack to get the step to warn instead of failing.""" - assert timeout <= max_time - do_step_if = do_step_if or self.TestStepFilter - self._factory.addStep( - command_class, - name=test_name, - timeout=timeout, - maxTime=max_time, - doStepIf=do_step_if, - workdir=workdir, - env=env, - description='running %s%s' % (test_name, test_description), - descriptionDone='%s%s' % (test_name, test_description), - haltOnFailure=halt_on_failure, - warnOnFailure=True, - flunkOnFailure=False, - command=test_command) - - - def AddCompileStep(self, solution, clobber=False, description='compiling', - descriptionDone='compile', timeout=600, mode=None, - options=None): - """This override is a hack to get the step to warn instead of failing.""" - self._factory.addStep(cl_command.CLCommand, - enable_warnings=0, - timeout=timeout, - description=description, - descriptionDone=descriptionDone, - warnOnFailure=True, - flunkOnFailure=False, - command=self.GetBuildCommand(clobber, - solution, - mode, - options)) - - -class ShellCommandWithUrl(ShellCommand): - """A regular shell command which posts a link when it's done.""" - def __init__(self, url, **kwargs): - ShellCommand.__init__(self, **kwargs) - self.addFactoryArguments(url=url) - self.url = url - - def createSummary(self, log): - self.addURL('click here', self.url) diff --git a/tools/continuous_build/build_internal/site_config/config_private.py b/tools/continuous_build/build_internal/site_config/config_private.py deleted file mode 100644 index 1df5103dc..000000000 --- a/tools/continuous_build/build_internal/site_config/config_private.py +++ /dev/null @@ -1,164 +0,0 @@ -#!/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. - -# This file is based on the Chromium config.py located at -# /trunk/tools/build/site_config/config_default.py of the Chromium tools. - -import socket - -class Master(object): - # Repository URLs used by the SVNPoller and 'gclient config'. - webrtc_root_url = 'http://webrtc.googlecode.com/svn' - - # Leave Chromium's server URL intact, since we also build Chrome. - server_url = 'http://src.chromium.org' - git_server_url = 'http://src.chromium.org/git' - repo_root = '/svn' - - # External repos. - googlecode_url = 'http://%s.googlecode.com/svn' - sourceforge_url = 'http://%(repo)s.svn.sourceforge.net/svnroot/%(repo)s' - - # Directly fetches from anonymous webkit svn server. - webkit_root_url = 'http://svn.webkit.org/repository/webkit' - nacl_trunk_url = 'http://src.chromium.org/native_client/trunk' - - llvm_url = 'http://llvm.org/svn/llvm-project' - - # Other non-redistributable repositories. - repo_root_internal = None - trunk_internal_url = None - trunk_internal_url_src = None - gears_url_internal = None - o3d_url_internal = None - nacl_trunk_url_internal = None - nacl_url_internal = None - - syzygy_internal_url = None - - # Other non-redistributable repositories. - repo_root_internal = None - trunk_internal_url = None - trunk_internal_url_src = None - - # Please change this accordingly. - master_domain = 'webrtc.org' - permitted_domains = ('webrtc.org',) - - # Your smtp server to enable mail notifications. - smtp = 'smtp' - - # By default, bot_password will be filled in by config.GetBotPassword(); - # if the private config wants to override this, it can do so. - bot_password = None - - class _Base(object): - # Master address. You should probably copy this file in another svn repo - # so you can override this value on both the slaves and the master. - master_host = 'webrtc-cb-linux-master.cbf.corp.google.com' - # If set to True, the master will do nasty stuff like closing the tree, - # sending emails or other similar behaviors. Don't change this value unless - # you modified the other settings extensively. - is_production_host = socket.getfqdn() == master_host - # Additional email addresses to send gatekeeper (automatic tree closage) - # notifications. Unnecessary for experimental masters and try servers. - tree_closing_notification_recipients = [] - # 'from:' field for emails sent from the server. - from_address = 'webrtc-cb-watchlist@google.com' - # Code review site to upload results. You should setup your own Rietveld - # instance with the code at - # http://code.google.com/p/rietveld/source/browse/#svn/branches/chromium - # You can host your own private rietveld instance on Django, see - # http://code.google.com/p/google-app-engine-django and - # http://code.google.com/appengine/articles/pure_django.html - code_review_site = 'https://webrtc-codereview.appspot.com/status_listener' - - # For the following values, they are used only if non-0. Do not set them - # here, set them in the actual master configuration class. - - # Used for the waterfall URL and the waterfall's WebStatus object. - master_port = 0 - # Which port slaves use to connect to the master. - slave_port = 0 - # The alternate read-only page. Optional. - master_port_alt = 0 - # HTTP port for try jobs. - try_job_port = 0 - - ## Chrome related - - class _ChromiumBase(_Base): - # Tree status urls. You should fork the code from tools/chromium-status/ and - # setup your own AppEngine instance (or use directly Django to create a - # local instance). - # Defaulting urls that are used to POST data to 'localhost' so a local dev - # server can be used for testing and to make sure nobody updates the tree - # status by error! - # - # This url is used for HttpStatusPush: - base_app_url = 'http://localhost:8080' - # HTTP url that should return 0 or 1, depending if the tree is open or - # closed. It is also used as POST to update the tree status. - tree_status_url = base_app_url + '/status' - # Used by LKGR to POST data. - store_revisions_url = base_app_url + '/revisions' - # Used by the try server to sync to the last known good revision: - last_good_url = 'http://webrtc-dashboard.appspot.com/lkgr' - - class WebRTC(_ChromiumBase): - # Used by the waterfall display. - project_name = 'WebRTC' - master_port = 8010 - slave_port = 9112 - master_port_alt = 9014 - - class WebRTCMemory(_ChromiumBase): - project_name = 'WebRTC Memory' - master_port = 9014 - slave_port = 9119 - master_port_alt = 9047 - - class WebRTCPerf(_ChromiumBase): - project_name = 'WebRTC Perf' - master_port = 9050 - slave_port = 9151 - master_port_alt = 9052 - - class TryServer(_ChromiumBase): - project_name = 'WebRTC Try Server' - master_port = 9010 - slave_port = 9113 - master_port_alt = 9015 - try_job_port = 9018 - # The svn repository to poll to grab try patches. For chrome, we use a - # 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 - # entirely, typically because they're not built for this distribution. - exes_to_skip_entirely = [] - # Web server base path. - www_dir_base = "\\\\" + archive_host + "\\www\\" - - @staticmethod - def Internal(): - pass - - -class Distributed(object): - """Not much to describe.""" diff --git a/tools/continuous_build/build_internal/symsrc/calculate_bloat.py b/tools/continuous_build/build_internal/symsrc/calculate_bloat.py deleted file mode 100755 index 2a25b5ce4..000000000 --- a/tools/continuous_build/build_internal/symsrc/calculate_bloat.py +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/env python -#-*- coding: utf-8 -*- -# 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. - -__author__ = 'phoglund@webrtc.org (Patrik Höglund)' - -import os -import sys -import subprocess - -from optparse import OptionParser - -"""Computes a webtreemap-compatible bloat .json file for a binary. - -This will produce an overview of the binary which shows the sizes of its -constituent parts. The binary should be built with -g for symbols. If building -Chrome, you must include profiling=1 if building in Release mode. - -This script only runs on Linux. It requires the nm utility (part of the binutils -package) as well as the bloat.py script. It can run from any working directory. -""" - -THIS_SCRIPTS_PATH = os.path.dirname(os.path.realpath(__file__)) -BLOAT_SCRIPT = THIS_SCRIPTS_PATH + '/../../../third_party/bloat/bloat.py' - - -def _run_nm(binary): - raw_nm_filename = 'nm.out' - raw_nm_file = open(raw_nm_filename, 'w') - subprocess.check_call(['nm', '-C', '-S', '-l', binary], stdout=raw_nm_file) - raw_nm_file.close() - return raw_nm_filename - - -def _run_bloat(raw_nm_filename, source_path, output_filename): - json_file = open(output_filename, 'w') - subprocess.check_call([BLOAT_SCRIPT, - '--strip-prefix=%s' % source_path, - '--nm-output=%s' % raw_nm_filename, - 'syms'], stdout=json_file, stderr=None) - json_file.close() - - -def main(): - if not os.path.exists(BLOAT_SCRIPT): - return 'Missing required dependency bloat (looked in %s).' % BLOAT_SCRIPT - - usage = 'usage: %prog -b -s -o ' - parser = OptionParser(usage) - parser.add_option('-b', '--binary', dest='binary', default=False, - help='Binary to run the bloat calculation on. ' + - 'The binary should be built with -g for symbols.') - parser.add_option('-s', '--source-path', dest='source_path', default=False, - help='Where the binary\'s source code is.') - parser.add_option('-o', '--output-file', dest='output_file', default=False, - help='Where to put the resulting JSON file.') - options, unused_args = parser.parse_args() - - if not options.binary: - return '%s\n\nYou must specify the binary to run on.' % usage - if not options.output_file: - return '%s\n\nYou must specify where to put the output file.' % usage - if not options.source_path: - return '%s\n\nYou must specify the binary\'s source code path.' % usage - if not os.path.exists(options.binary): - return 'Binary %s does not exist.' % options.binary - if not os.path.exists(options.source_path): - return 'Source path %s does not exist.' % options.source_path - - # Convert the source path to an absolute path. The ending slash is important - # for --strip-prefix later! - options.source_path = os.path.realpath(options.source_path) + '/' - - raw_nm_filename = _run_nm(options.binary) - _run_bloat(raw_nm_filename, options.source_path, options.output_file) - - os.remove(raw_nm_filename) - - return 0 - -if __name__ == '__main__': - sys.exit(main()) diff --git a/tools/continuous_build/build_internal/symsrc/cleanup_build.py b/tools/continuous_build/build_internal/symsrc/cleanup_build.py deleted file mode 100755 index 5c6ab2f42..000000000 --- a/tools/continuous_build/build_internal/symsrc/cleanup_build.py +++ /dev/null @@ -1,50 +0,0 @@ -#!/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. - -__author__ = 'kjellander@webrtc.org (Henrik Kjellander)' - -"""Clean up a build by removing just compile output or everything (nuke). - -This script assumes the trunk directory is located directly below the current -working directory. -""" - -from optparse import OptionParser -import sys - -from common import chromium_utils - - -def main(): - usage = 'usage: %prog [--nuke]' - parser = OptionParser(usage) - parser.add_option('-n', '--nuke', - action='store_true', dest='nuke', default=False, - help='Nuke whole repository (not just build output)') - options, unused_args = parser.parse_args() - - if options.nuke: - chromium_utils.RemoveDirectory('trunk') - else: - # Remove platform specific build output directories. - if chromium_utils.IsWindows(): - chromium_utils.RemoveDirectory('trunk\\build\\Debug') - chromium_utils.RemoveDirectory('trunk\\build\\Release') - elif chromium_utils.IsMac(): - chromium_utils.RemoveDirectory('trunk/out') - chromium_utils.RemoveDirectory('trunk/xcodebuild') - elif chromium_utils.IsLinux(): - chromium_utils.RemoveDirectory('trunk/out') - else: - print 'Unknown platform: ' + sys.platform - return 1 - return 0 - -if '__main__' == __name__: - sys.exit(main()) diff --git a/tools/continuous_build/build_internal/symsrc/webrtc_bloat.html b/tools/continuous_build/build_internal/symsrc/webrtc_bloat.html deleted file mode 100644 index c4f15b026..000000000 --- a/tools/continuous_build/build_internal/symsrc/webrtc_bloat.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - WebRTC Binary Size Tracker - - - - - - -

WebRTC Binary Size Tracker

-

Click on a box to zoom in. Click on the outermost box to zoom out.

-
- - - diff --git a/tools/continuous_build/build_internal/symsrc/webrtc_buildbot/__init__.py b/tools/continuous_build/build_internal/symsrc/webrtc_buildbot/__init__.py deleted file mode 100755 index e6f0468af..000000000 --- a/tools/continuous_build/build_internal/symsrc/webrtc_buildbot/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -#!/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. diff --git a/tools/continuous_build/build_internal/symsrc/webrtc_buildbot/slave_utils.py b/tools/continuous_build/build_internal/symsrc/webrtc_buildbot/slave_utils.py deleted file mode 100644 index e16117c27..000000000 --- a/tools/continuous_build/build_internal/symsrc/webrtc_buildbot/slave_utils.py +++ /dev/null @@ -1,66 +0,0 @@ -#!/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. - -__author__ = 'kjellander@webrtc.org (Henrik Kjellander)' - -"""Contains a customized GClient class for WebRTC use. - -It is essential that this class is imported after the chromium_commands so it -can overwrite its registration of the 'gclient' command. -This should by done by adding: - -from webrtc_buildbot import slave_utils - -into the buildbot.tac file of the try slave. -""" - -from slave import chromium_commands - -try: - # Buildbot 0.8.x - # Unable to import 'XX' - # pylint: disable=F0401 - from buildslave.commands.registry import commandRegistry -except ImportError: - # Buildbot 0.7.12 - # Unable to import 'XX' - # pylint: disable=E0611,E1101,F0401 - from buildbot.slave.registry import registerSlaveCommand - -class GClient(chromium_commands.GClient): - def doPatch(self, res): - # For some unknown reason, the patch tuple recieved only have two items: - # the patch level and the actual diff contents. The third optional root - # argument that tells which base directory to use for the patch is not - # included. Since we need this to be able to patch properly in WebRTC, we'll - # just create a new tuple with this added. - self.patch = (self.patch[0], self.patch[1], 'trunk') - return chromium_commands.GClient.doPatch(self, res) - - -def RegisterGclient(): - try: - # This version should work on BB 8.3 - - # We run this code in a try because it fails with an assertion if - # the module is loaded twice. - commandRegistry['gclient'] = 'webrtc_buildbot.slave_utils.GClient' - return - except (AssertionError, NameError): - pass - - try: - # This version should work on BB 7.12 - # We run this code in a try because it fails with an assertion if - # the module is loaded twice. - registerSlaveCommand('gclient', GClient, commands.command_version) - except (AssertionError, NameError): - pass - -RegisterGclient() diff --git a/tools/fix_webrtc_buildbots.py b/tools/fix_webrtc_buildbots.py deleted file mode 100755 index 50dbdabeb..000000000 --- a/tools/fix_webrtc_buildbots.py +++ /dev/null @@ -1,64 +0,0 @@ -#!/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. - -import os -import sys - - -def main(): - """ - Performs changes after checkout needed for WebRTC buildbot customizations. - - This script performs the following tasks: - - Adds an import of the WebRTC slave_utils module in the buildbot.tac file. - It will add a comment and the import at the end of the file, if it's not - already present. - - Removes the slaves.cfg for the Libvpx waterfall on Windows platforms, since - symbolic links are not available on this platform and the resulting link - file causes a parsing error in Python when loaded during slave startup. - - Using this script, we don't need to maintain our own version of the slave - scripts and can automatically stay up to date with their changes. - - This script should be invoked as a hooks step in the DEPS file, like this: - hooks = [ - { - # Update slave buildbot.tac to include WebRTC slave_utils import. - "pattern": ".", - "action": ["python", "tools/fix_webrtc_buildbots.py"], - }, - ] - """ - SCRIPT_PATH = os.path.dirname(os.path.abspath(__file__)) - - # Patch buildbot.tac. - TARGET_FILE = os.path.join(SCRIPT_PATH, - 'continuous_build/build/slave/buildbot.tac') - COMMENT_LINE = '# Load WebRTC custom slave script.\n' - IMPORT_LINE = 'from webrtc_buildbot import slave_utils\n' - - file = open(TARGET_FILE, 'r') - if file.read().find(IMPORT_LINE) == -1: - print 'Patching %s with WebRTC imports.' % TARGET_FILE - file.close() - file = open(TARGET_FILE, 'a') - file.write(COMMENT_LINE) - file.write(IMPORT_LINE) - file.close() - - # Remove Libvpx waterfall's slaves.cfg on Windows. - if sys.platform.startswith('win'): - slave_cfg = os.path.join(SCRIPT_PATH, ('continuous_build/build_internal/' - 'masters/master.libvpx/slaves.cfg')) - if os.path.exists(slave_cfg): - os.remove(slave_cfg) - print 'Removed %s for Libvpx waterfall on Windows.' % slave_cfg - -if __name__ == '__main__': - main()