 6241beefa2
			
		
	
	6241beefa2
	
	
	
		
			
			- Sync Chrome's DEPS to chromium_deps/, and use the From() keyword to pull the correct revisions from it, rather than having to manually enter them. - This idea is borrowed from the WebKit DEPS: http://trac.webkit.org/browser/trunk/Source/WebKit/chromium/DEPS - Fix update.py's DEPS parsing to handle From(). - Roll Chrome 120526:122775. - Organize the deps alphabetically. - Sync the in-tree gold linker, which is now required due to a change in the linker flags. - Add the new deps to .gitignore. BUG= TEST=build on all platforms Review URL: https://webrtc-codereview.appspot.com/401004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@1755 4adac7df-926f-26a2-2b94-8c16560cd09d
		
			
				
	
	
		
			132 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			132 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env python
 | |
| # Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
 | |
| #
 | |
| # Use of this source code is governed by a BSD-style license
 | |
| # that can be found in the LICENSE file in the root of the source
 | |
| # tree. An additional intellectual property rights grant can be found
 | |
| # in the file PATENTS.  All contributing project authors may
 | |
| # be found in the AUTHORS file in the root of the source tree.
 | |
| 
 | |
| __author__ = 'kjellander@webrtc.org (Henrik Kjellander)'
 | |
| 
 | |
| """Downloads WebRTC resources files from a remote host."""
 | |
| 
 | |
| from optparse import OptionParser
 | |
| from urlparse import urljoin
 | |
| import os
 | |
| import shutil
 | |
| import sys
 | |
| import tarfile
 | |
| import tempfile
 | |
| import urllib2
 | |
| 
 | |
| 
 | |
| def main():
 | |
|   """
 | |
|   Downloads WebRTC resources files from a remote host.
 | |
| 
 | |
|   This script will download WebRTC resource files used for testing, like audio
 | |
|   and video files. It will check the current version in the DEPS file and
 | |
|   compare it with the one downloaded (kept in a text file in the download dir).
 | |
|   If the DEPS version is different than the one downloaded, the correct version
 | |
|   will be downloaded.
 | |
|   """
 | |
|   # Constants.
 | |
|   deps_key = 'webrtc_resources_revision'
 | |
|   remote_url_base = 'http://commondatastorage.googleapis.com/webrtc-resources/'
 | |
|   version_filename = 'webrtc-resources-version'
 | |
|   filename_prefix = 'webrtc-resources-'
 | |
|   extension = '.tgz'
 | |
| 
 | |
|   # Variables used by the script.
 | |
|   project_root_dir = os.path.normpath(sys.path[0] + '/../../')
 | |
|   deps_file = os.path.join(project_root_dir, 'DEPS')
 | |
|   downloads_dir = os.path.join(project_root_dir, 'resources')
 | |
|   current_version_file = os.path.join(downloads_dir, version_filename)
 | |
| 
 | |
|   # Ensure the downloads dir is created.
 | |
|   if not os.path.isdir(downloads_dir):
 | |
|     os.mkdir(downloads_dir)
 | |
| 
 | |
|   # Define and parse arguments.
 | |
|   parser = OptionParser()
 | |
|   parser.add_option('-f', '--force', action='store_true', dest='force',
 | |
|                     help='forces download and removes all existing resources.')
 | |
|   (options, unused_args) = parser.parse_args()
 | |
| 
 | |
|   # Check if we have an existing version already downloaded.
 | |
|   current_version = 0
 | |
|   if os.path.isfile(current_version_file):
 | |
|     f = open(current_version_file)
 | |
|     current_version = int(f.read())
 | |
|     f.close()
 | |
|     print 'Found downloaded resources: version: %s' % current_version
 | |
| 
 | |
|   # Check the DEPS file for the latest version number.
 | |
|   deps_vars = EvalDepsFile(deps_file)['vars']
 | |
|   latest_version = int(deps_vars[deps_key])
 | |
|   print 'Version in DEPS file: %d' % latest_version
 | |
| 
 | |
|   # Download archive if forced or DEPS version is different than our current.
 | |
|   if latest_version != current_version or options.force:
 | |
|     temp_dir = tempfile.mkdtemp(prefix='webrtc-resources-')
 | |
|     archive_name = '%s%s%s' % (filename_prefix, latest_version, extension)
 | |
|     remote_archive_url = urljoin(remote_url_base, archive_name)
 | |
|     # Download into the temporary directory with display of progress, inspired
 | |
|     # by the Stack Overflow post at http://goo.gl/JIrbo
 | |
|     temp_file = os.path.join(temp_dir, archive_name)
 | |
|     print 'Downloading: %s' % remote_archive_url
 | |
|     u = urllib2.urlopen(remote_archive_url)
 | |
|     f = open(temp_file, 'wb')
 | |
|     meta = u.info()
 | |
|     file_size = int(meta.getheaders('Content-Length')[0])
 | |
|     print 'Progress: %s bytes: %s' % (archive_name, file_size)
 | |
| 
 | |
|     file_size_dl = 0
 | |
|     block_size = 65536
 | |
|     while True:
 | |
|       file_buffer = u.read(block_size)
 | |
|       if not file_buffer:
 | |
|         break
 | |
|       file_size_dl += len(file_buffer)
 | |
|       f.write(file_buffer)
 | |
|       status = r'%10d  [%3.2f%%]' % (file_size_dl,
 | |
|                                      file_size_dl * 100. / file_size)
 | |
|       status += chr(8) * (len(status) + 1)
 | |
|       print status,
 | |
|     print
 | |
|     f.close()
 | |
| 
 | |
|     # Clean up the existing resources dir.
 | |
|     print 'Removing old resources in %s' % downloads_dir
 | |
|     shutil.rmtree(downloads_dir)
 | |
|     os.mkdir(downloads_dir)
 | |
| 
 | |
|     # Write the downloaded version to a text file in the resources dir to avoid
 | |
|     # re-download of the same version in the future.
 | |
|     new_version_file = os.path.join(downloads_dir, version_filename)
 | |
|     f = open(new_version_file, 'w')
 | |
|     f.write('%d' % latest_version)
 | |
|     f.close()
 | |
| 
 | |
|     # Extract the archive.
 | |
|     archive = tarfile.open(temp_file, 'r:gz')
 | |
|     archive.extractall(downloads_dir)
 | |
|     archive.close()
 | |
|     print 'Extracted resource files into %s' % downloads_dir
 | |
|     # Clean up the temp dir.
 | |
|     shutil.rmtree(temp_dir)
 | |
|   else:
 | |
|     print 'Already have correct version: %s' % current_version
 | |
| 
 | |
| 
 | |
| def EvalDepsFile(path):
 | |
|   scope = {'Var': lambda name: scope['vars'][name],
 | |
|            'File': lambda name: name,
 | |
|            'From': lambda deps, definition: deps}
 | |
|   execfile(path, {}, scope)
 | |
|   return scope
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|   main()
 |