Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(778)

Unified Diff: slave/skia_slave_scripts/update.py

Issue 648353002: Remove Skia's forked buildbot code (Closed) Base URL: https://skia.googlesource.com/buildbot.git@master
Patch Set: Address comment Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: slave/skia_slave_scripts/update.py
diff --git a/slave/skia_slave_scripts/update.py b/slave/skia_slave_scripts/update.py
deleted file mode 100644
index d248a5d5ca3f227cacd6844beb680742bac35bc0..0000000000000000000000000000000000000000
--- a/slave/skia_slave_scripts/update.py
+++ /dev/null
@@ -1,192 +0,0 @@
-#!/usr/bin/env 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.
-
-""" Check out the Skia sources. """
-
-
-from build_step import BuildStep, BuildStepFailure
-
-from common import chromium_utils
-from py.utils.git_utils import GIT
-from utils import file_utils
-from utils import gclient_utils
-from py.utils import misc
-from py.utils import shell_utils
-
-import ast
-import config_private
-import os
-import re
-import sys
-
-
-LOCAL_GIT_MIRROR_URL = 'http://192.168.1.120/git-mirror/skia'
-SKIA_GIT_URL_TO_REPLACE = config_private.SKIA_GIT_URL[:-len('.git')]
-
-
-def _MaybeUseSkiaLabMirror(revision=None):
- """If the SkiaLab mirror is reachable, set the gitconfig to use that instead
- of the remote repo.
-
- Args:
- revision: optional string; commit hash to which we're syncing. This is a
- safety net; in the case that the mirror does not yet have this commit,
- we will use the remote repo instead.
- """
- # Attempt to reach the SkiaLab git mirror.
- mirror_is_accessible = False
- print 'Attempting to reach the SkiaLab git mirror...'
- try:
- shell_utils.run([GIT, 'ls-remote',
- LOCAL_GIT_MIRROR_URL + '.git',
- revision or 'HEAD', '--exit-code'], timeout=10)
- mirror_is_accessible = True
- except (shell_utils.CommandFailedException, shell_utils.TimeoutException):
- pass
-
- # Find the global git config entries and loop over them, removing the ones
- # which aren't needed and adding a URL override for the git mirror if it is
- # accessible and not already present.
- try:
- configs = shell_utils.run([GIT, 'config', '--global',
- '--list']).splitlines()
- except shell_utils.CommandFailedException:
- configs = []
-
- already_overriding_url = False
- for config in configs:
- override_url = None
- match = re.match('url.(.+).insteadof=', config)
- if match:
- override_url = match.groups()[0]
- if override_url:
- if override_url == LOCAL_GIT_MIRROR_URL and mirror_is_accessible:
- print 'Already have URL override for SkiaLab git mirror.'
- already_overriding_url = True
- else:
- print 'Removing unneeded URL override for %s' % override_url
- try:
- shell_utils.run([GIT, 'config', '--global',
- '--remove-section', config.split('.insteadof')[0]])
- except shell_utils.CommandFailedException as e:
- if 'No such section!' in e.output:
- print '"insteadof" section already removed; continuing...'
- else:
- raise
-
- if mirror_is_accessible and not already_overriding_url:
- print ('SkiaLab git mirror appears to be accessible. Changing gitconfig to '
- 'use the mirror.')
- shell_utils.run([GIT, 'config', '--global',
- 'url.%s.insteadOf' % LOCAL_GIT_MIRROR_URL,
- SKIA_GIT_URL_TO_REPLACE])
-
- # Some debugging info that might help us figure things out...
- try:
- shell_utils.run([GIT, 'config', '--global', '--list'])
- except shell_utils.CommandFailedException:
- pass
-
-
-class Update(BuildStep):
- def __init__(self, timeout=10000, no_output_timeout=6000, attempts=5,
- **kwargs):
- super(Update, self).__init__(timeout=timeout,
- no_output_timeout=no_output_timeout,
- attempts=attempts,
- **kwargs)
-
- def _Run(self):
- # Run "gclient" before doing anything else to ensure that we get the
- # necessary stuff installed.
- gclient_utils.GClient()
-
- _MaybeUseSkiaLabMirror(self._revision)
-
- # We receive gclient_solutions as a list of dictionaries flattened into a
- # double-quoted string. This invocation of literal_eval converts that string
- # into a list of strings.
- solutions = ast.literal_eval(self._args['gclient_solutions'][1:-1])
-
- # TODO(borenet): Move the gclient solutions parsing logic into a function.
-
- # Parse each solution dictionary from a string and add it to a list, while
- # building a string to pass as a spec to gclient, to indicate which
- # branches should be downloaded.
- solution_dicts = []
- gclient_spec = 'solutions = ['
- for solution in solutions:
- gclient_spec += solution
- solution_dicts += ast.literal_eval(solution)
- gclient_spec += ']'
-
- # Set the DEPS target_os if necessary.
- if self._deps_target_os:
- gclient_spec += '\ntarget_os = ["%s"]' % self._deps_target_os
-
- # Run "gclient config" with the spec we just built.
- gclient_utils.Config(spec=gclient_spec)
-
- revisions = []
- for solution in solution_dicts:
- if solution['name'] == gclient_utils.SKIA_TRUNK:
- revisions.append((solution['name'], self._revision))
- else:
- url_split = solution['url'].split('@')
- if len(url_split) > 1:
- revision = url_split[1]
- revisions.append((solution['name'], revision))
-
- try:
- if self._is_try:
- # Clean our checkout to make sure we don't have a patch left over.
- if (os.path.isdir('skia') and
- os.path.isdir(os.path.join('skia', '.git'))):
- with misc.ChDir('skia'):
- gclient_utils.Revert()
-
- # Run "gclient sync"
- gclient_utils.Sync(
- revisions=revisions,
- verbose=True,
- force=True,
- delete_unversioned_trees=True)
- got_revision = gclient_utils.GetCheckedOutHash()
- except Exception:
- # If the sync fails, clear the checkout and try again.
- print 'Initial sync failed.'
- # Attempt to remove the skia directory first.
- if os.path.isdir('skia'):
- print 'Removing "skia"'
- chromium_utils.RemoveDirectory('skia')
- # Now, remove *everything* in the build directory.
- build_dir = os.path.abspath(os.curdir)
- with misc.ChDir(os.pardir):
- print 'Attempting to clear %s' % build_dir
- file_utils.clear_directory(build_dir)
- # Try to sync again.
- print 'Attempting to sync again.'
- gclient_utils.Config(spec=gclient_spec)
- gclient_utils.Sync(
- revisions=revisions,
- verbose=True,
- force=True,
- delete_unversioned_trees=True,
- jobs=1)
- got_revision = gclient_utils.GetCheckedOutHash()
-
- # If the revision we actually got differs from what was requested, raise an
- # exception.
- if self._revision and got_revision != self._revision:
- raise BuildStepFailure('Actually-synced revision "%s" is different from '
- 'the requested revision "%s".' % (
- repr(got_revision), repr(self._revision)))
-
- # Print the obtained revision number so that the master can parse it.
- print 'Skia updated to %s' % got_revision
-
-
-if '__main__' == __name__:
- sys.exit(BuildStep.RunBuildStep(Update))
« no previous file with comments | « slave/skia_slave_scripts/sync_android.py ('k') | slave/skia_slave_scripts/update_all_buildslave_checkouts.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698