15f9996aaSopenharmony_ci#!/usr/bin/env python3 25f9996aaSopenharmony_ci# -*- coding: utf-8 -*- 35f9996aaSopenharmony_ci# Copyright (c) 2023 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_ci 175f9996aaSopenharmony_ciimport sys 185f9996aaSopenharmony_ciimport os 195f9996aaSopenharmony_ciimport argparse 205f9996aaSopenharmony_ciimport subprocess 215f9996aaSopenharmony_ciimport shutil 225f9996aaSopenharmony_ci 235f9996aaSopenharmony_ci 245f9996aaSopenharmony_cidef execute_adlt_command(args): 255f9996aaSopenharmony_ci cmd = [ 265f9996aaSopenharmony_ci args.adlt_exe, 275f9996aaSopenharmony_ci f'--root-dir={args.adlt_root_dir}', 285f9996aaSopenharmony_ci '-o', 295f9996aaSopenharmony_ci args.output_file, 305f9996aaSopenharmony_ci args.allowed_lib_list, 315f9996aaSopenharmony_ci ] 325f9996aaSopenharmony_ci proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding='utf-8') 335f9996aaSopenharmony_ci stdout, stderr = proc.communicate() 345f9996aaSopenharmony_ci for line in stdout.splitlines(): 355f9996aaSopenharmony_ci print(f'[1/1] info: {line}') 365f9996aaSopenharmony_ci for line in stderr.splitlines(): 375f9996aaSopenharmony_ci print(f'[1/1] warning: {line}') 385f9996aaSopenharmony_ci if proc.returncode: 395f9996aaSopenharmony_ci raise Exception(f'ReturnCode:{proc.returncode}. excute failed: {stderr}') 405f9996aaSopenharmony_ci 415f9996aaSopenharmony_ci 425f9996aaSopenharmony_cidef remove_origin_lib(args): 435f9996aaSopenharmony_ci with open(args.allowed_lib_list, 'r') as f: 445f9996aaSopenharmony_ci lines = f.readlines() 455f9996aaSopenharmony_ci for line in lines: 465f9996aaSopenharmony_ci so_abspath = os.path.join(args.adlt_root_dir, line.strip("\n")) 475f9996aaSopenharmony_ci if os.path.exists(so_abspath): 485f9996aaSopenharmony_ci os.remove(so_abspath) 495f9996aaSopenharmony_ci 505f9996aaSopenharmony_ci 515f9996aaSopenharmony_cidef main(argv): 525f9996aaSopenharmony_ci parser = argparse.ArgumentParser() 535f9996aaSopenharmony_ci parser.add_argument('--adlt-exe', required=True, help='adlt exe path') 545f9996aaSopenharmony_ci parser.add_argument('--adlt-root-dir', required=True, help='adlt root dir') 555f9996aaSopenharmony_ci parser.add_argument('--allowed-lib-list', required=True, help='allowed lib list') 565f9996aaSopenharmony_ci parser.add_argument('--output-file', required=True, help='output file') 575f9996aaSopenharmony_ci args = parser.parse_args(argv) 585f9996aaSopenharmony_ci if not os.path.exists(args.output_file): 595f9996aaSopenharmony_ci execute_adlt_command(args) 605f9996aaSopenharmony_ci remove_origin_lib(args) 615f9996aaSopenharmony_ci 625f9996aaSopenharmony_ci 635f9996aaSopenharmony_ciif __name__ == '__main__': 645f9996aaSopenharmony_ci sys.exit(main(sys.argv[1:]))