Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(142)

Unified Diff: sky/tools/mojo_cache_linker.py

Issue 848013004: Make --gdb work for android (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Add missing file Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sky/tools/mojo_cache_linker.py
diff --git a/sky/tools/mojo_cache_linker.py b/sky/tools/mojo_cache_linker.py
new file mode 100755
index 0000000000000000000000000000000000000000..837b6d4e998e2d6b9b5c9e78df2e9cf219d16bb7
--- /dev/null
+++ b/sky/tools/mojo_cache_linker.py
@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import argparse
+import re
+import sys
+import os
+import logging
+
+# TODO(eseidel): This should be shared with tools/android_stack_parser/stack
+# TODO(eseidel): This could be replaced by using build-ids on Android
+# TODO(eseidel): mojo_shell should write out a cache mapping file.
+def main():
+ logging.basicConfig(level=logging.WARN)
+ parser = argparse.ArgumentParser(
+ description='Watches mojo_shell logcat output and builds a directory'
+ 'of symlinks to symboled binaries for seen cache names.')
+ parser.add_argument('links_dir', type=str)
+ parser.add_argument('symbols_dir', type=str)
+ parser.add_argument('base_url', type=str)
+ args = parser.parse_args()
+
+ regex = re.compile('Caching mojo app (?P<url>\S+) at (?P<path>\S+)')
+
+ if not os.path.isdir(args.links_dir):
+ logging.fatal('links_dir: %s is not a directory' % args.links_dir)
+ sys.exit(2)
+
+ for line in sys.stdin:
+ result = regex.search(line)
+ if not result:
+ continue
+
+ url = result.group('url')
+ if not url.startswith(args.base_url):
+ logging.info('%s does not match base %s' % (url, args.base_url))
qsr 2015/01/16 00:04:18 This is kind of expected if you run the shell mult
eseidel 2015/01/16 00:14:06 Done.
qsr 2015/01/16 00:46:40 Doesn't see to have changed...
+ continue
+ full_name = os.path.basename(url)
+ name, ext = os.path.splitext(full_name)
+ if ext != '.mojo':
+ logging.info('%s is not a .mojo library' % url)
+ continue
+
+ symboled_name = 'lib%s_library.so' % name
+ cache_link_path = os.path.join(args.links_dir,
+ os.path.basename(result.group('path')))
+ symboled_path = os.path.realpath(
+ os.path.join(args.symbols_dir, symboled_name))
+ if not os.path.isfile(symboled_path):
+ logging.warn('symboled path %s does not exist' % symboled_path)
+ continue
+
+ print "%s -> %s" % (cache_link_path, symboled_path)
+
+ if os.path.lexists(cache_link_path):
+ logging.info('link already exists %s, replacing' % symboled_path)
+ os.unlink(cache_link_path)
+
+ os.symlink(symboled_path, cache_link_path)
+
+if __name__ == '__main__':
+ main()

Powered by Google App Engine
This is Rietveld 408576698