Upload symbols when uploading artifacts.
R=ppi@chromium.org
Review URL: https://codereview.chromium.org/1230973004 .
diff --git a/.gitignore b/.gitignore
index ef538c9..1a5520c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,6 +31,8 @@
/third_party/junit/src/
/third_party/mockito/src/
/third_party/mojo/src/mojo/public/
+/third_party/mojo_devtools/
+/third_party/pyelftools/
/third_party/requests/src/
/third_party/requests/src/
/third_party/robolectric/lib/
diff --git a/DEPS b/DEPS
index 1da218b..338bb40 100644
--- a/DEPS
+++ b/DEPS
@@ -65,10 +65,16 @@
Var('chromium_git') + '/chromium/deps/icu.git' + '@' + '7c81740601355556e630da515b74d889ba2f8d08',
'src/third_party/mojo/src/mojo/public':
- Var('chromium_git') + '/external/github.com/domokit/mojo_sdk.git' + '@' + 'ca51a4809257c8518f224ef5af982e136db1dda0',
+ Var('chromium_git') + '/external/github.com/domokit/mojo_sdk.git' + '@' + '8502ec3f82fdb0c4068353b038410b49413616e5',
'src/tools/grit':
Var('chromium_git') + '/external/grit-i18n.git' + '@' + 'c1b1591a05209c1ad467e845ba8543c22f9072af', # from svn revision 189
+
+ 'src/third_party/pyelftools':
+ Var('chromium_git') + '/chromiumos/third_party/pyelftools.git' + '@' + '19b3e610c86fcadb837d252c794cb5e8008826ae',
+
+ 'src/third_party/mojo_devtools':
+ 'https://github.com/domokit/devtools.git' + '@' + 'b979a23b899ea5e5ed933cc15ef445835787d9c6',
}
deps_os = {
diff --git a/claude.py b/claude.py
index 967baa6..e549742 100755
--- a/claude.py
+++ b/claude.py
@@ -119,7 +119,8 @@
if args.dry_run:
base_command.append('--dry-run')
_logger.info('Uploading network service binary')
- retcode = subprocess.call(base_command + ['network_service'])
+ retcode = subprocess.call(base_command + ['--upload-symbols',
+ 'network_service'])
if retcode != 0:
return retcode
_logger.info('Uploading network service apptests binary')
diff --git a/mojo/services/network/BUILD.gn b/mojo/services/network/BUILD.gn
index 1bdbd26..9976f8c 100644
--- a/mojo/services/network/BUILD.gn
+++ b/mojo/services/network/BUILD.gn
@@ -5,18 +5,8 @@
import("//third_party/mojo/src/mojo/public/mojo_application.gni")
if (is_android) {
- import("//build/config/android/rules.gni")
-
- java_library_path = "$target_out_dir/java_library.dex.jar"
-
mojo_android_application("network") {
output_name = "network_service"
- input_so = "$root_out_dir/lib.stripped/libnetwork_service.so"
- input_dex_jar = java_library_path
- }
-
- shared_library("native_library") {
- output_name = "network_service"
sources = [
"android_hooks.cc",
@@ -27,12 +17,8 @@
"//base",
"//net",
]
- }
- android_standalone_library("java_library") {
- dex_path = java_library_path
-
- deps = [
+ java_deps = [
"//net/android:net_java",
]
}
diff --git a/tools/upload_service.py b/tools/upload_service.py
index 84aa0d2..91ab49b 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 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 @@
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 @@
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 @@
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, )