Добавлена проверка на emerge при запуске update

master3.3
Mike Khiretskiy 10 years ago
parent ede765111c
commit c18456f459

@ -35,7 +35,7 @@ from package_tools import Git, Layman,\
Colors = TextState.Colors Colors = TextState.Colors
from calculate.lib.utils.files import (getProgPath, STDOUT, removeDir, from calculate.lib.utils.files import (getProgPath, STDOUT, removeDir,
PercentProgress, process) PercentProgress, process, getRunCommands)
from calculate.lib.cl_lang import (setLocalTranslate, getLazyLocalTranslate, from calculate.lib.cl_lang import (setLocalTranslate, getLazyLocalTranslate,
RegexpLocalization, _) RegexpLocalization, _)
import emerge_parser import emerge_parser
@ -115,24 +115,34 @@ class Update:
""" """
Проверить повторный запуск Проверить повторный запуск
""" """
update_running = lambda: any(os.getpid() != x
for x in search_worked_process('update', dv))
dv = self.clVars dv = self.clVars
if filter(lambda x: os.getpid() != x, if update_running():
search_worked_process('update', dv)):
if not wait_update: if not wait_update:
raise UpdateError(_("Update is already running. " raise UpdateError(_("Update is already running. "
"Try to run later.")) "Try to run later."))
else: else:
self.startTask(_("Waiting for another update to be complete")) self.startTask(_("Waiting for another update to be complete"))
while filter(lambda x: os.getpid() != x, while update_running():
search_worked_process('update', dv)):
self.pauseProcess() self.pauseProcess()
while any(ifilter(lambda x: os.getpid() != x, while update_running():
search_worked_process('update', dv))):
time.sleep(0.3) time.sleep(0.3)
self.resumeProcess() self.resumeProcess()
time.sleep(random.random()*3) time.sleep(random.random()*3)
self.endTask()
emerge_running = lambda: any("/usr/bin/emerge" in x
for x in getRunCommands())
if emerge_running():
if not wait_update:
raise UpdateError(_("Emerge is running. "
"Try to run later."))
else:
self.startTask(_("Waiting for emerge to be complete"))
while emerge_running():
time.sleep(1)
self.endTask() self.endTask()
return True return True

Loading…
Cancel
Save