diff --git a/archive.py b/archive.py index b18b5605..21c4ba4a 100644 --- a/archive.py +++ b/archive.py @@ -24,36 +24,23 @@ # 2020-4-10 SummerGift Code clear up # +import logging +import os +import shutil import tarfile import zipfile -import os import pkgsdb -import platform -import shutil -import logging - - -def is_windows(): - if platform.system() == "Windows": - return True - else: - return False - - -def remove_folder(folder_path): - if os.path.isdir(folder_path): - if is_windows(): - cmd = 'rd /s /q ' + folder_path - os.system(cmd) - else: - shutil.rmtree(folder_path) +from cmds.cmd_package.cmd_package_utils import is_windows, remove_folder def unpack(archive_filename, path, package_info, package_name): package_version = package_info['ver'] - package_temp_path = os.path.join(path, "package_temp") - os.makedirs(package_temp_path) + try: + remove_folder(package_temp_path) + os.makedirs(package_temp_path) + except Exception as e: + logging.warning('Error message : {0}'.format(e)) logging.info("BSP packages path {0}".format(path)) logging.info("BSP package temp path: {0}".format(package_temp_path)) @@ -124,13 +111,23 @@ def unpack(archive_filename, path, package_info, package_name): # rename package folder name package_name_with_version = package_name + '-' + package_version rename_path = os.path.join(package_temp_path, package_name_with_version) - os.rename(os.path.join(package_temp_path, dir_name), rename_path) - # copy package to bsp packages path. - shutil.move(rename_path, os.path.join(path, package_name_with_version)) + logging.info("origin name: {0}".format(os.path.join(package_temp_path, dir_name))) + logging.info("rename name: {0}".format(rename_path)) + + try: + os.rename(os.path.join(package_temp_path, dir_name), rename_path) + except Exception as e: + # remove temp folder and archive file + logging.warning('{0}'.format(e)) + + if not os.path.isdir(os.path.join(path, package_name_with_version)): + # copy package to bsp packages path. + shutil.move(rename_path, os.path.join(path, package_name_with_version)) # remove temp folder remove_folder(package_temp_path) + return True diff --git a/cmds/cmd_package/cmd_package_update.py b/cmds/cmd_package/cmd_package_update.py index 78860ecd..d11cbce5 100644 --- a/cmds/cmd_package/cmd_package_update.py +++ b/cmds/cmd_package/cmd_package_update.py @@ -24,16 +24,18 @@ # 2020-04-13 SummerGift refactoring # -import os import json -import kconfig -import pkgsdb -import shutil +import logging +import os import platform +import shutil import time -import archive + import requests -import logging + +import archive +import kconfig +import pkgsdb from package import PackageOperation, Bridge_SConscript from vars import Import, Export from .cmd_package_utils import get_url_from_mirror_server, execute_command, git_pull_repo, user_input, \ @@ -212,7 +214,7 @@ def install_not_git_package(package, package_info, local_pkgs_path, package_url, result = False except Exception as e: result = False - print('Error message: %s\t' % e) + logging.error('Error message: {0}'.format(e)) else: print("The file does not exist.") @@ -247,9 +249,13 @@ def install_package(env_root, pkgs_root, bsp_root, package_info, force_update): package.parse(pkg_path) url_from_json = package.get_url(package_info['ver']) - package_url = package.get_url(package_info['ver']) - pkgs_name_in_json = package.get_name() + if not url_from_json: + return False + + package_url = url_from_json + + pkgs_name_in_json = package.get_name() logging.info("begin to install packages: {0}".format(pkgs_name_in_json)) if is_git_url(package_url): ver_sha = package.get_versha(package_info['ver']) diff --git a/cmds/cmd_package/cmd_package_utils.py b/cmds/cmd_package/cmd_package_utils.py index 7e7433d9..7821d0d7 100644 --- a/cmds/cmd_package/cmd_package_utils.py +++ b/cmds/cmd_package/cmd_package_utils.py @@ -23,11 +23,13 @@ # 2020-04-08 SummerGift Optimize program structure # +import json +import os import platform import subprocess -import time -import json import sys +import time +import shutil import requests @@ -175,3 +177,18 @@ def find_macro_in_config(filename, macro_name): config.close() return False + +def is_windows(): + if platform.system() == "Windows": + return True + else: + return False + + +def remove_folder(folder_path): + if os.path.isdir(folder_path): + if is_windows(): + cmd = 'rd /s /q ' + folder_path + os.system(cmd) + else: + shutil.rmtree(folder_path) diff --git a/env.py b/env.py index eabdeba6..4a55b309 100644 --- a/env.py +++ b/env.py @@ -29,7 +29,6 @@ import sys import argparse import logging -import time import platform from cmds import * diff --git a/package.py b/package.py index fb46efc0..fded16ef 100644 --- a/package.py +++ b/package.py @@ -25,12 +25,15 @@ # 2020-4-7 SummerGift Code improvement # -import os import json -import archive +import logging +import os import sys + import requests +import archive + """Template for creating a new file""" Bridge_SConscript = '''import os @@ -151,11 +154,15 @@ def get_filename(self, ver): return None def get_url(self, ver): + url = None for item in self.pkg['site']: if item['version'].lower() == ver.lower(): - return item['URL'] + url = item['URL'] - return None + if not url: + logging.warning("Can't find right url {0}, please check {1}".format(ver.lower(), self.pkg['site'])) + + return url def get_versha(self, ver): for item in self.pkg['site']: