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 required=True, 31 help='Path to proguard mapping for release dex.') 32 parser.add_argument('--input-profile-path', 33 required=True, 34 help='Path to HRF baseline profile to apply.') 35 options = parser.parse_args(build_utils.ExpandFileArgs(args)) 36 37 cmd = [ 38 options.profgen, 39 'bin', 40 options.input_profile_path, 41 '-o', 42 options.output_profile, 43 '-om', 44 options.output_metadata, 45 '-a', 46 options.dex, 47 '-m', 48 options.proguard_mapping, 49 ] 50 build_utils.CheckOutput(cmd, env={'JAVA_HOME': build_utils.JAVA_HOME}) 51 action_helpers.write_depfile(options.depfile, 52 options.output_profile, 53 inputs=[options.dex]) 54 55 56if __name__ == '__main__': 57 sys.exit(main(sys.argv[1:])) 58