diff options
Diffstat (limited to 'WebKitTools/wx/build/build_utils.py')
-rw-r--r-- | WebKitTools/wx/build/build_utils.py | 188 |
1 files changed, 0 insertions, 188 deletions
diff --git a/WebKitTools/wx/build/build_utils.py b/WebKitTools/wx/build/build_utils.py deleted file mode 100644 index a6962e2..0000000 --- a/WebKitTools/wx/build/build_utils.py +++ /dev/null @@ -1,188 +0,0 @@ -# Copyright (C) 2009 Kevin Ollivier All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY -# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# Helper functions for the WebKit build. - -import commands -import glob -import os -import platform -import re -import shutil -import sys -import urllib -import urlparse - -def get_output(command): - """ - Windows-compatible function for getting output from a command. - """ - if sys.platform.startswith('win'): - f = os.popen(command) - return f.read().strip() - else: - return commands.getoutput(command) - -def get_excludes(root, patterns): - """ - Get a list of exclude patterns going down several dirs. - TODO: Make this fully recursive. - """ - excludes = [] - - for pattern in patterns: - subdir_pattern = os.sep + '*' - for subdir in [subdir_pattern, subdir_pattern*2, subdir_pattern*3]: - adir = root + subdir + os.sep + pattern - files = glob.glob(adir) - for afile in files: - excludes.append(os.path.basename(afile)) - - return excludes - -def get_dirs_for_features(root, features, dirs): - """ - Find which directories to include in the list of build dirs based upon the - enabled port(s) and features. - """ - outdirs = dirs - for adir in dirs: - for feature in features: - relpath = os.path.join(adir, feature) - featuredir = os.path.join(root, relpath) - if os.path.exists(featuredir) and not relpath in outdirs: - outdirs.append(relpath) - - return outdirs - -def download_if_newer(url, destdir): - """ - Checks if the file on the server is newer than the one in the user's tree, - and if so, downloads it. - - Returns the filename of the downloaded file if downloaded, or None if - the existing file matches the one on the server. - """ - obj = urlparse.urlparse(url) - filename = os.path.basename(obj.path) - destfile = os.path.join(destdir, filename) - - urlobj = urllib.urlopen(url) - size = long(urlobj.info().getheader('Content-Length')) - - def download_callback(downloaded, block_size, total_size): - downloaded = block_size * downloaded - if downloaded > total_size: - downloaded = total_size - sys.stdout.write('%s %d of %d bytes downloaded\r' % (filename, downloaded, total_size)) - - # NB: We don't check modified time as Python doesn't yet handle timezone conversion - # properly when converting strings to time objects. - if not os.path.exists(destfile) or os.path.getsize(destfile) != size: - urllib.urlretrieve(url, destfile, download_callback) - print '' - return destfile - - return None - -def update_wx_deps(conf, wk_root, msvc_version='msvc2008'): - """ - Download and update tools needed to build the wx port. - """ - import Logs - Logs.info('Ensuring wxWebKit dependencies are up-to-date.') - - wklibs_dir = os.path.join(wk_root, 'WebKitLibraries') - waf = download_if_newer('http://wxwebkit.wxcommunity.com/downloads/deps/waf', os.path.join(wk_root, 'WebKitTools', 'wx')) - if waf: - # TODO: Make the build restart itself after an update. - Logs.warn('Build system updated, please restart build.') - sys.exit(1) - - # since this module is still experimental - wxpy_dir = os.path.join(wk_root, 'WebKit', 'wx', 'bindings', 'python') - swig_module = download_if_newer('http://wxwebkit.wxcommunity.com/downloads/deps/swig.py.txt', wxpy_dir) - if swig_module: - shutil.copy(os.path.join(wxpy_dir, 'swig.py.txt'), os.path.join(wxpy_dir, 'swig.py')) - - if sys.platform.startswith('win'): - Logs.info('downloading deps package') - archive = download_if_newer('http://wxwebkit.wxcommunity.com/downloads/deps/wxWebKitDeps-%s.zip' % msvc_version, wklibs_dir) - if archive and os.path.exists(archive): - os.system('unzip -o %s -d %s' % (archive, os.path.join(wklibs_dir, msvc_version))) - - elif sys.platform.startswith('darwin'): - # export the right compiler for building the dependencies - if platform.release().startswith('10'): # Snow Leopard - os.environ['CC'] = conf.env['CC'][0] - os.environ['CXX'] = conf.env['CXX'][0] - os.system('%s/WebKitTools/wx/install-unix-extras' % wk_root) - -def includeDirsForSources(sources): - include_dirs = [] - for group in sources: - for source in group: - dirname = os.path.dirname(source) - if not dirname in include_dirs: - include_dirs.append(dirname) - - return include_dirs - -def flattenSources(sources): - flat_sources = [] - for group in sources: - flat_sources.extend(group) - - return flat_sources - -def git_branch_name(): - try: - branches = commands.getoutput("git branch --no-color") - match = re.search('^\* (.*)', branches, re.MULTILINE) - if match: - return ".%s" % match.group(1) - except: - pass - - return "" - -def get_config(wk_root): - config_file = os.path.join(wk_root, 'WebKitBuild', 'Configuration') - config = 'Debug' - - if os.path.exists(config_file): - config = open(config_file).read() - - return config - -def svn_revision(): - if os.system("git-svn info") == 0: - info = commands.getoutput("git-svn info ../..") - else: - info = commands.getoutput("svn info") - - for line in info.split("\n"): - if line.startswith("Revision: "): - return line.replace("Revision: ", "").strip() - - return "" |