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

Side by Side Diff: sky/tools/mojo_cache_linker.py

Issue 788903011: Move to using build-ids to tell GDB about libraries Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Updated to tip of tree 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
« no previous file with comments | « build/config/compiler/BUILD.gn ('k') | sky/tools/skydb » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 logging
8 import os
9 import re
10 import sys
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.INFO)
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(1)
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.debug('%s does not match base %s' % (url, args.base_url))
39 continue
40 full_name = os.path.basename(url)
41 name, ext = os.path.splitext(full_name)
42 if ext != '.mojo':
43 logging.debug('%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.debug('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
« no previous file with comments | « build/config/compiler/BUILD.gn ('k') | sky/tools/skydb » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698