Merge branch 'backend_dev' of gitlab2.kylin.com:kylin-desktop/update-manager-group/kylin-system-updater into backend_dev
This commit is contained in:
commit
c56f0b1291
|
@ -431,33 +431,28 @@ class UpdateManager():
|
|||
def _setup_dbus(self):
|
||||
# check if there is another g-a-i already and if not setup one
|
||||
# listening on dbus
|
||||
try:
|
||||
bus = dbus.SystemBus()
|
||||
except Exception:
|
||||
logging.error("warning: could not initiate dbus")
|
||||
return
|
||||
try:
|
||||
proxy_obj = bus.get_object(UPDATER_DBUS_SERVICE,
|
||||
UPDATER_DBUS_PATH)
|
||||
|
||||
#替换后台
|
||||
bus = dbus.SystemBus()
|
||||
|
||||
try:
|
||||
bus_name = dbus.service.BusName(UPDATER_DBUS_SERVICE,
|
||||
bus,
|
||||
do_not_queue=True)
|
||||
logging.info(_("initiate dbus success ..."))
|
||||
return UpdateManagerDbusController(self, bus_name)
|
||||
except dbus.exceptions.NameExistsException:
|
||||
if self.options.replace is False:
|
||||
logging.critical("Another daemon is already running")
|
||||
sys.exit(1)
|
||||
else:
|
||||
logging.warning("Replacing already running daemon")
|
||||
proxy_obj.Quit(dbus_interface=UPDATER_DBUS_INTERFACE,
|
||||
timeout=300)
|
||||
time.sleep(1)
|
||||
bus_name = dbus.service.BusName(UPDATER_DBUS_SERVICE,
|
||||
bus,
|
||||
do_not_queue=True)
|
||||
return UpdateManagerDbusController(self, bus_name)
|
||||
|
||||
except dbus.DBusException:
|
||||
logging.warning("Replacing already running daemon")
|
||||
the_other_guy = bus.get_object(UPDATER_DBUS_SERVICE,
|
||||
UPDATER_DBUS_PATH)
|
||||
the_other_guy.Quit(dbus_interface=UPDATER_DBUS_INTERFACE,
|
||||
timeout=300)
|
||||
time.sleep(1)
|
||||
bus_name = dbus.service.BusName(UPDATER_DBUS_SERVICE,
|
||||
bus)
|
||||
logging.info(_("initiate dbus success ..."))
|
||||
bus,
|
||||
do_not_queue=True)
|
||||
return UpdateManagerDbusController(self, bus_name)
|
||||
|
||||
# 是否查找本地依赖
|
||||
|
|
|
@ -19,21 +19,23 @@ UPDATER_DBUS_SERVICE = 'com.kylin.systemupgrade'
|
|||
#颜色设置
|
||||
COLORLOG_SUFFIX = "\033[0m"
|
||||
|
||||
# RED_PRE = "\033[31;1m"
|
||||
# GREEN_PRE = "\033[32;1m"
|
||||
# YELLOW_PRE = "\033[33;1m"
|
||||
# BULE_PRE = "\033[34;1m"
|
||||
# RED_PRE = "\033[35;1m"
|
||||
# BACK_BLACK_PER = "\033[40;1m"
|
||||
# BACK_RED_PER = "\033[41;1m"
|
||||
# BACK_GREEN_PER = "\033[42;1m"
|
||||
BACK_YELLOW_PER = "\033[43;1m"
|
||||
# BACK_BLUE_PER = "\033[44;1m"
|
||||
# GREEN_GREENBACK_PRE = "\033[1;32;42m"
|
||||
BULE_GREENBACK_PRE = "\033[1;34;42m"
|
||||
# Define some foreground colors
|
||||
BLACK = 30
|
||||
RED = 31
|
||||
GREEN = 32
|
||||
YELLOW = 33
|
||||
BLUE = 34
|
||||
MAGENTA = 35
|
||||
CYAN = 36
|
||||
WHITE = 37
|
||||
|
||||
COLORLOG_PREFIX = BACK_YELLOW_PER
|
||||
COLORMETHOR_PREFIX = BULE_GREENBACK_PRE
|
||||
#字体颜色
|
||||
FRONT_COLOR_SEQ = "\033[1;%dm"
|
||||
#背景颜色
|
||||
BACK_COLOR_SEQ = "\033[%d;1m"
|
||||
|
||||
COLORLOG_PREFIX = FRONT_COLOR_SEQ % GREEN
|
||||
COLORMETHOR_PREFIX = FRONT_COLOR_SEQ % CYAN
|
||||
|
||||
#dbus 建立
|
||||
class UpdateManagerDbusController(dbus.service.Object):
|
||||
|
@ -144,8 +146,17 @@ class UpdateManagerDbusController(dbus.service.Object):
|
|||
|
||||
#获取后端现在的状态
|
||||
@dbus.service.method(UPDATER_DBUS_INTERFACE,out_signature='i')
|
||||
def GetBackendStatus(self):
|
||||
def GetBackendStatus(self,user_lang):
|
||||
try:
|
||||
# if user_lang not in os.environ["LANG"]:
|
||||
# 如果系统不是中文也不是英文 就默认中文
|
||||
# if user_lang != "en" and user_lang != "zh_CN:en":
|
||||
# logging.error("%s",user_lang)
|
||||
# user_lang = "zh_CN:en"
|
||||
|
||||
# logging.warning("The system language is switched %s to %s",os.environ["LANGUAGE"],user_lang)
|
||||
# os.environ["LANGUAGE"] = user_lang
|
||||
|
||||
#处于更新和升级中的话 不进行更新
|
||||
logging.info(COLORMETHOR_PREFIX+'method'+COLORLOG_SUFFIX+' GetBackendStatus ...')
|
||||
return self.parent.is_working
|
||||
|
|
|
@ -1,14 +1,6 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
from aptdaemon import client, errors
|
||||
from defer import inline_callbacks
|
||||
from aptdaemon.enums import (EXIT_SUCCESS,
|
||||
EXIT_FAILED,
|
||||
EXIT_CANCELLED,
|
||||
get_error_description_from_enum,
|
||||
get_error_string_from_enum,
|
||||
get_status_string_from_enum
|
||||
)
|
||||
from SystemUpdater.backend import InstallBackend
|
||||
import logging
|
||||
from gettext import gettext as _
|
||||
|
@ -30,6 +22,24 @@ class InstallBackendAptdaemon(InstallBackend):
|
|||
def __init__(self, window_main, action):
|
||||
InstallBackend.__init__(self, window_main, action)
|
||||
self.window_main = window_main
|
||||
|
||||
from aptdaemon import client
|
||||
from aptdaemon import errors
|
||||
from aptdaemon.enums import (EXIT_SUCCESS,
|
||||
EXIT_FAILED,
|
||||
EXIT_CANCELLED,
|
||||
get_error_description_from_enum,
|
||||
get_error_string_from_enum,
|
||||
get_status_string_from_enum
|
||||
)
|
||||
self.errors = errors
|
||||
self.EXIT_SUCCESS = EXIT_SUCCESS
|
||||
self.EXIT_FAILED = EXIT_FAILED
|
||||
self.EXIT_CANCELLED = EXIT_CANCELLED
|
||||
self.get_error_description_from_enum = get_error_description_from_enum
|
||||
self.get_error_string_from_enum = get_error_string_from_enum
|
||||
self.get_status_string_from_enum = get_status_string_from_enum
|
||||
|
||||
#客户端连接aptdeamon的dbus接口
|
||||
self.client = client.AptClient()
|
||||
self.trans_failed_msg = None
|
||||
|
@ -106,7 +116,7 @@ class InstallBackendAptdaemon(InstallBackend):
|
|||
# 注册回调函数 接收更新的状态
|
||||
yield self._show_transaction(trans, self.ACTION_UPDATE,
|
||||
_("Checking for updates…"), False)
|
||||
except errors.NotAuthorizedError:
|
||||
except self.errors.NotAuthorizedError:
|
||||
self._action_done(self.ACTION_UPDATE,
|
||||
authorized=False, success=False,
|
||||
error_string='', error_desc='')
|
||||
|
@ -128,11 +138,11 @@ class InstallBackendAptdaemon(InstallBackend):
|
|||
|
||||
yield self._show_transaction(trans, self.ACTION_INSTALL,
|
||||
_("Installing updates…"), True)
|
||||
except errors.NotAuthorizedError:
|
||||
except self.errors.NotAuthorizedError:
|
||||
self._action_done(self.ACTION_INSTALL,
|
||||
authorized=False, success=False,
|
||||
error_string='', error_desc='')
|
||||
except errors.TransactionFailed as e:
|
||||
except self.errors.TransactionFailed as e:
|
||||
self.trans_failed_msg = str(e)
|
||||
except dbus.DBusException as e:
|
||||
if e.get_dbus_name() != "org.freedesktop.DBus.Error.NoReply":
|
||||
|
@ -154,7 +164,7 @@ class InstallBackendAptdaemon(InstallBackend):
|
|||
# 注册回调函数 接收更新的状态
|
||||
yield self._show_transaction(trans, self.ACTION_INSTALL_DEB,
|
||||
_("Installing deb packages…"), False)
|
||||
except errors.NotAuthorizedError:
|
||||
except self.errors.NotAuthorizedError:
|
||||
self._action_done(self.ACTION_INSTALL_DEB,
|
||||
authorized=False, success=False,
|
||||
error_string='', error_desc='')
|
||||
|
@ -174,7 +184,7 @@ class InstallBackendAptdaemon(InstallBackend):
|
|||
# 注册回调函数 接收更新的状态
|
||||
yield self._show_transaction(trans, self.ACTION_FIX_BROKEN,
|
||||
_("Installing deb packages…"), False)
|
||||
except errors.NotAuthorizedError:
|
||||
except self.errors.NotAuthorizedError:
|
||||
self._action_done(self.ACTION_FIX_BROKEN,
|
||||
authorized=False, success=False,
|
||||
error_string='', error_desc='')
|
||||
|
@ -193,7 +203,7 @@ class InstallBackendAptdaemon(InstallBackend):
|
|||
# 注册回调函数 接收更新的状态
|
||||
yield self._show_transaction(trans, self.ACTION_FIX_INCOMPLETE,
|
||||
_("fix incomplete install"), False)
|
||||
except errors.NotAuthorizedError:
|
||||
except self.errors.NotAuthorizedError:
|
||||
self._action_done(self.ACTION_FIX_INCOMPLETE,
|
||||
authorized=False, success=False,
|
||||
error_string='', error_desc='')
|
||||
|
@ -212,7 +222,7 @@ class InstallBackendAptdaemon(InstallBackend):
|
|||
# 注册回调函数 接收更新的状态
|
||||
yield self._show_transaction(trans, self.ACTION_CLEAN,
|
||||
_("Remove all downloaded files."), False)
|
||||
except errors.NotAuthorizedError:
|
||||
except self.errors.NotAuthorizedError:
|
||||
self._action_done(self.ACTION_CLEAN,
|
||||
authorized=False, success=False,
|
||||
error_string='', error_desc='')
|
||||
|
@ -231,7 +241,7 @@ class InstallBackendAptdaemon(InstallBackend):
|
|||
# 注册回调函数 接收更新的状态
|
||||
yield self._show_transaction(trans, self.ACTION_DOWNLOADONLY,
|
||||
_("Downloading deb packages…"), False)
|
||||
except errors.NotAuthorizedError:
|
||||
except self.errors.NotAuthorizedError:
|
||||
self._action_done(self.ACTION_DOWNLOADONLY,
|
||||
authorized=False, success=False,
|
||||
error_string='', error_desc='')
|
||||
|
@ -250,7 +260,7 @@ class InstallBackendAptdaemon(InstallBackend):
|
|||
# 注册回调函数 接收更新的状态
|
||||
yield self._show_transaction(trans, self.ACTION_REMOVE_PACKAGES,
|
||||
_("Installing deb packages…"), False)
|
||||
except errors.NotAuthorizedError:
|
||||
except self.errors.NotAuthorizedError:
|
||||
self._action_done(self.ACTION_REMOVE_PACKAGES,
|
||||
authorized=False, success=False,
|
||||
error_string='', error_desc='')
|
||||
|
@ -280,7 +290,7 @@ class InstallBackendAptdaemon(InstallBackend):
|
|||
#同步状态回调
|
||||
def _on_status_changed(self, trans, status,action):
|
||||
#转化词条
|
||||
self.trans_status = get_status_string_from_enum(status)
|
||||
self.trans_status = self.get_status_string_from_enum(status)
|
||||
self._dist_status_changed(action,self.now_upgrade.upgrade_groups+self.now_upgrade.single_pkgs,\
|
||||
self.trans_progress,self.trans_status,self.details)
|
||||
|
||||
|
@ -342,14 +352,14 @@ class InstallBackendAptdaemon(InstallBackend):
|
|||
if self.action == self.ACTION_REMOVE_PACKAGES or self.action == self.ACTION_UPDATE:
|
||||
return
|
||||
|
||||
logging.info("\033[43;1m" + "emit" + "\033[0m" +" Cancelable: %r",Cancelable)
|
||||
logging.info("\033[1;32m" + "Emitting" + "\033[0m" +" Cancelable: %r",Cancelable)
|
||||
self.window_main.dbusController.Cancelable(Cancelable)
|
||||
#增加取消信号的频发机制
|
||||
self.trans_cancelable = Cancelable
|
||||
|
||||
#增加记录当产生错误的时候 详细信息
|
||||
def _on_error_changed(self, trans,error_code, error_details):
|
||||
# error_string = get_error_string_from_enum(error_code)
|
||||
# error_string = self.get_error_string_from_enum(error_code)
|
||||
self.trans_error_details = str(error_details)
|
||||
logging.error(str(error_details))
|
||||
|
||||
|
@ -375,29 +385,29 @@ class InstallBackendAptdaemon(InstallBackend):
|
|||
|
||||
#退出
|
||||
self.on_install_stage = False
|
||||
if status == EXIT_FAILED:
|
||||
error_string = get_error_string_from_enum(trans.error.code)
|
||||
error_desc = get_error_description_from_enum(trans.error.code)
|
||||
if status == self.EXIT_FAILED:
|
||||
error_string = self.get_error_string_from_enum(trans.error.code)
|
||||
error_desc = self.get_error_description_from_enum(trans.error.code)
|
||||
if self.trans_failed_msg:
|
||||
error_desc = error_desc + "\n" + self.trans_failed_msg
|
||||
#取消下载
|
||||
elif status == EXIT_CANCELLED:
|
||||
elif status == self.EXIT_CANCELLED:
|
||||
error_string = _("Failed to fetch")
|
||||
error_desc = _("_Cancel Upgrade")
|
||||
elif status == EXIT_SUCCESS and action == self.ACTION_INSTALL:
|
||||
elif status == self.EXIT_SUCCESS and action == self.ACTION_INSTALL:
|
||||
error_string = _("System upgrade is complete.")
|
||||
elif status == EXIT_SUCCESS and action == self.ACTION_REMOVE_PACKAGES:
|
||||
elif status == self.EXIT_SUCCESS and action == self.ACTION_REMOVE_PACKAGES:
|
||||
error_string = _("Uninstallation completed")
|
||||
|
||||
is_success = (status == EXIT_SUCCESS)
|
||||
is_success = (status == self.EXIT_SUCCESS)
|
||||
try:
|
||||
self._action_done(action,
|
||||
is_cancelled=(status == EXIT_CANCELLED), success=is_success,
|
||||
is_cancelled=(status == self.EXIT_CANCELLED), success=is_success,
|
||||
error_string=error_string, error_desc=error_desc)
|
||||
except TypeError:
|
||||
# this module used to be be lazily imported and in older code
|
||||
# trans_failed= is not accepted
|
||||
# TODO: this workaround can be dropped in Ubuntu 20.10
|
||||
self._action_done(action,
|
||||
is_cancelled=(status == EXIT_CANCELLED), success=is_success,
|
||||
is_cancelled=(status == self.EXIT_CANCELLED), success=is_success,
|
||||
error_string=error_string, error_desc=error_desc)
|
||||
|
|
|
@ -451,6 +451,10 @@ class InstallBackend():
|
|||
self.window_main.dbusController.PurgePackagesFinished(success,error_string,error_desc)
|
||||
|
||||
elif action == self.ACTION_INSTALL_DEB:
|
||||
#FIXME: '\r\n: \r\n\r\n'就认为是验证失败
|
||||
if success == False and '\r\n: \r\n\r\n' in self.trans_error_details:
|
||||
error_string = _("Package validation failed and installation was rejected.")
|
||||
error_desc = ''
|
||||
self.window_main.dbusController.InstalldebFinished(success,error_string,error_desc)
|
||||
|
||||
#将安装完成的插入数据库 安装失败的计算那些包安装失败了 分类插入数据库中
|
||||
|
|
|
@ -70,7 +70,8 @@ if __name__ == "__main__":
|
|||
else:
|
||||
logging.basicConfig(format=FORMAT,level=logging.DEBUG,filename = logfile(),filemode = 'a')
|
||||
|
||||
logging.info('kylin-system-updater(lang:%s) starting ...',os.environ["LANGUAGE"])
|
||||
# logging.info('kylin-system-updater(lang:%s) starting ...',os.environ["LANGUAGE"])
|
||||
logging.info('kylin-system-updater starting ...')
|
||||
|
||||
app = UpdateManager(options)
|
||||
|
||||
|
|
|
@ -2598,6 +2598,9 @@ msgstr "更新管理器升级完成,请重启控制面板后再进行系统更
|
|||
msgid "Uninstallation completed"
|
||||
msgstr "卸载完成。"
|
||||
|
||||
msgid "Package validation failed and installation was rejected."
|
||||
msgstr "软件包验证失败,拒绝安装。"
|
||||
|
||||
msgid "Other tasks are being updated and upgraded, please uninstall them later."
|
||||
msgstr "其他任务正在更新升级中,请稍后再卸载。"
|
||||
|
||||
|
|
Loading…
Reference in New Issue