| Index: tools/export_tarball/export_v8_tarball.py
|
| diff --git a/tools/export_tarball/export_v8_tarball.py b/tools/export_tarball/export_v8_tarball.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..971559193f7d1261a4f965c62d6cfb029fb793e9
|
| --- /dev/null
|
| +++ b/tools/export_tarball/export_v8_tarball.py
|
| @@ -0,0 +1,101 @@
|
| +#!/usr/bin/python
|
| +# Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +"""
|
| +This tool creates a tarball with V8 sources, but without .svn directories.
|
| +
|
| +This allows easy packaging of V8, synchronized with browser releases.
|
| +
|
| +Example usage:
|
| +
|
| +export_v8_tarball.py /foo/bar
|
| +
|
| +The above will create file /foo/bar/v8-VERSION.tar.bz2 if it doesn't exist.
|
| +"""
|
| +
|
| +import optparse
|
| +import os
|
| +import re
|
| +import subprocess
|
| +import sys
|
| +import tarfile
|
| +
|
| +_V8_MAJOR_VERSION_PATTERN = re.compile(r'#define\s+MAJOR_VERSION\s+(.*)')
|
| +_V8_MINOR_VERSION_PATTERN = re.compile(r'#define\s+MINOR_VERSION\s+(.*)')
|
| +_V8_BUILD_NUMBER_PATTERN = re.compile(r'#define\s+BUILD_NUMBER\s+(.*)')
|
| +_V8_PATCH_LEVEL_PATTERN = re.compile(r'#define\s+PATCH_LEVEL\s+(.*)')
|
| +
|
| +_V8_PATTERNS = [
|
| + _V8_MAJOR_VERSION_PATTERN,
|
| + _V8_MINOR_VERSION_PATTERN,
|
| + _V8_BUILD_NUMBER_PATTERN,
|
| + _V8_PATCH_LEVEL_PATTERN]
|
| +
|
| +def GetV8Version(v8_directory):
|
| + """
|
| + Returns version number as string based on the string
|
| + contents of version.cc file.
|
| + """
|
| + with open(os.path.join(v8_directory, 'src', 'version.cc')) as version_file:
|
| + version_contents = version_file.read()
|
| +
|
| + version_components = []
|
| + for pattern in _V8_PATTERNS:
|
| + version_components.append(pattern.search(version_contents).group(1).strip())
|
| +
|
| + if version_components[len(version_components) - 1] == '0':
|
| + version_components.pop()
|
| +
|
| + return '.'.join(version_components)
|
| +
|
| +def GetSourceDirectory():
|
| + return os.path.realpath(
|
| + os.path.join(os.path.dirname(__file__), '..', '..', '..', 'src'))
|
| +
|
| +def GetV8Directory():
|
| + return os.path.join(GetSourceDirectory(), 'v8')
|
| +
|
| +# Workaround lack of the exclude parameter in add method in python-2.4.
|
| +# TODO(phajdan.jr): remove the workaround when it's not needed on the bot.
|
| +class MyTarFile(tarfile.TarFile):
|
| + def add(self, name, arcname=None, recursive=True, exclude=None):
|
| + head, tail = os.path.split(name)
|
| + if tail in ('.svn', '.git'):
|
| + return
|
| +
|
| + tarfile.TarFile.add(self, name, arcname=arcname, recursive=recursive)
|
| +
|
| +def main(argv):
|
| + parser = optparse.OptionParser()
|
| + options, args = parser.parse_args(argv)
|
| +
|
| + if len(args) != 1:
|
| + print 'You must provide only one argument: output file directory'
|
| + return 1
|
| +
|
| + v8_directory = GetV8Directory()
|
| + if not os.path.exists(v8_directory):
|
| + print 'Cannot find the v8 directory.'
|
| + return 1
|
| +
|
| + v8_version = GetV8Version(v8_directory)
|
| + print 'Packaging V8 version %s...' % v8_version
|
| + output_basename = 'v8-%s' % v8_version
|
| + output_fullname = os.path.join(args[0], output_basename + '.tar.bz2')
|
| +
|
| + if os.path.exists(output_fullname):
|
| + print 'Already packaged, exiting.'
|
| + return 0
|
| +
|
| + archive = MyTarFile.open(output_fullname, 'w:bz2')
|
| + try:
|
| + archive.add(v8_directory, arcname=output_basename)
|
| + finally:
|
| + archive.close()
|
| +
|
| + return 0
|
| +
|
| +if __name__ == '__main__':
|
| + sys.exit(main(sys.argv[1:]))
|
|
|