summaryrefslogtreecommitdiffstats
path: root/tools/scripts/version_resolver.py
diff options
context:
space:
mode:
authorAndras Becsi <andras.becsi@digia.com>2013-12-06 14:46:31 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-12-20 12:46:42 +0100
commitcc9c8e14d9a2aec6a746e889b8f597f7d89b303d (patch)
treea4440a3839a7f91678ad2413528d6595b6e54410 /tools/scripts/version_resolver.py
parentc86631a070b423ea594ca860c05b7ce7c87d82e0 (diff)
Improve init-repository.py to fetch up-to-date dependency list
This patch introduces a new mechanism to retrieve submodules. The utilities in version_resolver.py provide means to download the upstream DEPS file for a specified Chromium version. This makes it possible to check out the needed svn branches and specific revisions used for the release. We still use the git repositories found in the upstream .DEPS.git file but since it is not regularly updated after the branch-off, we try to match the release svn revisions to git shasums which is possible since each commit includes git-svn-id's. Also add a maintenance tool get_version.py which reads the Chrome release information from http://omahaproxy.appspot.com. We now pin the latest stable channel Chromium release from branch 1650 with the version number 31.0.1650.63 and a branch-off date of Sept 23rd. Change-Id: I333ada4250999b442cd244821818bace9e6136f4 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
Diffstat (limited to 'tools/scripts/version_resolver.py')
-rw-r--r--tools/scripts/version_resolver.py106
1 files changed, 106 insertions, 0 deletions
diff --git a/tools/scripts/version_resolver.py b/tools/scripts/version_resolver.py
new file mode 100644
index 000000000..94ba9e1ab
--- /dev/null
+++ b/tools/scripts/version_resolver.py
@@ -0,0 +1,106 @@
+#!/usr/bin/env python
+
+#############################################################################
+#
+# Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+# Contact: http://www.qt-project.org/legal
+#
+# This file is part of the QtWebEngine module of the Qt Toolkit.
+#
+# $QT_BEGIN_LICENSE:LGPL$
+# Commercial License Usage
+# Licensees holding valid commercial Qt licenses may use this file in
+# accordance with the commercial license agreement provided with the
+# Software or, alternatively, in accordance with the terms contained in
+# a written agreement between you and Digia. For licensing terms and
+# conditions see http://qt.digia.com/licensing. For further information
+# use the contact form at http://qt.digia.com/contact-us.
+#
+# GNU Lesser General Public License Usage
+# Alternatively, this file may be used under the terms of the GNU Lesser
+# General Public License version 2.1 as published by the Free Software
+# Foundation and appearing in the file LICENSE.LGPL included in the
+# packaging of this file. Please review the following information to
+# ensure the GNU Lesser General Public License version 2.1 requirements
+# will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+#
+# In addition, as a special exception, Digia gives you certain additional
+# rights. These rights are described in the Digia Qt LGPL Exception
+# version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+#
+# GNU General Public License Usage
+# Alternatively, this file may be used under the terms of the GNU
+# General Public License version 3.0 as published by the Free Software
+# Foundation and appearing in the file LICENSE.GPL included in the
+# packaging of this file. Please review the following information to
+# ensure the GNU General Public License version 3.0 requirements will be
+# met: http://www.gnu.org/copyleft/gpl.html.
+#
+#
+# $QT_END_LICENSE$
+#
+#############################################################################
+
+import os
+import sys
+import json
+import urllib2
+import git_submodule as GitSubmodule
+
+chromium_version = '31.0.1650.63'
+chromium_branch = '1650'
+
+json_url = 'http://omahaproxy.appspot.com/all.json'
+git_deps_url = 'http://src.chromium.org/chrome/branches/' + chromium_branch + '/src/.DEPS.git'
+base_deps_url = 'http://src.chromium.org/chrome/releases/'
+
+def currentVersion():
+ return chromium_version
+
+def currentBranch():
+ return chromium_branch
+
+def readReleaseChannels():
+ response = urllib2.urlopen(json_url)
+ raw_json = response.read().strip()
+ data = json.loads(raw_json)
+ channels = {}
+
+ for obj in data:
+ os = obj['os']
+ channels[os] = []
+ for ver in obj['versions']:
+ channels[os].append({ 'channel': ver['channel'], 'version': ver['version'], 'branch': ver['true_branch'] })
+ return channels
+
+def readSubmodules():
+ response = urllib2.urlopen(base_deps_url + chromium_version + '/DEPS')
+ svn_deps = response.read().strip()
+
+ response = urllib2.urlopen(git_deps_url)
+ git_deps = response.read().strip()
+
+ parser = GitSubmodule.DEPSParser()
+ svn_submodules = parser.parse(svn_deps)
+ git_submodules = parser.parse(git_deps)
+
+ submodule_dict = {}
+ git_dict = {}
+
+ for sub in git_submodules:
+ git_dict[sub.path] = sub
+
+ for sub in svn_submodules:
+ if 'reference_build' not in sub.path and (sub.revision or sub.shasum) and sub.path in git_dict:
+ submodule_dict[sub.path] = sub
+
+ for git in git_submodules:
+ if git.path in submodule_dict:
+ # We'll use the git repository instead of svn.
+ module = submodule_dict[git.path]
+ module.url = git.url
+ if not module.shasum:
+ # We use the git shasum as fallback.
+ module.shasum = git.shasum
+
+ return list(submodule_dict.values())