summaryrefslogtreecommitdiffstats
path: root/tools/scripts/version_resolver.py
diff options
context:
space:
mode:
authorAndras Becsi <andras.becsi@digia.com>2014-03-12 14:20:37 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-20 16:09:41 +0100
commit5613f356635e810dcc1e3849011bec5764095963 (patch)
tree27edf11183da0edb6bbe85e6f6a095184720c933 /tools/scripts/version_resolver.py
parent61b2bfac4566061ee425fb5983b2b9504ccc7b80 (diff)
Improve sanity checking of the parsed DEPS submodules
This is in preparation of updating to the new stable branch 1750 (Chromium version 33.0.1750.x) Move the sanityCheckModules function to version_resolver.py and check if the parsed svn refs exist in the remote git repository. If they do not exist fall back to the git shasum we parsed from the .DEPS.git file. This patch also removes the unused parseFile function. Change-Id: Ie0c11fdd9326ee87e9dcc670c0a7c26f9a498fd5 Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
Diffstat (limited to 'tools/scripts/version_resolver.py')
-rw-r--r--tools/scripts/version_resolver.py33
1 files changed, 32 insertions, 1 deletions
diff --git a/tools/scripts/version_resolver.py b/tools/scripts/version_resolver.py
index 94ba9e1a..b52b8f50 100644
--- a/tools/scripts/version_resolver.py
+++ b/tools/scripts/version_resolver.py
@@ -42,6 +42,7 @@
#############################################################################
import os
+import subprocess
import sys
import json
import urllib2
@@ -73,6 +74,36 @@ def readReleaseChannels():
channels[os].append({ 'channel': ver['channel'], 'version': ver['version'], 'branch': ver['true_branch'] })
return channels
+def sanityCheckModules(submodules):
+ submodule_dict = {}
+ sys.stdout.write('\nverifying submodule refs.')
+ for submodule in submodules:
+ sys.stdout.flush()
+ if submodule.path in submodule_dict:
+ prev_module = submodule_dict[submodule.path]
+ # We might have to create our own DEPS file if different platforms use different branches,
+ # but for now it should be safe to select the latest revision from the requirements.
+ if submodule.shasum or prev_module.revision >= submodule.revision:
+ continue
+ if prev_module.ref != submodule.ref:
+ # Ignore for Android which might lag behind.
+ if submodule.os == 'android':
+ continue
+ sys.exit('ERROR: branch mismatch for ' + submodule.path + '(' + prev_module.ref + ' vs ' + submodule.ref + ')')
+ print('Duplicate submodule ' + submodule.path + '. Using latest revison ' + str(submodule.revision) + '.')
+ if submodule.ref:
+ sys.stdout.write('.')
+ result = subprocess.check_output(['git', 'ls-remote', submodule.url, submodule.ref])
+ # Fallback to git shasum if the parsed remote ref does not exist in the git repository.
+ if submodule.ref not in result:
+ submodule.ref = submodule.revision = ''
+ if not submodule.shasum:
+ sys.exit('\nERROR: No valid remote found!')
+ sys.stdout.flush()
+ submodule_dict[submodule.path] = submodule
+ print('done.\n')
+ return list(submodule_dict.values())
+
def readSubmodules():
response = urllib2.urlopen(base_deps_url + chromium_version + '/DEPS')
svn_deps = response.read().strip()
@@ -103,4 +134,4 @@ def readSubmodules():
# We use the git shasum as fallback.
module.shasum = git.shasum
- return list(submodule_dict.values())
+ return sanityCheckModules(submodule_dict.values())