Index: recipe_modules/bot_update/resources/bot_update.py |
diff --git a/recipe_modules/bot_update/resources/bot_update.py b/recipe_modules/bot_update/resources/bot_update.py |
index f8ecdb79f217cd2a396b34ab987ac3959aeb0a41..6b48a2f57bac9002bb92e502eca98599b5157cca 100755 |
--- a/recipe_modules/bot_update/resources/bot_update.py |
+++ b/recipe_modules/bot_update/resources/bot_update.py |
@@ -167,49 +167,6 @@ GOT_REVISION_MAPPINGS = { |
} |
-BOT_UPDATE_MESSAGE = """ |
-What is the "Bot Update" step? |
-============================== |
- |
-This step ensures that the source checkout on the bot (e.g. Chromium's src/ and |
-its dependencies) is checked out in a consistent state. This means that all of |
-the necessary repositories are checked out, no extra repositories are checked |
-out, and no locally modified files are present. |
- |
-These actions used to be taken care of by the "gclient revert" and "update" |
-steps. However, those steps are known to be buggy and occasionally flaky. This |
-step has two main advantages over them: |
- * it only operates in Git, so the logic can be clearer and cleaner; and |
- * it is a slave-side script, so its behavior can be modified without |
- restarting the master. |
- |
-Why Git, you ask? Because that is the direction that the Chromium project is |
-heading. This step is an integral part of the transition from using the SVN repo |
-at chrome/trunk/src to using the Git repo src.git. Please pardon the dust while |
-we fully convert everything to Git. This message will get out of your way |
-eventually, and the waterfall will be a happier place because of it. |
- |
-This step can be activated or deactivated independently on every builder on |
-every master. When it is active, the "gclient revert" and "update" steps become |
-no-ops. When it is inactive, it prints this message, cleans up after itself, and |
-lets everything else continue as though nothing has changed. Eventually, when |
-everything is stable enough, this step will replace them entirely. |
- |
-Debugging information: |
-(master/builder/slave may be unspecified on recipes) |
-master: %(master)s |
-builder: %(builder)s |
-slave: %(slave)s |
-forced by recipes: %(recipe)s |
-CURRENT_DIR: %(CURRENT_DIR)s |
-BUILDER_DIR: %(BUILDER_DIR)s |
-SLAVE_DIR: %(SLAVE_DIR)s |
-THIS_DIR: %(THIS_DIR)s |
-SCRIPTS_DIR: %(SCRIPTS_DIR)s |
-BUILD_DIR: %(BUILD_DIR)s |
-ROOT_DIR: %(ROOT_DIR)s |
-DEPOT_TOOLS_DIR: %(DEPOT_TOOLS_DIR)s |
-bot_update.py is:""" |
ACTIVATED_MESSAGE = """ACTIVE. |
The bot will perform a Git checkout in this step. |
@@ -255,88 +212,6 @@ RECOGNIZED_PATHS = { |
} |
RECOGNIZED_PATHS.update(internal_data.get('RECOGNIZED_PATHS', {})) |
-ENABLED_MASTERS = [ |
- 'bot_update.always_on', |
- 'chromium.android', |
- 'chromium.angle', |
- 'chromium.chrome', |
- 'chromium.chromedriver', |
- 'chromium.chromiumos', |
- 'chromium', |
- 'chromium.fyi', |
- 'chromium.goma', |
- 'chromium.gpu', |
- 'chromium.gpu.fyi', |
- 'chromium.infra', |
- 'chromium.infra.cron', |
- 'chromium.linux', |
- 'chromium.lkgr', |
- 'chromium.mac', |
- 'chromium.memory', |
- 'chromium.memory.fyi', |
- 'chromium.perf', |
- 'chromium.perf.fyi', |
- 'chromium.swarm', |
- 'chromium.webkit', |
- 'chromium.webrtc', |
- 'chromium.webrtc.fyi', |
- 'chromium.win', |
- 'client.catapult', |
- 'client.drmemory', |
- 'client.mojo', |
- 'client.nacl', |
- 'client.nacl.ports', |
- 'client.nacl.sdk', |
- 'client.nacl.toolchain', |
- 'client.pdfium', |
- 'client.skia', |
- 'client.skia.fyi', |
- 'client.v8', |
- 'client.v8.branches', |
- 'client.v8.fyi', |
- 'client.v8.ports', |
- 'client.webrtc', |
- 'client.webrtc.fyi', |
- 'tryserver.blink', |
- 'tryserver.client.catapult', |
- 'tryserver.client.mojo', |
- 'tryserver.chromium.android', |
- 'tryserver.chromium.angle', |
- 'tryserver.chromium.linux', |
- 'tryserver.chromium.mac', |
- 'tryserver.chromium.perf', |
- 'tryserver.chromium.win', |
- 'tryserver.infra', |
- 'tryserver.nacl', |
- 'tryserver.v8', |
- 'tryserver.webrtc', |
-] |
-ENABLED_MASTERS += internal_data.get('ENABLED_MASTERS', []) |
- |
-ENABLED_BUILDERS = { |
- 'client.dart.fyi': [ |
- 'v8-linux-release', |
- 'v8-mac-release', |
- 'v8-win-release', |
- ], |
- 'client.dynamorio': [ |
- 'linux-v8-dr', |
- ], |
-} |
-ENABLED_BUILDERS.update(internal_data.get('ENABLED_BUILDERS', {})) |
- |
-ENABLED_SLAVES = {} |
-ENABLED_SLAVES.update(internal_data.get('ENABLED_SLAVES', {})) |
- |
-# Disabled filters get run AFTER enabled filters, so for example if a builder |
-# config is enabled, but a bot on that builder is disabled, that bot will |
-# be disabled. |
-DISABLED_BUILDERS = {} |
-DISABLED_BUILDERS.update(internal_data.get('DISABLED_BUILDERS', {})) |
- |
-DISABLED_SLAVES = {} |
-DISABLED_SLAVES.update(internal_data.get('DISABLED_SLAVES', {})) |
- |
# These masters work only in Git, meaning for got_revision, always output |
# a git hash rather than a SVN rev. |
GIT_MASTERS = [ |
@@ -525,34 +400,6 @@ def get_gclient_spec(solutions, target_os, target_os_only, git_cache_dir): |
} |
-def check_enabled(master, builder, slave): |
- if master in ENABLED_MASTERS: |
- return True |
- builder_list = ENABLED_BUILDERS.get(master) |
- if builder_list and builder in builder_list: |
- return True |
- slave_list = ENABLED_SLAVES.get(master) |
- if slave_list and slave in slave_list: |
- return True |
- return False |
- |
- |
-def check_disabled(master, builder, slave): |
- """Returns True if disabled, False if not disabled.""" |
- builder_list = DISABLED_BUILDERS.get(master) |
- if builder_list and builder in builder_list: |
- return True |
- slave_list = DISABLED_SLAVES.get(master) |
- if slave_list and slave in slave_list: |
- return True |
- return False |
- |
- |
-def check_valid_host(master, builder, slave): |
- return (check_enabled(master, builder, slave) |
- and not check_disabled(master, builder, slave)) |
- |
- |
def maybe_ignore_revision(revision, buildspec): |
"""Handle builders that don't care what buildbot tells them to build. |
@@ -1197,11 +1044,8 @@ def get_commit_position(git_path, revision='HEAD'): |
return None |
-def parse_got_revision(gclient_output, got_revision_mapping, use_svn_revs): |
+def parse_got_revision(gclient_output, got_revision_mapping): |
"""Translate git gclient revision mapping to build properties. |
- |
- If use_svn_revs is True, then translate git hashes in the revision mapping |
- to svn revision numbers. |
""" |
properties = {} |
solutions_output = { |
@@ -1222,12 +1066,7 @@ def parse_got_revision(gclient_output, got_revision_mapping, use_svn_revs): |
# Since we are using .DEPS.git, everything had better be git. |
assert solution_output.get('scm') == 'git' |
git_revision = git('rev-parse', 'HEAD', cwd=dir_name).strip() |
- if use_svn_revs: |
- revision = get_svn_rev(git_revision, dir_name) |
- if not revision: |
- revision = git_revision |
- else: |
- revision = git_revision |
+ revision = git_revision |
commit_position = get_commit_position(dir_name) |
properties[property_name] = revision |
@@ -1427,12 +1266,6 @@ def parse_args(): |
parse.add_option('--gerrit_no_reset', action='store_true', |
help='Bypass calling reset after applying a gerrit ref.') |
parse.add_option('--specs', help='Gcilent spec.') |
- parse.add_option('--master', |
- help='Master name. If specified and it is not in ' |
- 'bot_update\'s whitelist, bot_update will be noop.') |
- parse.add_option('-f', '--force', action='store_true', |
- help='Bypass check to see if we want to be run. ' |
- 'Should ONLY be used locally or by smart recipes.') |
parse.add_option('--revision_mapping', |
help='{"path/to/repo/": "property_name"}') |
parse.add_option('--revision_mapping_file', |
@@ -1448,11 +1281,6 @@ def parse_args(): |
'set to <branch>:<revision>.') |
parse.add_option('--output_manifest', action='store_true', |
help=('Add manifest json to the json output.')) |
- parse.add_option('--slave_name', default=socket.getfqdn().split('.')[0], |
- help='Hostname of the current machine, ' |
- 'used for determining whether or not to activate.') |
- parse.add_option('--builder_name', help='Name of the builder, ' |
- 'used for determining whether or not to activate.') |
parse.add_option('--build_dir', default=os.getcwd()) |
parse.add_option('--flag_file', default=path.join(os.getcwd(), |
'update.flag')) |
@@ -1559,7 +1387,7 @@ def prepare(options, git_slns, active): |
return revisions, step_text |
-def checkout(options, git_slns, specs, buildspec, master, |
+def checkout(options, git_slns, specs, buildspec, |
svn_root, revisions, step_text): |
first_sln = git_slns[0]['name'] |
dir_names = [sln.get('name') for sln in git_slns if 'name' in sln] |
@@ -1623,9 +1451,6 @@ def checkout(options, git_slns, specs, buildspec, master, |
print '@@@STEP_TEXT@%s PATCH FAILED@@@' % step_text |
raise |
- # Revision is an svn revision, unless it's a git master. |
- use_svn_rev = master not in GIT_MASTERS |
- |
# Take care of got_revisions outputs. |
revision_mapping = dict(GOT_REVISION_MAPPINGS.get(svn_root, {})) |
if options.revision_mapping: |
@@ -1637,8 +1462,7 @@ def checkout(options, git_slns, specs, buildspec, master, |
if not revision_mapping: |
revision_mapping[first_sln] = 'got_revision' |
- got_revisions = parse_got_revision(gclient_output, revision_mapping, |
- use_svn_rev) |
+ got_revisions = parse_got_revision(gclient_output, revision_mapping) |
if not got_revisions: |
# TODO(hinoka): We should probably bail out here, but in the interest |
@@ -1663,22 +1487,10 @@ def checkout(options, git_slns, specs, buildspec, master, |
emit_properties(got_revisions) |
-def print_help_text(force, output_json, active, master, builder, slave): |
- """Print helpful messages to tell devs whats going on.""" |
- if force and output_json: |
- recipe_force = 'Forced on by recipes' |
- elif active and output_json: |
- recipe_force = 'Off by recipes, but forced on by bot update' |
- elif not active and output_json: |
- recipe_force = 'Forced off by recipes' |
- else: |
- recipe_force = 'N/A. Was not called by recipes' |
+def print_debug_info(): |
+ print "Debugging information:" |
- print BOT_UPDATE_MESSAGE % { |
- 'master': master or 'Not specified', |
- 'builder': builder or 'Not specified', |
- 'slave': slave or 'Not specified', |
- 'recipe': recipe_force, |
+ items = { |
'CURRENT_DIR': CURRENT_DIR, |
'BUILDER_DIR': BUILDER_DIR, |
'SLAVE_DIR': SLAVE_DIR, |
@@ -1687,28 +1499,17 @@ def print_help_text(force, output_json, active, master, builder, slave): |
'BUILD_DIR': BUILD_DIR, |
'ROOT_DIR': ROOT_DIR, |
'DEPOT_TOOLS_DIR': DEPOT_TOOLS_DIR, |
- }, |
- print ACTIVATED_MESSAGE if active else NOT_ACTIVATED_MESSAGE |
+ } |
+ for k, v in sorted(items.iteritems()): |
estaab
2016/09/03 01:52:25
Maybe add a message giving a little context, less
iannucci
2016/09/07 19:21:42
Yeah I do this with the print statement up above :
|
+ print k, v |
def main(): |
# Get inputs. |
options, _ = parse_args() |
- builder = options.builder_name |
- slave = options.slave_name |
- master = options.master |
- |
- if not master: |
- # bot_update activation whitelist is checked only on buildbot masters. |
- # If there is no master, bot_update is always active. |
- options.force = True |
- |
- # Check if this script should activate or not. |
- active = options.force or check_valid_host(master, builder, slave) |
+ options.force = True |
- # Print a helpful message to tell developers whats going on with this step. |
- print_help_text( |
- options.force, options.output_json, active, master, builder, slave) |
+ print_debug_info() |
# Parse, munipulate, and print the gclient solutions. |
specs = {} |
@@ -1721,8 +1522,8 @@ def main(): |
try: |
# Dun dun dun, the main part of bot_update. |
- revisions, step_text = prepare(options, git_slns, active) |
- checkout(options, git_slns, specs, buildspec, master, svn_root, revisions, |
+ revisions, step_text = prepare(options, git_slns, True) |
+ checkout(options, git_slns, specs, buildspec, svn_root, revisions, |
step_text) |
except Inactive: |