add inhibitshutdownlock
This commit is contained in:
parent
950c64b8f4
commit
86af2d5c58
|
@ -325,6 +325,45 @@ logged_msgs = set() # type: AbstractSet[str]
|
||||||
|
|
||||||
NEVER_PIN = -32768
|
NEVER_PIN = -32768
|
||||||
|
|
||||||
|
class InhibitShutdownLock():
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.inhibit_lock = None
|
||||||
|
|
||||||
|
#安装时禁止关机 进行加锁
|
||||||
|
def lock(self, caller='Kylin System Updater'):
|
||||||
|
"""
|
||||||
|
Send a dbus signal to logind to not suspend the system, it will be
|
||||||
|
released when the return value drops out of scope
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
from gi.repository import Gio, GLib
|
||||||
|
connection = Gio.bus_get_sync(Gio.BusType.SYSTEM)
|
||||||
|
|
||||||
|
var, fdlist = connection.call_with_unix_fd_list_sync(
|
||||||
|
'org.freedesktop.login1', '/org/freedesktop/login1',
|
||||||
|
'org.freedesktop.login1.Manager', 'Inhibit',
|
||||||
|
GLib.Variant('(ssss)',
|
||||||
|
('shutdown',
|
||||||
|
caller, 'Installing Packages',
|
||||||
|
'block')),
|
||||||
|
None, 0, -1, None, None)
|
||||||
|
self.inhibit_lock = Gio.UnixInputStream(fd=fdlist.steal_fds()[var[0]])
|
||||||
|
logging.info("Shutdown Has been locked...")
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(e)
|
||||||
|
|
||||||
|
#解锁禁止关机
|
||||||
|
def unlock(self):
|
||||||
|
try:
|
||||||
|
if self.inhibit_lock != None:
|
||||||
|
self.inhibit_lock.close()
|
||||||
|
self.inhibit_lock == None
|
||||||
|
logging.info("Shutdown Has been unlocked...")
|
||||||
|
else:
|
||||||
|
logging.info("Not locked and Quitting ...")
|
||||||
|
except Exception as e:
|
||||||
|
logging.error("unlock failed." + str(e))
|
||||||
|
|
||||||
class LoggingDateTime:
|
class LoggingDateTime:
|
||||||
"""The date/time representation for the dpkg log file timestamps"""
|
"""The date/time representation for the dpkg log file timestamps"""
|
||||||
|
@ -3101,12 +3140,13 @@ def run(options, # type: Options
|
||||||
with open(PROGRESS_LOG,'w+') as f:
|
with open(PROGRESS_LOG,'w+') as f:
|
||||||
f.write('0')
|
f.write('0')
|
||||||
subprocess.Popen('dbus-send --system --type=signal / com.kylin.install.notification.InstallStart',shell=True)
|
subprocess.Popen('dbus-send --system --type=signal / com.kylin.install.notification.InstallStart',shell=True)
|
||||||
if LockedPreventShutdown():
|
inhibitshutdownlock.lock()
|
||||||
pass
|
# if LockedPreventShutdown():
|
||||||
else:
|
# pass
|
||||||
logging.error("cannot get shutdown lock,exiting...")
|
# else:
|
||||||
WriteValueToFile(UNATTENDED_UPGRADE_CONFIG_FILE_PATH,"UNATTENDED_UPGRADE","autoupdate_run_status","idle")
|
# logging.error("cannot get shutdown lock,exiting...")
|
||||||
sys.exit(1)
|
# WriteValueToFile(UNATTENDED_UPGRADE_CONFIG_FILE_PATH,"UNATTENDED_UPGRADE","autoupdate_run_status","idle")
|
||||||
|
# sys.exit(1)
|
||||||
|
|
||||||
logging.debug("InstCount=%i DelCount=%i BrokenCount=%i"
|
logging.debug("InstCount=%i DelCount=%i BrokenCount=%i"
|
||||||
% (cache._depcache.inst_count,
|
% (cache._depcache.inst_count,
|
||||||
|
@ -3118,7 +3158,8 @@ def run(options, # type: Options
|
||||||
options,
|
options,
|
||||||
logfile_dpkg)
|
logfile_dpkg)
|
||||||
|
|
||||||
unLockedEnableShutdown()
|
# unLockedEnableShutdown()
|
||||||
|
inhibitshutdownlock.unlock()
|
||||||
subprocess.Popen('dbus-send --system --type=signal / com.kylin.install.notification.InstallFinish',shell=True)
|
subprocess.Popen('dbus-send --system --type=signal / com.kylin.install.notification.InstallFinish',shell=True)
|
||||||
if pkg_install_success:
|
if pkg_install_success:
|
||||||
clean_downloaded_packages(fetcher)
|
clean_downloaded_packages(fetcher)
|
||||||
|
@ -3651,6 +3692,7 @@ if __name__ == "__main__":
|
||||||
kylin_system_updater.ConnectToSignals()
|
kylin_system_updater.ConnectToSignals()
|
||||||
kylin_system_updater.UpdateDetect()
|
kylin_system_updater.UpdateDetect()
|
||||||
kylin_system_updater.RunMainloop()
|
kylin_system_updater.RunMainloop()
|
||||||
|
inhibitshutdownlock = InhibitShutdownLock()
|
||||||
if options.download_only:
|
if options.download_only:
|
||||||
WriteValueToFile(UNATTENDED_UPGRADE_CONFIG_FILE_PATH,"UNATTENDED_UPGRADE","autoupdate_run_status","download")
|
WriteValueToFile(UNATTENDED_UPGRADE_CONFIG_FILE_PATH,"UNATTENDED_UPGRADE","autoupdate_run_status","download")
|
||||||
elif options.install_only:
|
elif options.install_only:
|
||||||
|
|
Loading…
Reference in New Issue