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

Side by Side Diff: tools/android_stack_parser/stack

Issue 787803006: Fix tools/android_stack_parser/stack and use it in skydb (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: 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
« sky/tools/skydb ('K') | « sky/tools/skydb ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright (C) 2013 The Android Open Source Project 3 # Copyright (C) 2013 The Android Open Source Project
4 # 4 #
5 # Licensed under the Apache License, Version 2.0 (the "License"); 5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License. 6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at 7 # You may obtain a copy of the License at
8 # 8 #
9 # http://www.apache.org/licenses/LICENSE-2.0 9 # http://www.apache.org/licenses/LICENSE-2.0
10 # 10 #
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 111
112 112
113 def GetBasenameFromMojoApp(url): 113 def GetBasenameFromMojoApp(url):
114 """Used by GetSymbolMapping() to extract the basename from the location the 114 """Used by GetSymbolMapping() to extract the basename from the location the
115 mojo app was downloaded from. The location is a URL, e.g. 115 mojo app was downloaded from. The location is a URL, e.g.
116 http://foo/bar/x.so.""" 116 http://foo/bar/x.so."""
117 index = url.rfind('/') 117 index = url.rfind('/')
118 return url[(index + 1):] if index != -1 else url 118 return url[(index + 1):] if index != -1 else url
119 119
120 120
121 def GetSymboledNameForMojoApp(path):
122 """Used by GetSymbolMapping to get the non-stripped library name for an
123 installed mojo app."""
124 # e.g. tracing.mojo -> libtracing_library.so
125 name, ext = os.path.splitext(path)
126 if ext != '.mojo':
127 return path
128 return 'lib%s_library.so' % name
129
130
121 def GetSymbolMapping(lines): 131 def GetSymbolMapping(lines):
122 """Returns a mapping (dictionary) from download file to .so.""" 132 """Returns a mapping (dictionary) from download file to .so."""
123 regex = re.compile('Caching mojo app (\S+) at (\S+)') 133 regex = re.compile('Caching mojo app (\S+) at (\S+)')
134 # lib_mojo_shell.so moved to mojo_shell as part of building the APK
135 # currently this is the only library for which we do this.
136 # The install path of the apk can change every install, hence the regexp.
137 lib_mojo_regexp = re.compile(r'(/data/app/.*/libmojo_shell\.so)')
124 mappings = {} 138 mappings = {}
125 for line in lines: 139 for line in lines:
140 lib_mojo_result = lib_mojo_regexp.search(line)
141 if lib_mojo_result:
142 mappings[lib_mojo_result.group(1)] = 'mojo_shell'
143
126 result = regex.search(line) 144 result = regex.search(line)
127 if result: 145 if result:
128 mappings[result.group(2)] = GetBasenameFromMojoApp(result.group(1)) 146 url = GetBasenameFromMojoApp(result.group(1))
147 mappings[result.group(2)] = GetSymboledNameForMojoApp(url)
129 return mappings 148 return mappings
130 149
131 150
132 def main(): 151 def main():
133 try: 152 try:
134 options, arguments = getopt.getopt(sys.argv[1:], "", 153 options, arguments = getopt.getopt(sys.argv[1:], "",
135 ["more-info", 154 ["more-info",
136 "less-info", 155 "less-info",
137 "mojo-symbols-dir=", 156 "mojo-symbols-dir=",
138 "symbols-dir=", 157 "symbols-dir=",
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 if rootdir: 203 if rootdir:
185 # be a good citizen and clean up...os.rmdir and os.removedirs() don't work 204 # be a good citizen and clean up...os.rmdir and os.removedirs() don't work
186 cmd = "rm -rf \"%s\"" % rootdir 205 cmd = "rm -rf \"%s\"" % rootdir
187 print "\ncleaning up (%s)" % cmd 206 print "\ncleaning up (%s)" % cmd
188 os.system(cmd) 207 os.system(cmd)
189 208
190 if __name__ == "__main__": 209 if __name__ == "__main__":
191 main() 210 main()
192 211
193 # vi: ts=2 sw=2 212 # vi: ts=2 sw=2
OLDNEW
« sky/tools/skydb ('K') | « sky/tools/skydb ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698