From c18456f45988c71e980daaafdf05cd11036d74f7 Mon Sep 17 00:00:00 2001 From: Mike Khiretskiy Date: Wed, 25 Jun 2014 17:25:35 +0400 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BD=D0=B0=20emerge=20=D0=BF=D1=80=D0=B8=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BF=D1=83=D1=81=D0=BA=D0=B5=20update?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- update/update.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/update/update.py b/update/update.py index 258192c..eaf030a 100644 --- a/update/update.py +++ b/update/update.py @@ -35,7 +35,7 @@ from package_tools import Git, Layman,\ Colors = TextState.Colors from calculate.lib.utils.files import (getProgPath, STDOUT, removeDir, - PercentProgress, process) + PercentProgress, process, getRunCommands) from calculate.lib.cl_lang import (setLocalTranslate, getLazyLocalTranslate, RegexpLocalization, _) 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 - if filter(lambda x: os.getpid() != x, - search_worked_process('update', dv)): + if update_running(): if not wait_update: raise UpdateError(_("Update is already running. " "Try to run later.")) else: self.startTask(_("Waiting for another update to be complete")) - while filter(lambda x: os.getpid() != x, - search_worked_process('update', dv)): + while update_running(): self.pauseProcess() - while any(ifilter(lambda x: os.getpid() != x, - search_worked_process('update', dv))): + while update_running(): time.sleep(0.3) self.resumeProcess() 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() return True