summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/chromium-depot-tool94
-rwxr-xr-xscripts/v8-create-tarball52
-rwxr-xr-xscripts/v8-extract-version11
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())