Update testing tools (AppRTC, Go) to new versions
App engine is included in the AppRTC archive, so the separate archive is not needed anymore. Mercurial is no longer necessary to include but it will be required during the vendoring step when the prebuilt archives are update. The download/build scripts have been simplified accordingly. The video quality test has been updated to work with the new appengine. BUG=webrtc:7602 Review-Url: https://codereview.webrtc.org/2882073003 Cr-Commit-Position: refs/heads/master@{#18162}
This commit is contained in:
@ -19,7 +19,6 @@ It assumes you have a Android device plugged in.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import atexit
|
||||
import logging
|
||||
import os
|
||||
import shutil
|
||||
@ -32,13 +31,6 @@ import time
|
||||
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
SRC_DIR = os.path.normpath(os.path.join(SCRIPT_DIR, os.pardir, os.pardir,
|
||||
os.pardir))
|
||||
WEBRTC_DEPS_INSTRUCTIONS = """Please add a solution to your .gclient file like
|
||||
this and run gclient sync:
|
||||
{
|
||||
"name": "webrtc.DEPS",
|
||||
"url": "https://chromium.googlesource.com/chromium/deps/webrtc/webrtc.DEPS",
|
||||
},
|
||||
"""
|
||||
|
||||
|
||||
class Error(Exception):
|
||||
@ -62,7 +54,6 @@ def _RunCommandWithOutput(argv, cwd=SRC_DIR, **kwargs):
|
||||
def _RunBackgroundCommand(argv, cwd=SRC_DIR):
|
||||
logging.info('Running %r', argv)
|
||||
process = subprocess.Popen(argv, cwd=cwd)
|
||||
atexit.register(process.terminate)
|
||||
time.sleep(0.5)
|
||||
status = process.poll()
|
||||
if status: # is not None or 0
|
||||
@ -108,8 +99,14 @@ def main():
|
||||
toolchain_dir = os.path.join(tools_dir, 'video_quality_toolchain')
|
||||
|
||||
# Download ffmpeg and zxing.
|
||||
download_script = os.path.join(tools_dir, 'download_tools.py')
|
||||
_RunCommand([sys.executable, download_script, toolchain_dir])
|
||||
download_tools_script = os.path.join(tools_dir, 'download_tools.py')
|
||||
_RunCommand([sys.executable, download_tools_script, toolchain_dir])
|
||||
|
||||
testing_tools_dir = os.path.join(SRC_DIR, 'webrtc', 'tools', 'testing')
|
||||
|
||||
# Download, extract and build AppRTC.
|
||||
setup_apprtc_script = os.path.join(testing_tools_dir, 'setup_apprtc.py')
|
||||
_RunCommand([sys.executable, setup_apprtc_script, temp_dir])
|
||||
|
||||
# Select an Android device in case multiple are connected
|
||||
for line in _RunCommandWithOutput([adb_path, 'devices']).splitlines():
|
||||
@ -119,31 +116,29 @@ def main():
|
||||
else:
|
||||
raise VideoQualityTestError('Cannot find any connected Android device.')
|
||||
|
||||
processes = []
|
||||
try:
|
||||
# Start AppRTC Server
|
||||
dev_appserver = os.path.join(SRC_DIR, 'out', 'apprtc', 'google_appengine',
|
||||
'dev_appserver.py')
|
||||
if not os.path.isfile(dev_appserver):
|
||||
raise VideoQualityTestError('Cannot find %s.\n%s' %
|
||||
(dev_appserver, WEBRTC_DEPS_INSTRUCTIONS))
|
||||
appengine_dir = os.path.join(SRC_DIR, 'out', 'apprtc', 'out', 'app_engine')
|
||||
_RunBackgroundCommand(['python', dev_appserver, appengine_dir,
|
||||
dev_appserver = os.path.join(temp_dir, 'apprtc', 'temp', 'google-cloud-sdk',
|
||||
'bin', 'dev_appserver.py')
|
||||
appengine_dir = os.path.join(temp_dir, 'apprtc', 'out', 'app_engine')
|
||||
processes.append(_RunBackgroundCommand([
|
||||
'python', dev_appserver, appengine_dir,
|
||||
'--port=9999', '--admin_port=9998',
|
||||
'--skip_sdk_update_check', '--clear_datastore=yes'])
|
||||
'--skip_sdk_update_check', '--clear_datastore=yes']))
|
||||
|
||||
# Start Collider
|
||||
collider_path = os.path.join(SRC_DIR, 'out', 'go-workspace', 'bin',
|
||||
'collidermain')
|
||||
if not os.path.isfile(collider_path):
|
||||
raise VideoQualityTestError('Cannot find %s.\n%s' %
|
||||
(collider_path, WEBRTC_DEPS_INSTRUCTIONS))
|
||||
_RunBackgroundCommand([collider_path, '-tls=false',
|
||||
'-port=8089', '-room-server=http://localhost:9999'])
|
||||
collider_path = os.path.join(temp_dir, 'collider', 'collidermain')
|
||||
processes.append(_RunBackgroundCommand([
|
||||
collider_path, '-tls=false', '-port=8089',
|
||||
'-room-server=http://localhost:9999']))
|
||||
|
||||
# Start adb reverse forwarder
|
||||
reverseforwarder_path = os.path.join(
|
||||
SRC_DIR, 'build', 'android', 'adb_reverse_forwarder.py')
|
||||
_RunBackgroundCommand([reverseforwarder_path, '--device', android_device,
|
||||
'9999', '9999', '8089', '8089'])
|
||||
processes.append(_RunBackgroundCommand([
|
||||
reverseforwarder_path, '--device', android_device,
|
||||
'9999', '9999', '8089', '8089']))
|
||||
|
||||
# Run the Espresso code.
|
||||
test_script = os.path.join(build_dir_android,
|
||||
@ -173,7 +168,8 @@ def main():
|
||||
ConvertVideo(reference_video, reference_video_yuv)
|
||||
|
||||
# Run compare script.
|
||||
compare_script = os.path.join(SRC_DIR, 'webrtc', 'tools', 'compare_videos.py')
|
||||
compare_script = os.path.join(SRC_DIR, 'webrtc', 'tools',
|
||||
'compare_videos.py')
|
||||
zxing_path = os.path.join(toolchain_dir, 'linux', 'zxing')
|
||||
|
||||
# The frame_analyzer binary should be built for local computer and not for
|
||||
@ -191,9 +187,16 @@ def main():
|
||||
'--test_video', test_video_yuv, '--yuv_frame_width', str(frame_width),
|
||||
'--yuv_frame_height', str(frame_height),
|
||||
'--stats_file_ref', stats_file_ref,
|
||||
'--stats_file_test', stats_file_test, '--frame_analyzer', frame_analyzer,
|
||||
'--stats_file_test', stats_file_test,
|
||||
'--frame_analyzer', frame_analyzer,
|
||||
'--ffmpeg_path', ffmpeg_path, '--zxing_path', zxing_path])
|
||||
|
||||
finally:
|
||||
for process in processes:
|
||||
if process:
|
||||
process.terminate()
|
||||
process.wait()
|
||||
|
||||
shutil.rmtree(temp_dir)
|
||||
|
||||
|
||||
|
||||
38
webrtc/tools/testing/README.md
Normal file
38
webrtc/tools/testing/README.md
Normal file
@ -0,0 +1,38 @@
|
||||
This directory contains prebuilt tools used during end-to-end tests.
|
||||
They will be downloaded by their SHA1 hash, and are not meant to be checked in.
|
||||
|
||||
Updating prebuilt_apprtc.zip:
|
||||
|
||||
- Follow AppRTC instructions:
|
||||
- `git clone https://github.com/webrtc/apprtc`
|
||||
- Install NodeJS:
|
||||
- Download <https://nodejs.org/> and extract it
|
||||
- `export PATH="$(pwd)/node-v6.10.3-linux-x64/bin:$PATH"`
|
||||
- `cd apprtc`
|
||||
- `npm install`
|
||||
- `export PATH="$(pwd)/node_modules/.bin:$PATH"`
|
||||
- `pip install --user --upgrade pip setuptools` - needed only on old systems
|
||||
- `grunt`
|
||||
- Vendor collider's dependencies:
|
||||
- `ln -s "$(pwd)/src/collider" src/src`
|
||||
- `GOPATH="$(pwd)/src" go get -d collidermain`
|
||||
- `rm src/src`
|
||||
- Remove unneeded files:
|
||||
- `rm -rf .git node_modules browsers`
|
||||
- `zip -r prebuilt_apprtc.zip apprtc/`
|
||||
- `mv prebuilt_apprtc.zip webrtc/src/webrtc/tools/testing/prebuilt_apprtc.zip`
|
||||
|
||||
Updating golang/*:
|
||||
|
||||
- Go to <https://golang.org/dl/>
|
||||
- Download these files:
|
||||
- go*.linux-amd64.tar.gz -> golang/linux/go.tar.gz
|
||||
- go*.darwin-amd64.tar.gz -> golang/mac/go.tar.gz
|
||||
- go*.windows-amd64.zip -> golang/windows/go.zip
|
||||
|
||||
After updating the archives:
|
||||
|
||||
- `cd webrtc/src/webrtc/tools/testing`
|
||||
- For each updated archive:
|
||||
- `upload_to_google_storage.py file.zip --bucket=chromium-webrtc-resources`
|
||||
- `git commit -a && git cl upload`
|
||||
@ -9,11 +9,11 @@
|
||||
|
||||
"""Builds the AppRTC collider using the golang toolchain.
|
||||
|
||||
The golang toolchain is downloaded by download_golang.py. We use that here
|
||||
The golang toolchain is downloaded by download_apprtc.py. We use that here
|
||||
to build the AppRTC collider server.
|
||||
|
||||
This script needs to know the path to the 'src' directory in apprtc, the
|
||||
root directory of 'go', the root directory of 'hg' and the output_dir.
|
||||
root directory of 'go' and the output_dir.
|
||||
"""
|
||||
|
||||
import os
|
||||
@ -24,35 +24,30 @@ import sys
|
||||
import utils
|
||||
|
||||
|
||||
USAGE_STR = "Usage: {} <apprtc_src_dir> <go_dir> <hg_dir> <output_dir>"
|
||||
USAGE_STR = "Usage: {} <apprtc_src_dir> <go_dir> <output_dir>"
|
||||
|
||||
|
||||
def main(argv):
|
||||
if len(argv) != 5:
|
||||
if len(argv) != 4:
|
||||
return USAGE_STR.format(argv[0])
|
||||
|
||||
apprtc_dir = argv[1]
|
||||
go_root_dir = argv[2]
|
||||
mercurial_dir = argv[3]
|
||||
golang_workspace = argv[4]
|
||||
apprtc_dir = os.path.abspath(argv[1])
|
||||
go_root_dir = os.path.abspath(argv[2])
|
||||
golang_workspace = os.path.abspath(argv[3])
|
||||
|
||||
utils.RemoveDirectory(golang_workspace)
|
||||
|
||||
golang_workspace_src = os.path.join(golang_workspace, 'src')
|
||||
|
||||
collider_dir = os.path.join(apprtc_dir, 'collider')
|
||||
shutil.copytree(collider_dir, golang_workspace_src,
|
||||
ignore=shutil.ignore_patterns('.svn', '.git'))
|
||||
shutil.copytree(collider_dir, golang_workspace_src)
|
||||
|
||||
golang_binary = 'go%s' % ('.exe' if utils.GetPlatform() == 'win' else '')
|
||||
golang_path = os.path.join(go_root_dir, 'bin', golang_binary)
|
||||
|
||||
golang_env = os.environ.copy()
|
||||
golang_env['GOROOT'] = go_root_dir
|
||||
golang_env['GOPATH'] = os.path.abspath(golang_workspace)
|
||||
golang_env['PATH'] += os.pathsep + mercurial_dir
|
||||
subprocess.check_call([golang_path, 'get', 'collidermain'],
|
||||
env=golang_env)
|
||||
golang_env['GOPATH'] = golang_workspace
|
||||
collider_exec = os.path.join(golang_workspace, 'collidermain')
|
||||
subprocess.check_call([golang_path, 'build', '-o', collider_exec,
|
||||
'collidermain'], env=golang_env)
|
||||
@ -1,47 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright (c) 2017 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.
|
||||
|
||||
"""Builds a local mercurial (hg) copy.
|
||||
|
||||
This is used by the go toolchain.
|
||||
"""
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
import utils
|
||||
|
||||
|
||||
def main(argv):
|
||||
if len(argv) != 2:
|
||||
return 'Usage: %s <mercurial_dir>' % argv[0]
|
||||
|
||||
mercurial_dir = argv[1]
|
||||
if not os.path.exists(mercurial_dir):
|
||||
return 'Expected mercurial at {}.'.format(mercurial_dir)
|
||||
|
||||
os.chdir(mercurial_dir)
|
||||
|
||||
if utils.GetPlatform() == 'win':
|
||||
subprocess.check_call(['python', 'setup.py', '--pure', 'build_py', '-c',
|
||||
'-d', '.', 'build_ext',
|
||||
'-i', 'build_mo', '--force'])
|
||||
with open('hg.bat', 'w') as put_hg_in_path:
|
||||
# Write a hg.bat since the go toolchain expects to find something called
|
||||
# 'hg' in the path, but Windows only recognizes executables ending with
|
||||
# an extension in PATHEXT. Writing hg.bat effectively makes 'hg' callable
|
||||
# if the mercurial folder is in PATH.
|
||||
mercurial_path = os.path.abspath('hg')
|
||||
put_hg_in_path.write('python %s %%*' % mercurial_path)
|
||||
else:
|
||||
subprocess.check_call(['make', 'local'])
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main(sys.argv))
|
||||
58
webrtc/tools/testing/download_apprtc.py
Executable file
58
webrtc/tools/testing/download_apprtc.py
Executable file
@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright (c) 2017 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.
|
||||
|
||||
"""Downloads prebuilt AppRTC and Go from WebRTC storage and unpacks it.
|
||||
|
||||
Requires that depot_tools is installed and in the PATH.
|
||||
|
||||
It downloads compressed files in the directory where the script lives.
|
||||
This is because the precondition is that the script lives in the same
|
||||
directory of the .sha1 files.
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
import utils
|
||||
|
||||
|
||||
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
|
||||
def _GetGoArchivePathForPlatform():
|
||||
archive_extension = 'zip' if utils.GetPlatform() == 'win' else 'tar.gz'
|
||||
return os.path.join(utils.GetPlatform(), 'go.%s' % archive_extension)
|
||||
|
||||
|
||||
def main(argv):
|
||||
if len(argv) > 2:
|
||||
return 'Usage: %s [output_dir]' % argv[0]
|
||||
|
||||
output_dir = os.path.abspath(argv[1]) if len(argv) > 1 else None
|
||||
|
||||
apprtc_zip_path = os.path.join(SCRIPT_DIR, 'prebuilt_apprtc.zip')
|
||||
if os.path.isfile(apprtc_zip_path + '.sha1'):
|
||||
utils.DownloadFilesFromGoogleStorage(SCRIPT_DIR, auto_platform=False)
|
||||
|
||||
if output_dir is not None:
|
||||
utils.RemoveDirectory(os.path.join(output_dir, 'apprtc'))
|
||||
utils.UnpackArchiveTo(apprtc_zip_path, output_dir)
|
||||
|
||||
golang_path = os.path.join(SCRIPT_DIR, 'golang')
|
||||
golang_zip_path = os.path.join(golang_path, _GetGoArchivePathForPlatform())
|
||||
if os.path.isfile(golang_zip_path + '.sha1'):
|
||||
utils.DownloadFilesFromGoogleStorage(golang_path)
|
||||
|
||||
if output_dir is not None:
|
||||
utils.RemoveDirectory(os.path.join(output_dir, 'go'))
|
||||
utils.UnpackArchiveTo(golang_zip_path, output_dir)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main(sys.argv))
|
||||
@ -1,75 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright (c) 2017 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.
|
||||
|
||||
"""Downloads the appengine SDK from WebRTC storage and unpacks it.
|
||||
|
||||
Requires that depot_tools is installed and in the PATH.
|
||||
|
||||
It downloads compressed files in the directory where the script lives.
|
||||
This is because the precondition is that the script lives in the same
|
||||
directory of the .sha1 files.
|
||||
"""
|
||||
|
||||
import glob
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
|
||||
import utils
|
||||
|
||||
|
||||
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
def _DownloadResources(dir_to_scan_for_sha1):
|
||||
print 'Downloading files in %s...' % dir_to_scan_for_sha1
|
||||
|
||||
extension = 'bat' if 'win32' in sys.platform else 'py'
|
||||
cmd = ['download_from_google_storage.%s' % extension,
|
||||
'--bucket=chromium-webrtc-resources',
|
||||
'--directory', dir_to_scan_for_sha1]
|
||||
subprocess.check_call(cmd)
|
||||
|
||||
|
||||
def _StripVersionNumberFromMercurialFolder(output_dir):
|
||||
unpacked_name = glob.glob(os.path.join(output_dir, 'mercurial*'))
|
||||
assert len(unpacked_name) == 1, 'Should have precisely one mercurial!'
|
||||
os.rename(unpacked_name[0], os.path.join(output_dir, 'mercurial'))
|
||||
|
||||
|
||||
def main(argv):
|
||||
if len(argv) == 1:
|
||||
return 'Usage: %s <output_dir>' % argv[0]
|
||||
|
||||
output_dir = argv[1]
|
||||
appengine_zip_path = os.path.join(SCRIPT_DIR, 'google-appengine.zip')
|
||||
old_appengine_sha1 = utils.ComputeSHA1(appengine_zip_path)
|
||||
|
||||
mercurial_tar_path = os.path.join(SCRIPT_DIR, 'mercurial-src.tar.gz')
|
||||
old_mercurial_sha1 = utils.ComputeSHA1(mercurial_tar_path)
|
||||
|
||||
apprtc_zip_path = os.path.join(SCRIPT_DIR, 'prebuilt_apprtc.zip')
|
||||
old_apprtc_sha1 = utils.ComputeSHA1(apprtc_zip_path)
|
||||
|
||||
_DownloadResources(SCRIPT_DIR)
|
||||
|
||||
if old_appengine_sha1 != utils.ComputeSHA1(appengine_zip_path):
|
||||
utils.RemoveDirectory(os.path.join(output_dir, 'google_appengine'))
|
||||
utils.UnpackArchiveTo(appengine_zip_path, output_dir)
|
||||
|
||||
if old_mercurial_sha1 != utils.ComputeSHA1(mercurial_tar_path):
|
||||
utils.RemoveDirectory(os.path.join(output_dir, 'mercurial'))
|
||||
utils.UnpackArchiveTo(mercurial_tar_path, output_dir)
|
||||
_StripVersionNumberFromMercurialFolder(output_dir)
|
||||
|
||||
if old_apprtc_sha1 != utils.ComputeSHA1(apprtc_zip_path):
|
||||
utils.RemoveDirectory(os.path.join(output_dir, 'apprtc'))
|
||||
utils.UnpackArchiveTo(apprtc_zip_path, output_dir)
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main(sys.argv))
|
||||
@ -1,57 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright (c) 2017 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.
|
||||
|
||||
"""Downloads the golang SDK from WebRTC storage and unpacks it.
|
||||
|
||||
Requires that depot_tools is installed and in the PATH.
|
||||
|
||||
The precondition is that a directory 'golang' lives in the same directory
|
||||
as the script.
|
||||
This 'golang' directory has the following structure:
|
||||
|
||||
/golang
|
||||
|
|
||||
|-----/linux/go.tar.gz.sha1
|
||||
|-----/win/go.zip.sha1
|
||||
|-----/mac/go.tar.gz.sha1
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
import utils
|
||||
|
||||
|
||||
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
|
||||
def _GetGoArchivePathForPlatform():
|
||||
archive_extension = 'zip' if utils.GetPlatform() == 'win' else 'tar.gz'
|
||||
return os.path.join(utils.GetPlatform(), 'go.%s' % archive_extension)
|
||||
|
||||
|
||||
def main(argv):
|
||||
if len(argv) == 1:
|
||||
return 'Usage: %s <output_dir>' % argv[0]
|
||||
|
||||
output_dir = os.path.join(argv[1])
|
||||
golang_path = os.path.join(SCRIPT_DIR, 'golang')
|
||||
archive_path = os.path.join(golang_path, _GetGoArchivePathForPlatform())
|
||||
old_archive_sha1 = utils.ComputeSHA1(archive_path)
|
||||
|
||||
utils.DownloadFilesFromGoogleStorage(golang_path)
|
||||
|
||||
if (old_archive_sha1 != utils.ComputeSHA1(archive_path)
|
||||
or not os.path.exists('go')):
|
||||
utils.RemoveDirectory(os.path.join(output_dir, 'go'))
|
||||
utils.UnpackArchiveTo(archive_path, output_dir)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main(sys.argv))
|
||||
@ -1 +1 @@
|
||||
14068fbe349db34b838853a7878621bbd2b24646
|
||||
a433f76c569055ff8536d796995518dd91a9fa5b
|
||||
@ -1 +1 @@
|
||||
be686ec7ba68d588735cc2094ccab8bdd651de9e
|
||||
aecf5ec9360a004fdbff181269554892743f4bf6
|
||||
@ -1 +1 @@
|
||||
ba99083b22e0b22b560bb2d28b9b99b405d01b6b
|
||||
26bf854fb81f12e9c80a146d8f0081cd22ae9d02
|
||||
@ -1 +0,0 @@
|
||||
827468f89c78f292c28ceac50e6109c8d649fa61
|
||||
@ -1 +0,0 @@
|
||||
a8a51aa412abd5155c7de29fd39c9774decb4d3f
|
||||
@ -1 +1 @@
|
||||
6a96fc234cfa92ffaa79b0aeb5f4bdc1f31c6340
|
||||
d8d95f55129e0c1a4e0f5d0d3acbf7163395354c
|
||||
22
webrtc/tools/testing/setup_apprtc.py
Normal file → Executable file
22
webrtc/tools/testing/setup_apprtc.py
Normal file → Executable file
@ -22,30 +22,22 @@ import utils
|
||||
|
||||
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
|
||||
def main(argv):
|
||||
if len(argv) == 1:
|
||||
return 'Usage %s <output_dir>' % argv[0]
|
||||
|
||||
output_dir = argv[1]
|
||||
apprtc_appengine_mercurial_path = os.path.join(
|
||||
SCRIPT_DIR, 'download_apprtc_appengine_and_mercurial.py')
|
||||
utils.RunSubprocessWithRetry([apprtc_appengine_mercurial_path,
|
||||
output_dir])
|
||||
output_dir = os.path.abspath(argv[1])
|
||||
|
||||
download_golang_path = os.path.join(SCRIPT_DIR, 'download_golang.py')
|
||||
utils.RunSubprocessWithRetry([download_golang_path, output_dir])
|
||||
download_apprtc_path = os.path.join(SCRIPT_DIR, 'download_apprtc.py')
|
||||
utils.RunSubprocessWithRetry([download_apprtc_path, output_dir])
|
||||
|
||||
build_mercurial_path = os.path.join(SCRIPT_DIR, 'build_mercurial_local.py')
|
||||
hg_dir = os.path.join(output_dir, 'mercurial')
|
||||
utils.RunSubprocessWithRetry([build_mercurial_path, hg_dir])
|
||||
|
||||
build_apprtc_collider_path = os.path.join(SCRIPT_DIR,
|
||||
'build_apprtc_collider.py')
|
||||
build_apprtc_path = os.path.join(SCRIPT_DIR, 'build_apprtc.py')
|
||||
apprtc_src_dir = os.path.join(output_dir, 'apprtc', 'src')
|
||||
go_dir = os.path.join(output_dir, 'go')
|
||||
collider_dir = os.path.join(output_dir, 'collider')
|
||||
utils.RunSubprocessWithRetry([build_apprtc_collider_path, apprtc_src_dir,
|
||||
go_dir, hg_dir, collider_dir])
|
||||
utils.RunSubprocessWithRetry([build_apprtc_path, apprtc_src_dir,
|
||||
go_dir, collider_dir])
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
@ -9,7 +9,6 @@
|
||||
|
||||
"""Utilities for all our deps-management stuff."""
|
||||
|
||||
import hashlib
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
@ -34,32 +33,18 @@ def RunSubprocessWithRetry(cmd):
|
||||
raise exception
|
||||
|
||||
|
||||
def DownloadFilesFromGoogleStorage(path):
|
||||
def DownloadFilesFromGoogleStorage(path, auto_platform=True):
|
||||
print 'Downloading files in %s...' % path
|
||||
|
||||
extension = 'bat' if 'win32' in sys.platform else 'py'
|
||||
cmd = ['download_from_google_storage.%s' % extension,
|
||||
'--bucket=chromium-webrtc-resources',
|
||||
'--auto_platform',
|
||||
'--recursive',
|
||||
'--directory', path]
|
||||
if auto_platform:
|
||||
cmd += ['--auto_platform', '--recursive']
|
||||
subprocess.check_call(cmd)
|
||||
|
||||
|
||||
def ComputeSHA1(path):
|
||||
if not os.path.exists(path):
|
||||
return 0
|
||||
|
||||
sha1 = hashlib.sha1()
|
||||
file_to_hash = open(path, 'rb')
|
||||
try:
|
||||
sha1.update(file_to_hash.read())
|
||||
finally:
|
||||
file_to_hash.close()
|
||||
|
||||
return sha1.hexdigest()
|
||||
|
||||
|
||||
# Code partially copied from
|
||||
# https://cs.chromium.org#chromium/build/scripts/common/chromium_utils.py
|
||||
def RemoveDirectory(*path):
|
||||
|
||||
Reference in New Issue
Block a user