1#!/usr/bin/env python3 2# Copyright 2023 The Chromium Authors 3# Use of this source code is governed by a BSD-style license that can be 4# found in the LICENSE file. 5"""Creates a binary profile from an HRF + dex + mapping.""" 6 7import argparse 8import sys 9 10from util import build_utils 11import action_helpers 12 13 14def main(args): 15 parser = argparse.ArgumentParser(description=__doc__) 16 action_helpers.add_depfile_arg(parser) 17 parser.add_argument('--output-profile', 18 required=True, 19 help='Path to output binary profile.') 20 parser.add_argument('--output-metadata', 21 required=True, 22 help='Path to output binary profile metadata.') 23 parser.add_argument('--profgen', 24 required=True, 25 help='Path to profgen binary.') 26 parser.add_argument('--dex', 27 required=True, 28 help='Path to a zip containing release dex files.') 29 parser.add_argument('--proguard-mapping', 30 help='Path to proguard mapping for release dex.') 31 parser.add_argument('--input-profile-path', 32 required=True, 33 help='Path to HRF baseline profile to apply.') 34 options = parser.parse_args(build_utils.ExpandFileArgs(args)) 35 36 cmd = [ 37 options.profgen, 38 'bin', 39 options.input_profile_path, 40 '-o', 41 options.output_profile, 42 '-om', 43 options.output_metadata, 44 '-a', 45 options.dex, 46 ] 47 48 if options.proguard_mapping: 49 cmd += [ 50 '-m', 51 options.proguard_mapping, 52 ] 53 54 build_utils.CheckOutput(cmd, env={'JAVA_HOME': build_utils.JAVA_HOME}) 55 action_helpers.write_depfile(options.depfile, 56 options.output_profile, 57 inputs=[options.dex]) 58 59 60if __name__ == '__main__': 61 sys.exit(main(sys.argv[1:])) 62