15f9996aaSopenharmony_ci#!/usr/bin/env python 25f9996aaSopenharmony_ci# -*- coding: utf-8 -*- 35f9996aaSopenharmony_ci# Copyright (c) 2021 Huawei Device Co., Ltd. 45f9996aaSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 55f9996aaSopenharmony_ci# you may not use this file except in compliance with the License. 65f9996aaSopenharmony_ci# You may obtain a copy of the License at 75f9996aaSopenharmony_ci# 85f9996aaSopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 95f9996aaSopenharmony_ci# 105f9996aaSopenharmony_ci# Unless required by applicable law or agreed to in writing, software 115f9996aaSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 125f9996aaSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135f9996aaSopenharmony_ci# See the License for the specific language governing permissions and 145f9996aaSopenharmony_ci# limitations under the License. 155f9996aaSopenharmony_ci 165f9996aaSopenharmony_ciimport sys 175f9996aaSopenharmony_ciimport os 185f9996aaSopenharmony_ciimport argparse 195f9996aaSopenharmony_cisys.path.append( 205f9996aaSopenharmony_ci os.path.dirname(os.path.dirname(os.path.dirname( 215f9996aaSopenharmony_ci os.path.abspath(__file__))))) 225f9996aaSopenharmony_cifrom scripts.util.file_utils import read_json_file, write_json_file # noqa: E402 235f9996aaSopenharmony_cifrom scripts.util import build_utils # noqa: E402 245f9996aaSopenharmony_ci 255f9996aaSopenharmony_ci 265f9996aaSopenharmony_cidef sa_info_process(sa_profile_infos_file: str, toolchain_platform: dict): 275f9996aaSopenharmony_ci sa_profile_infos = read_json_file(sa_profile_infos_file) 285f9996aaSopenharmony_ci if sa_profile_infos is None: 295f9996aaSopenharmony_ci raise Exception("read file '{}' failed.".format(sa_profile_infos)) 305f9996aaSopenharmony_ci processed_sa_infos = [] 315f9996aaSopenharmony_ci for _sa_info in sa_profile_infos: 325f9996aaSopenharmony_ci origin_part_name = _sa_info.get('part_name') 335f9996aaSopenharmony_ci if origin_part_name is None or origin_part_name == '': 345f9996aaSopenharmony_ci raise Exception( 355f9996aaSopenharmony_ci "get part name failed in sa info, part_name='{}'".format( 365f9996aaSopenharmony_ci origin_part_name)) 375f9996aaSopenharmony_ci _toolchain = _sa_info.get('toolchain') 385f9996aaSopenharmony_ci platform_name = toolchain_platform.get(_toolchain) 395f9996aaSopenharmony_ci if platform_name != 'phone': 405f9996aaSopenharmony_ci part_name = '{}_{}'.format(origin_part_name, platform_name) 415f9996aaSopenharmony_ci else: 425f9996aaSopenharmony_ci part_name = origin_part_name 435f9996aaSopenharmony_ci _sa_info['part_name'] = part_name 445f9996aaSopenharmony_ci _sa_info['origin_part_name'] = origin_part_name 455f9996aaSopenharmony_ci processed_sa_infos.append(_sa_info) 465f9996aaSopenharmony_ci return processed_sa_infos 475f9996aaSopenharmony_ci 485f9996aaSopenharmony_ci 495f9996aaSopenharmony_cidef main(): 505f9996aaSopenharmony_ci parser = argparse.ArgumentParser() 515f9996aaSopenharmony_ci parser.add_argument('--variants-toolchain-file', required=True) 525f9996aaSopenharmony_ci parser.add_argument('--sa-profile-infos-file', required=False) 535f9996aaSopenharmony_ci parser.add_argument('--output-file', required=True) 545f9996aaSopenharmony_ci parser.add_argument('--depfile', required=True) 555f9996aaSopenharmony_ci args = parser.parse_args() 565f9996aaSopenharmony_ci 575f9996aaSopenharmony_ci depfiles = [args.variants_toolchain_file] 585f9996aaSopenharmony_ci variants_toolchain_info = read_json_file(args.variants_toolchain_file) 595f9996aaSopenharmony_ci if variants_toolchain_info is None: 605f9996aaSopenharmony_ci raise Exception( 615f9996aaSopenharmony_ci "read file '{}' failed.".format(args.variants_toolchain_file)) 625f9996aaSopenharmony_ci toolchain_platform = variants_toolchain_info.get('toolchain_platform') 635f9996aaSopenharmony_ci processed_sa_infos = sa_info_process(args.sa_profile_infos_file, 645f9996aaSopenharmony_ci toolchain_platform) 655f9996aaSopenharmony_ci write_json_file(args.output_file, processed_sa_infos) 665f9996aaSopenharmony_ci build_utils.write_depfile(args.depfile, args.output_file, depfiles) 675f9996aaSopenharmony_ci return 0 685f9996aaSopenharmony_ci 695f9996aaSopenharmony_ci 705f9996aaSopenharmony_ciif __name__ == '__main__': 715f9996aaSopenharmony_ci sys.exit(main()) 72