| Index: tools/findit/chromium_deps.py
|
| diff --git a/tools/findit/chromium_deps.py b/tools/findit/chromium_deps.py
|
| index 0de6721d125428b1c712053735d8aa6305907328..37e16f534918934996f60d42831a05c7a6feecca 100644
|
| --- a/tools/findit/chromium_deps.py
|
| +++ b/tools/findit/chromium_deps.py
|
| @@ -2,14 +2,18 @@
|
| # Use of this source code is governed by a BSD-style license that can be
|
| # found in the LICENSE file.
|
|
|
| +import base64
|
| import https
|
| import utils
|
|
|
|
|
| -DEPS_FILE_URL = 'https://src.chromium.org/chrome/trunk/src/DEPS?p=%s'
|
| +DEPS_FILE_URL_SVN = 'https://src.chromium.org/chrome/trunk/src/DEPS?p=%s'
|
| +DEPS_FILE_URL_GIT = (
|
| + 'https://chromium.googlesource.com/chromium/src/+/%s/DEPS?format=text')
|
|
|
|
|
| class _VarImpl(object):
|
| +
|
| def __init__(self, local_scope):
|
| self._local_scope = local_scope
|
|
|
| @@ -70,7 +74,11 @@ def _GetComponentName(path):
|
|
|
|
|
| def _GetContentOfDEPS(chromium_revision):
|
| - return https.SendRequest(DEPS_FILE_URL % chromium_revision)
|
| + if utils.IsGitHash(chromium_revision):
|
| + url = DEPS_FILE_URL_GIT
|
| + else:
|
| + url = DEPS_FILE_URL_SVN
|
| + return https.SendRequest(url % chromium_revision)
|
|
|
|
|
| def GetChromiumComponents(chromium_revision,
|
| @@ -85,13 +93,23 @@ def GetChromiumComponents(chromium_revision,
|
| and returns the content of the DEPS file. The returned
|
| content is assumed to be trusted input and will be
|
| evaluated as python code.
|
| +
|
| + Returns:
|
| + A map from component path to parsed component name, repository URL,
|
| + repository type and revision number.
|
| """
|
| if os_platform.lower() == 'linux':
|
| os_platform = 'unix'
|
|
|
| + is_git_hash = utils.IsGitHash(chromium_revision)
|
| +
|
| # Download the content of DEPS file in chromium.
|
| deps_content = deps_file_downloader(chromium_revision)
|
|
|
| + # Googlesource git returns text file encoded in base64, so decode it.
|
| + if is_git_hash:
|
| + deps_content = base64.b64decode(deps_content)
|
| +
|
| all_deps = {}
|
|
|
| # Parse the content of DEPS file.
|
| @@ -102,7 +120,7 @@ def GetChromiumComponents(chromium_revision,
|
|
|
| # Figure out components based on the dependencies.
|
| components = {}
|
| - for component_path in all_deps.keys():
|
| + for component_path in all_deps:
|
| name = _GetComponentName(component_path)
|
| repository, revision = all_deps[component_path].split('@')
|
| is_git_hash = utils.IsGitHash(revision)
|
| @@ -123,47 +141,51 @@ def GetChromiumComponents(chromium_revision,
|
| 'revision': revision
|
| }
|
|
|
| - # Add chromium as a component.
|
| - # TODO(stgao): Move to git.
|
| + # Add chromium as a component, depending on the repository type.
|
| + if is_git_hash:
|
| + repository = 'https://chromium.googlesource.com/chromium/src/'
|
| + repository_type = 'git'
|
| + else:
|
| + repository = 'https://src.chromium.org/chrome/trunk'
|
| + repository_type = 'svn'
|
| +
|
| components['src/'] = {
|
| 'path': 'src/',
|
| 'name': 'chromium',
|
| - 'repository': 'https://src.chromium.org/chrome/trunk',
|
| - 'repository_type': 'svn',
|
| + 'repository': repository,
|
| + 'repository_type': repository_type,
|
| 'revision': chromium_revision
|
| }
|
|
|
| return components
|
|
|
|
|
| -def GetChromiumComponentRange(chromium_revision1,
|
| - chromium_revision2,
|
| +def GetChromiumComponentRange(old_revision,
|
| + new_revision,
|
| os_platform='unix',
|
| deps_file_downloader=_GetContentOfDEPS):
|
| """Return a list of components with their revision ranges.
|
|
|
| Args:
|
| - chromium_revision1: The revision of a Chrome build.
|
| - chromium_revision2: The revision of another Chrome build.
|
| + old_revision: The old revision of a Chrome build.
|
| + new_revision: The new revision of a Chrome build.
|
| os_platform: The target platform of the Chrome build, eg. win, mac, etc.
|
| deps_file_downloader: A function that takes the chromium_revision as input,
|
| and returns the content of the DEPS file. The returned
|
| content is assumed to be trusted input and will be
|
| evaluated as python code.
|
| - """
|
| - # TODO(stgao): support git.
|
| - chromium_revision1 = int(chromium_revision1)
|
| - chromium_revision2 = int(chromium_revision2)
|
| - old_revision = str(min(chromium_revision1, chromium_revision2))
|
| - new_revision = str(max(chromium_revision1, chromium_revision2))
|
|
|
| + Returns:
|
| + A map from component path to its parsed regression and other information.
|
| + """
|
| + # Assume first revision is the old revision.
|
| old_components = GetChromiumComponents(old_revision, os_platform,
|
| deps_file_downloader)
|
| new_components = GetChromiumComponents(new_revision, os_platform,
|
| deps_file_downloader)
|
|
|
| components = {}
|
| - for path in new_components.keys():
|
| + for path in new_components:
|
| new_component = new_components[path]
|
| old_revision = None
|
| if path in old_components:
|
| @@ -184,4 +206,5 @@ def GetChromiumComponentRange(chromium_revision1,
|
|
|
| if __name__ == '__main__':
|
| import json
|
| - print json.dumps(GetChromiumComponents(284750), sort_keys=True, indent=2)
|
| + print json.dumps(GetChromiumComponents(
|
| + 'b4b1aea80b25a3b2f7952c9d95585e880421ef2b'), sort_keys=True, indent=2)
|
|
|