89 lines
3.8 KiB
Python
89 lines
3.8 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
#
|
|
# Copyright (c) 2023 Huawei Device Co., Ltd.
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
import os
|
|
import subprocess
|
|
|
|
from containers.arg import Arg
|
|
from resolver.interface.args_resolver_interface import ArgsResolverInterface
|
|
from modules.interface.env_module_interface import EnvModuleInterface
|
|
from resources.global_var import ENV_SETUP_FILE, ROOT_CONFIG_FILE, BUILD_CONFIG_FILE
|
|
from exceptions.ohos_exception import OHOSException
|
|
from util.log_util import LogUtil
|
|
from scripts.tools_checker import check_os_version, check_build_requried_packages
|
|
from containers.status import throw_exception
|
|
from util.io_util import IoUtil
|
|
|
|
|
|
class EnvArgsResolver(ArgsResolverInterface):
|
|
|
|
def __init__(self, args_dict: dict):
|
|
super().__init__(args_dict)
|
|
|
|
@staticmethod
|
|
def resolve_check(target_arg: Arg, set_module: EnvModuleInterface):
|
|
if target_arg.arg_value:
|
|
host_info = check_os_version()
|
|
packages_info = check_build_requried_packages(
|
|
host_info[1], check=False)
|
|
for package in packages_info:
|
|
if isinstance(package, list):
|
|
package.sort()
|
|
LogUtil.hb_info('Necessary package: {}'.format(
|
|
', '.join(packages_info[0])))
|
|
LogUtil.hb_info('Installed package: {}'.format(
|
|
', '.join(packages_info[1])))
|
|
LogUtil.hb_info('Uninstalled package: {}'.format(
|
|
', '.join(packages_info[2])))
|
|
if len(packages_info[2]) > 0:
|
|
LogUtil.hb_info(
|
|
'Run "sudo apt-get install {}" to install dependencies'.format(' '.join(packages_info[2])))
|
|
|
|
if os.path.exists(ROOT_CONFIG_FILE):
|
|
config_json = ROOT_CONFIG_FILE
|
|
else:
|
|
config_json = BUILD_CONFIG_FILE
|
|
json_data = IoUtil.read_json_file(config_json)
|
|
root_path = json_data.get('root_path', 'not set')
|
|
board = json_data.get('board', 'not set')
|
|
kernel = json_data.get('kernel', 'not set')
|
|
product = json_data.get('product', 'not set')
|
|
product_path = json_data.get('product_path', 'not set')
|
|
device_path = json_data.get('device_path', 'not set')
|
|
device_company = json_data.get('device_company', 'not set')
|
|
|
|
LogUtil.hb_info('root path: {}'.format(root_path))
|
|
LogUtil.hb_info('board: {}'.format(board))
|
|
LogUtil.hb_info('kernel: {}'.format(kernel))
|
|
LogUtil.hb_info('product: {}'.format(product))
|
|
LogUtil.hb_info('product path: {}'.format(product_path))
|
|
LogUtil.hb_info('device path: {}'.format(device_path))
|
|
LogUtil.hb_info('device company: {}'.format(device_company))
|
|
|
|
@staticmethod
|
|
@throw_exception
|
|
def resolve_install(target_arg: Arg, set_module: EnvModuleInterface):
|
|
if target_arg.arg_value:
|
|
if os.path.exists(ENV_SETUP_FILE):
|
|
LogUtil.hb_info('Starting install all dependencies...')
|
|
LogUtil.hb_info(
|
|
'Please enter your sudo password for running apt-install command')
|
|
subprocess.run('bash {}'.format(ENV_SETUP_FILE))
|
|
else:
|
|
raise OHOSException("There is no {} file", "0000")
|