diff options
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/chromium-depot-tool | 94 | ||||
-rwxr-xr-x | scripts/v8-create-tarball | 52 | ||||
-rwxr-xr-x | scripts/v8-extract-version | 11 |
3 files changed, 157 insertions, 0 deletions
diff --git a/scripts/chromium-depot-tool b/scripts/chromium-depot-tool new file mode 100755 index 0000000..e5de0ee --- /dev/null +++ b/scripts/chromium-depot-tool @@ -0,0 +1,94 @@ +#!/usr/bin/python2 +# Copyright 2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +"""Transparent wrapper for chromium depot_tools.""" + +import httplib +import os.path +import pysvn +import re +import sys + +sys.path.insert(0, "/usr/lib/portage/pym") +import portage.output + +DAV_QUERY = '<propfind xmlns="DAV:"><allprop/></propfind>' + +CHECKOUT_DIR = os.path.expanduser('~/.chromium-depot-tools') +CHECKOUT_URL = 'http://src.chromium.org/svn/trunk/tools/depot_tools' + +eoutput = portage.output.EOutput() + +if not os.path.exists(CHECKOUT_DIR): + os.makedirs(CHECKOUT_DIR) + +svn_client = pysvn.Client() + +def IsCheckoutUpToDate(current_revision): + """ + Performs a quick version check. + + Returns true if the local depot_tools checkout is up to date. + """ + try: + conn = httplib.HTTPConnection('src.chromium.org') + conn.putrequest('PROPFIND', '/svn/!svn/vcc/default') + conn.endheaders() + conn.send(DAV_QUERY) + + response = conn.getresponse() + if response.status != 207: + eoutput.ewarn('Fast update check failed.') + return False + data = response.read() + match = re.match('.*/svn/!svn/bln/(\d+).*', data, re.DOTALL) + rev = match.group(1) + + conn = httplib.HTTPConnection('src.chromium.org') + conn.putrequest('PROPFIND', '/svn/!svn/bc/%s/trunk/tools/depot_tools' % rev) + conn.putheader('Depth', '0') + conn.endheaders() + conn.send(DAV_QUERY) + + response = conn.getresponse() + if response.status != 207: + eoutput.ewarn('Fast update check failed.') + return False + data = response.read() + match = re.match('.*/svn/!svn/ver/(\d+).*', data, re.DOTALL) + rev = int(match.group(1)) + + return rev == current_revision + except: + eoutput.ewarn('Fast update check failed.') + return False + +try: + entry = svn_client.info(CHECKOUT_DIR) +except pysvn.ClientError: + eoutput.einfo('Checking out depot_tools...') + svn_client.checkout(CHECKOUT_URL, CHECKOUT_DIR) +else: + if not IsCheckoutUpToDate(entry.commit_revision.number): + eoutput.einfo('Updating depot_tools...') + svn_client.cleanup(CHECKOUT_DIR) + svn_client.update(CHECKOUT_DIR) + +tools = { + 'drover': 'drover.py', + 'gcl': 'gcl.py', + 'gclient': 'gclient.py', +} + +argv = sys.argv[:] +argv[0] = os.path.basename(argv[0]) +if argv[0] in tools: + tool = argv[0] + argv = argv[1:] +elif len(sys.argv) >= 1: + tool = argv[1] + argv = argv[2:] + +os.execvp('python2', + ['python2', os.path.join(CHECKOUT_DIR, tools[tool])] + argv) diff --git a/scripts/v8-create-tarball b/scripts/v8-create-tarball new file mode 100755 index 0000000..8306819 --- /dev/null +++ b/scripts/v8-create-tarball @@ -0,0 +1,52 @@ +#!/usr/bin/python2 +# Copyright 2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +"""Creates a tarball containing V8 sources based on an SVN tag.""" + +import optparse +import os.path +import pysvn +import shutil +import tarfile +import tempfile + +import chromium_tools + +parser = optparse.OptionParser(usage="%prog <v8-version>") +(options, args) = parser.parse_args() +if len(args) != 1: + parser.error("Exactly one argument required: <v8-version>") + +target_name = 'v8-%s' % args[0] + +tmpdir = tempfile.mkdtemp() + +try: + checkout_dir = os.path.join(tmpdir, target_name) + os.makedirs(checkout_dir) + + checkout_url = 'http://v8.googlecode.com/svn/tags/%s' % args[0] + + svn_client = pysvn.Client() + svn_client.checkout(checkout_url, checkout_dir) + + version_contents = open(os.path.join(checkout_dir, 'src', 'version.cc')).read() + actual_version = chromium_tools.v8_extract_version(version_contents) + if actual_version != args[0]: + print 'Version info inside version.cc does not match!' + print 'Expected %s, got %s. Exiting' % (args[0], actual_version) + sys.exit(1) + + archive_name = '%s.tar.gz' % target_name + try: + archive = tarfile.open(archive_name, 'w:gz') + archive.add(checkout_dir, target_name, exclude=(lambda x: '.svn' in x)) + except: + os.remove(archive_name) + raise + finally: + archive.close() +finally: + shutil.rmtree(tmpdir) + pass diff --git a/scripts/v8-extract-version b/scripts/v8-extract-version new file mode 100755 index 0000000..277df29 --- /dev/null +++ b/scripts/v8-extract-version @@ -0,0 +1,11 @@ +#!/usr/bin/python2 +# Copyright 2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +"""Extracts V8 version number based on given version.cc file.""" + +import sys + +import chromium_tools + +print chromium_tools.v8_extract_version(open(sys.argv[1]).read()) |