Index: infra/scripts/legacy/site_config/config_bootstrap.py |
diff --git a/infra/scripts/legacy/site_config/config_bootstrap.py b/infra/scripts/legacy/site_config/config_bootstrap.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8777cab60253c1a3829914a04b379afda2b2e4ea |
--- /dev/null |
+++ b/infra/scripts/legacy/site_config/config_bootstrap.py |
@@ -0,0 +1,128 @@ |
+# 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. |
+ |
+""" |
+Site configuration information that is sufficient to configure a slave, |
+without loading any buildbot or twisted code. |
+""" |
+ |
+import inspect |
+import os |
+ |
+BASE_DIR = os.path.dirname(os.path.abspath(__file__)) |
+ |
+# Override config_default with a config_private file. |
+BASE_MASTERS = [] |
+try: |
+ import config_private # pylint: disable=F0401 |
+ BASE_MASTERS += [config_private.Master, config_private.PublicMaster] |
+except ImportError: |
+ import config_default as config_private # pylint: disable=W0403 |
+ BASE_MASTERS += [config_private.Master,] |
+ |
+ |
+class Master(config_private.Master): |
+ """Buildbot master configuration options.""" |
+ |
+ trunk_url = (config_private.Master.server_url + |
+ config_private.Master.repo_root + '/trunk') |
+ |
+ webkit_trunk_url = (config_private.Master.webkit_root_url + '/trunk') |
+ |
+ trunk_url_src = config_private.Master.git_server_url + '/chromium/src.git' |
+ trunk_url_tools = trunk_url + '/tools' |
+ nacl_url = config_private.Master.nacl_trunk_url + '/src/native_client' |
+ nacl_sdk_root_url = 'https://nativeclient-sdk.googlecode.com/svn' |
+ nacl_ports_trunk_url = 'https://naclports.googlecode.com/svn/trunk' |
+ nacl_ports_url = nacl_ports_trunk_url + '/src' |
+ gears_url = 'http://gears.googlecode.com/svn/trunk' |
+ gyp_trunk_url = 'http://gyp.googlecode.com/svn/trunk' |
+ branch_url = (config_private.Master.server_url + |
+ config_private.Master.repo_root + '/branches') |
+ merge_branch_url = branch_url + '/chrome_webkit_merge_branch' |
+ merge_branch_url_src = merge_branch_url + '/src' |
+ |
+ v8_url = 'http://v8.googlecode.com/svn' |
+ v8_branch_url = (v8_url + '/branches') |
+ v8_bleeding_edge = v8_branch_url + '/bleeding_edge' |
+ v8_trunk = v8_url + '/trunk' |
+ es5conform_root_url = "https://es5conform.svn.codeplex.com/svn/" |
+ es5conform_revision = 62998 |
+ |
+ dart_url = config_private.Master.googlecode_url % 'dart' |
+ dart_bleeding = dart_url + '/branches/bleeding_edge' |
+ dart_trunk = dart_url + '/trunk' |
+ |
+ oilpan_url = (config_private.Master.webkit_root_url + '/branches/oilpan') |
+ |
+ skia_url = 'http://skia.googlecode.com/svn/' |
+ |
+ syzygy_url = 'http://sawbuck.googlecode.com/svn/' |
+ |
+ webrtc_url = config_private.Master.googlecode_url % 'webrtc' |
+ libyuv_url = 'http://libyuv.googlecode.com/svn' |
+ |
+ # Default target platform if none was given to the factory. |
+ default_platform = 'win32' |
+ |
+ # Used by the waterfall display. |
+ project_url = 'http://www.chromium.org' |
+ |
+ # Base URL for perf test results. |
+ perf_base_url = 'http://build.chromium.org/f/chromium/perf' |
+ |
+ # Suffix for perf URL. |
+ perf_report_url_suffix = 'report.html?history=150' |
+ |
+ # Directory in which to save perf-test output data files. |
+ perf_output_dir = '~/www/perf' |
+ |
+ # URL pointing to builds and test results. |
+ archive_url = 'http://build.chromium.org/buildbot' |
+ |
+ # The test results server to upload our test results. |
+ test_results_server = 'test-results.appspot.com' |
+ |
+ # File in which to save a list of graph names. |
+ perf_graph_list = 'graphs.dat' |
+ |
+ # Magic step return code inidicating "warning(s)" rather than "error". |
+ retcode_warnings = 88 |
+ |
+ @staticmethod |
+ def GetBotPassword(): |
+ """Returns the slave password retrieved from a local file, or None. |
+ |
+ The slave password is loaded from a local file next to this module file, if |
+ it exists. This is a function rather than a variable so it's not called |
+ when it's not needed. |
+ |
+ We can't both make this a property and also keep it static unless we use a |
+ <metaclass, which is overkill for this usage. |
+ """ |
+ # Note: could be overriden by config_private. |
+ if not getattr(Master, 'bot_password', None): |
+ # If the bot_password has been requested, the file is required to exist |
+ # if not overriden in config_private. |
+ bot_password_path = os.path.join(BASE_DIR, '.bot_password') |
+ Master.bot_password = open(bot_password_path).read().strip('\n\r') |
+ return Master.bot_password |
+ |
+ @staticmethod |
+ def _extract_masters(master): |
+ return [v for v in master.__dict__.itervalues() |
+ if (inspect.isclass(v) and |
+ issubclass(v, config_private.Master.Base) and |
+ v != config_private.Master.Base)] |
+ |
+ @classmethod |
+ def get_base_masters(cls): |
+ masters = [] |
+ for base_master in BASE_MASTERS: |
+ masters += cls._extract_masters(base_master) |
+ return masters |
+ |
+ @classmethod |
+ def get_all_masters(cls): |
+ return cls._extract_masters(cls) |