OLD | NEW |
1 # Copyright 2017 The Chromium Authors. All rights reserved. | 1 # Copyright 2017 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 """Main Python API for analyzing binary size.""" | 5 """Main Python API for analyzing binary size.""" |
6 | 6 |
7 import argparse | 7 import argparse |
8 import calendar | 8 import calendar |
9 import collections | 9 import collections |
10 import datetime | 10 import datetime |
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
375 def CreateMetadata(map_path, elf_path, apk_path, tool_prefix, output_directory): | 375 def CreateMetadata(map_path, elf_path, apk_path, tool_prefix, output_directory): |
376 metadata = None | 376 metadata = None |
377 if elf_path: | 377 if elf_path: |
378 logging.debug('Constructing metadata') | 378 logging.debug('Constructing metadata') |
379 git_rev = _DetectGitRevision(os.path.dirname(elf_path)) | 379 git_rev = _DetectGitRevision(os.path.dirname(elf_path)) |
380 architecture = _ArchFromElf(elf_path, tool_prefix) | 380 architecture = _ArchFromElf(elf_path, tool_prefix) |
381 build_id = BuildIdFromElf(elf_path, tool_prefix) | 381 build_id = BuildIdFromElf(elf_path, tool_prefix) |
382 timestamp_obj = datetime.datetime.utcfromtimestamp(os.path.getmtime( | 382 timestamp_obj = datetime.datetime.utcfromtimestamp(os.path.getmtime( |
383 elf_path)) | 383 elf_path)) |
384 timestamp = calendar.timegm(timestamp_obj.timetuple()) | 384 timestamp = calendar.timegm(timestamp_obj.timetuple()) |
| 385 relative_tool_prefix = paths.ToSrcRootRelative(tool_prefix) |
385 | 386 |
386 metadata = { | 387 metadata = { |
387 models.METADATA_GIT_REVISION: git_rev, | 388 models.METADATA_GIT_REVISION: git_rev, |
388 models.METADATA_ELF_ARCHITECTURE: architecture, | 389 models.METADATA_ELF_ARCHITECTURE: architecture, |
389 models.METADATA_ELF_MTIME: timestamp, | 390 models.METADATA_ELF_MTIME: timestamp, |
390 models.METADATA_ELF_BUILD_ID: build_id, | 391 models.METADATA_ELF_BUILD_ID: build_id, |
| 392 models.METADATA_TOOL_PREFIX: relative_tool_prefix, |
391 } | 393 } |
392 | 394 |
393 if output_directory: | 395 if output_directory: |
394 relative_to_out = lambda path: os.path.relpath(path, output_directory) | 396 relative_to_out = lambda path: os.path.relpath(path, output_directory) |
395 gn_args = _ParseGnArgs(os.path.join(output_directory, 'args.gn')) | 397 gn_args = _ParseGnArgs(os.path.join(output_directory, 'args.gn')) |
396 metadata[models.METADATA_MAP_FILENAME] = relative_to_out(map_path) | 398 metadata[models.METADATA_MAP_FILENAME] = relative_to_out(map_path) |
397 metadata[models.METADATA_ELF_FILENAME] = relative_to_out(elf_path) | 399 metadata[models.METADATA_ELF_FILENAME] = relative_to_out(elf_path) |
398 metadata[models.METADATA_GN_ARGS] = gn_args | 400 metadata[models.METADATA_GN_ARGS] = gn_args |
399 | 401 |
400 if apk_path: | 402 if apk_path: |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
690 logging.warning('Packed section not present: %s', packed_section_name) | 692 logging.warning('Packed section not present: %s', packed_section_name) |
691 else: | 693 else: |
692 size_info.section_sizes['%s (unpacked)' % packed_section_name] = ( | 694 size_info.section_sizes['%s (unpacked)' % packed_section_name] = ( |
693 unstripped_section_sizes.get(packed_section_name)) | 695 unstripped_section_sizes.get(packed_section_name)) |
694 | 696 |
695 logging.info('Recording metadata: \n %s', | 697 logging.info('Recording metadata: \n %s', |
696 '\n '.join(describe.DescribeMetadata(size_info.metadata))) | 698 '\n '.join(describe.DescribeMetadata(size_info.metadata))) |
697 logging.info('Saving result to %s', args.size_file) | 699 logging.info('Saving result to %s', args.size_file) |
698 file_format.SaveSizeInfo(size_info, args.size_file) | 700 file_format.SaveSizeInfo(size_info, args.size_file) |
699 logging.info('Done') | 701 logging.info('Done') |
OLD | NEW |