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

Side by Side 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 unified diff | Download patch
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright 2015 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 import argparse
7 import re
8 import sys
9 import os
10 import logging
11
12 # TODO(eseidel): This should be shared with tools/android_stack_parser/stack
13 # TODO(eseidel): This could be replaced by using build-ids on Android
14 # TODO(eseidel): mojo_shell should write out a cache mapping file.
15 def main():
16 logging.basicConfig(level=logging.WARN)
17 parser = argparse.ArgumentParser(
18 description='Watches mojo_shell logcat output and builds a directory'
19 'of symlinks to symboled binaries for seen cache names.')
20 parser.add_argument('links_dir', type=str)
21 parser.add_argument('symbols_dir', type=str)
22 parser.add_argument('base_url', type=str)
23 args = parser.parse_args()
24
25 regex = re.compile('Caching mojo app (?P<url>\S+) at (?P<path>\S+)')
26
27 if not os.path.isdir(args.links_dir):
28 logging.fatal('links_dir: %s is not a directory' % args.links_dir)
29 sys.exit(2)
30
31 for line in sys.stdin:
32 result = regex.search(line)
33 if not result:
34 continue
35
36 url = result.group('url')
37 if not url.startswith(args.base_url):
38 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...
39 continue
40 full_name = os.path.basename(url)
41 name, ext = os.path.splitext(full_name)
42 if ext != '.mojo':
43 logging.info('%s is not a .mojo library' % url)
44 continue
45
46 symboled_name = 'lib%s_library.so' % name
47 cache_link_path = os.path.join(args.links_dir,
48 os.path.basename(result.group('path')))
49 symboled_path = os.path.realpath(
50 os.path.join(args.symbols_dir, symboled_name))
51 if not os.path.isfile(symboled_path):
52 logging.warn('symboled path %s does not exist' % symboled_path)
53 continue
54
55 print "%s -> %s" % (cache_link_path, symboled_path)
56
57 if os.path.lexists(cache_link_path):
58 logging.info('link already exists %s, replacing' % symboled_path)
59 os.unlink(cache_link_path)
60
61 os.symlink(symboled_path, cache_link_path)
62
63 if __name__ == '__main__':
64 main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698