diff --git a/backend/SystemUpdater/UpdateManager.py b/backend/SystemUpdater/UpdateManager.py index fd8c538..ec8f9d3 100644 --- a/backend/SystemUpdater/UpdateManager.py +++ b/backend/SystemUpdater/UpdateManager.py @@ -1,6 +1,6 @@ # UpdateManager.py # -*- Mode: Python; indent-tabs-mode: nil; tab-width: 4; coding: utf-8 -*- -import os,apt +import os import apt_pkg import sys import time @@ -77,7 +77,7 @@ class UpdateManager(): self.simulate_mode = SimulateTerminal() #光盘源 - self.source_info = UpdateSourceInfo() + self.source_info = MakeSourceInit() self.install_mode = UpdateInstallMode(self) @@ -851,11 +851,37 @@ class UpdateEssentialItem(): logging.info("%s will be remove in remove pkg...",pkg) remove_pkgs.remove(pkg) -class UpdateSourceInfo(): +class MakeSourceInit(): DIR_MRDIA = "/media/" + MOUNT_SQUASHFS_PATH = "/media/kylin/kylin-test-upgrade/upgrade-pool/" def __init__(self): self.is_disc = False - + self.is_mounted = False + + def mount_squashfs(self,mount_source): + args = ["mount", "-o","loop",mount_source,self.MOUNT_SQUASHFS_PATH] + + p = subprocess.run(args, stdout=subprocess.PIPE,stderr=subprocess.STDOUT,text=True) + logging.info(str(p.stdout)) + if p.returncode == 0: + self.is_mounted = True + return True,' ' + else: + self.is_mounted = False + return False,str(p.stdout) + + def check_mount(self): + if self.is_mounted == True: + args = ["umount",self.MOUNT_SQUASHFS_PATH] + logging.info("Will be to umount the offlinesource...") + p = subprocess.run(args, stdout=subprocess.PIPE,stderr=subprocess.STDOUT,text=True) + logging.info(str(p.stdout)) + if p.returncode == 0: + self.is_mounted = False + return True + else: + return False + #判断是否为光盘源 #光盘源格式 deb file:///home/someone/packs/ def check_source(self): diff --git a/backend/SystemUpdater/UpdateManagerDbus.py b/backend/SystemUpdater/UpdateManagerDbus.py index 3dff3df..6306c1e 100755 --- a/backend/SystemUpdater/UpdateManagerDbus.py +++ b/backend/SystemUpdater/UpdateManagerDbus.py @@ -779,7 +779,18 @@ class UpdateManagerDbusController(dbus.service.Object): return str(e),'' logging.info('Current os_version: %s, release_id: %s .', os_version, update_version) return os_version,update_version - + + @dbus.service.method(UPDATER_DBUS_INTERFACE, in_signature='s', out_signature='bs') + def MountSquashfsSource(self, mount_source): + logging.info(COLORMETHOR_PREFIX+'Method'+COLORLOG_SUFFIX+' MountSquashfsSource %s',str(mount_source)) + try: + ret,dsc = self.parent.source_info.mount_squashfs(str(mount_source)) + logging.info(COLORLOG_PREFIX+"Emitting"+COLORLOG_SUFFIX+" FixBrokenStatusChanged finished = %r dec = %s",ret,dsc) + return ret,dsc + except Exception as e: + logging.error(str(e)) + return False,str(e) + #更新进度信息 0~100 进度信息 101为非预期的信号 @dbus.service.signal(UPDATER_DBUS_INTERFACE,signature='is') def UpdateDetectStatusChanged(self,progress,status): diff --git a/backend/SystemUpdater/backend/__init__.py b/backend/SystemUpdater/backend/__init__.py index ed86474..6d437cf 100644 --- a/backend/SystemUpdater/backend/__init__.py +++ b/backend/SystemUpdater/backend/__init__.py @@ -673,6 +673,8 @@ class InstallBackend(): self.window_main.dbusController.UpdateInstallFinished(success,self.now_upgrade.upgrade_content,error_string,error_desc) if success: + self.window_main.source_info.check_mount() + self.window_main.dbusController.CheckRebootRequired("self") #安装完成之后 更新一次cache logging.info("Install or Upgrade successful, so Now update Cache...") diff --git a/backend/interface.md b/backend/interface.md index e65d8f8..addf4bc 100755 --- a/backend/interface.md +++ b/backend/interface.md @@ -335,6 +335,12 @@ +#### MountSquashfsSource + +- `简介:` 挂载离线源squashfs +- `入参:` `s:` 挂载文件的位置 +- `出参:` `b:` True or False 执行的结果,`s:` 字符类型错误信息描述 + ### Signal列表 diff --git a/debian/control b/debian/control index 8c11b27..a5825c1 100644 --- a/debian/control +++ b/debian/control @@ -37,7 +37,7 @@ Depends: ${python3:Depends}, python3-psutil, python3-gi (>= 3.8), python3-yaml, - aptdaemon (>=1.1.1+bzr982-0kylin32.3k4.6), + aptdaemon (>=1.1.1+bzr982-0kylin32.3k5.2), python3-distro-info, python3-pyqt5, python3-crypto,