import argparse
import os
import sys
sys.path.append(
os.path.dirname(os.path.dirname(os.path.dirname(
os.path.abspath(__file__)))))
from scripts.util.file_utils import read_json_file
def check_parts_deps(args, external_part_name: str, parts_deps_info: dict):
compile_standard_allow_file = args.compile_standard_allow_file
compile_standard_allow_info = read_json_file(compile_standard_allow_file)
added_self_part_allow_list = compile_standard_allow_info.get("external_deps_added_self_part_module", [])
bundle_not_add_allow_list = compile_standard_allow_info.get("external_deps_bundle_not_add", [])
if external_part_name == args.part_name:
message = "{} in target {} is dependency within part {}, Need to used deps".format(
external_part_name, args.target_path, args.part_name)
if args.target_path in added_self_part_allow_list:
print(f"[0/0] WARNING: {message}")
return
else:
raise Exception(message)
_tips_info = "{} depend part {}, need set part deps info to".format(
args.target_path, external_part_name)
part_deps_info = parts_deps_info.get(args.part_name)
if not part_deps_info:
_warning_info = "{} {}.".format(_tips_info, args.part_name)
elif not part_deps_info.get('components') or \
not external_part_name in part_deps_info.get('components'):
_warning_info = "{} {}.".format(_tips_info, part_deps_info.get('build_config_file'))
else:
_warning_info = ""
if _warning_info != "":
if args.target_path in bundle_not_add_allow_list:
print(f"[0/0] WARNING: {_warning_info}")
else:
raise Exception(_warning_info)
return
def check(args) -> list:
depfiles = []
if len(args.external_deps) == 0:
return depfiles
external_deps = args.external_deps
parts_deps_file = 'build_configs/parts_info/parts_deps.json'
parts_deps_info = read_json_file(parts_deps_file)
if parts_deps_info is None:
raise Exception("read pre_build parts_deps failed.")
depfiles.append(parts_deps_file)
for external_lib in external_deps:
deps_desc = external_lib.split(':')
external_part_name = deps_desc[0]
check_parts_deps(args, external_part_name, parts_deps_info)
return depfiles
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--external-deps', nargs='*', required=True)
parser.add_argument('--part-name', required=True, default='')
parser.add_argument('--target-path', required=True, default='')
parser.add_argument('--output', required=True, default='')
args = parser.parse_args()
check(args)
return 0
if __name__ == '__main__':
sys.exit(main())