| Index: tools/upload_service.py
|
| diff --git a/tools/upload_service.py b/tools/upload_service.py
|
| index 84aa0d27bd92e433cb3b9e119b27c4cf4381369b..91ab49bb1d453e3655a424c99a669a17ee2b9d5e 100755
|
| --- a/tools/upload_service.py
|
| +++ b/tools/upload_service.py
|
| @@ -4,7 +4,9 @@
|
| # found in the LICENSE file.
|
|
|
| import argparse
|
| +import glob
|
| import imp
|
| +import itertools
|
| import os
|
| import subprocess
|
| import sys
|
| @@ -12,6 +14,14 @@ import tempfile
|
| import time
|
| import zipfile
|
|
|
| +sys.path.append(os.path.join(os.path.dirname(__file__),
|
| + os.pardir, 'third_party', 'pyelftools'))
|
| +import elftools.elf.elffile as elffile
|
| +
|
| +sys.path.append(os.path.join(os.path.dirname(__file__),
|
| + os.pardir, 'third_party', 'mojo_devtools'))
|
| +import android_gdb.signatures as signatures
|
| +
|
| SERVICES = ["network_service", "network_service_apptests"]
|
|
|
| # A service does not need to expose interfaces. Those that do expose interfaces
|
| @@ -86,6 +96,17 @@ def upload_mojoms(version_name, service, absolute_mojom_directory_path,
|
| gsutil_cp(mojom_zip_file.name, dest, dry_run)
|
|
|
|
|
| +def upload_symbols(binary_dir, dry_run):
|
| + dest_dir = "gs://mojo/symbols/"
|
| + symbols_dir = os.path.join(binary_dir, "symbols")
|
| + for name in os.listdir(symbols_dir):
|
| + path = os.path.join(symbols_dir, name)
|
| + with open(path) as f:
|
| + signature = signatures.get_signature(f, elffile)
|
| + if signature is not None:
|
| + dest = dest_dir + signature
|
| + gsutil_cp(path, dest, dry_run)
|
| +
|
| def upload_binary(version_name, service, binary_dir, platform, dry_run):
|
| dest_dir = "gs://mojo/" + service + "/" + version_name + "/" + platform + "/"
|
| should_zip = service in SERVICES_WITH_ZIPPED_BINARIES
|
| @@ -140,6 +161,9 @@ def main():
|
| help="Indicates that this is a build with change that is not committed. "
|
| "The change must be uploaded to Rietveld. The script needs to be "
|
| "run from the branch associated with the change.")
|
| + parser.add_argument(
|
| + "--upload-symbols", action="store_true",
|
| + help="Indicates that this should also upload all symbols.")
|
| args = parser.parse_args()
|
|
|
| if args.service not in SERVICES:
|
| @@ -164,10 +188,14 @@ def main():
|
| if args.linux_x64_binary_dir:
|
| upload_binary(version_name, args.service, args.linux_x64_binary_dir,
|
| "linux-x64", args.dry_run)
|
| + if args.upload_symbols:
|
| + upload_symbols(args.linux_x64_binary_dir, args.dry_run)
|
|
|
| if args.android_arm_binary_dir:
|
| upload_binary(version_name, args.service, args.android_arm_binary_dir,
|
| "android-arm", args.dry_run)
|
| + if args.upload_symbols:
|
| + upload_symbols(args.android_arm_binary_dir, args.dry_run)
|
|
|
| if not args.dry_run:
|
| print "Uploaded artifacts for version %s" % (version_name, )
|
|
|