From 78d8a5e4526e04524a7d5521e1b36fe41330223a Mon Sep 17 00:00:00 2001 From: Mike khiretskiy Date: Mon, 2 Jun 2014 17:58:55 +0400 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B2=D1=82=D0=BE=D1=80=D0=BE=D0=B3=D0=BE?= =?UTF-8?q?=20update?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- update/emerge_parser.py | 3 ++- update/update.py | 17 +++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/update/emerge_parser.py b/update/emerge_parser.py index d18f36d..a9064c6 100644 --- a/update/emerge_parser.py +++ b/update/emerge_parser.py @@ -233,7 +233,8 @@ class UninstallPackagesBlock(EmergeInformationBlock): def get_data(self, match): re_clean = re.compile( "^.*?({token}).*?{c}{nl}".format(token="|".join(self.token), - nl=self._new_line,c=self._color_block),re.DOTALL) + nl=self._new_line, + c=self._color_block), re.DOTALL) verbose_result = re_clean.sub("", match.group(1)) self.verbose_result = self._get_text(verbose_result) self.result = self._get_text(match.group(2)) diff --git a/update/update.py b/update/update.py index 03a9eef..70de1f3 100644 --- a/update/update.py +++ b/update/update.py @@ -14,17 +14,19 @@ # See the License for the specific language governing permissions and # limitations under the License. from itertools import ifilter +import random import sys from os import path import os import time -from calculate.core.server.gen_pid import search_worked_process +from calculate.core.server.gen_pid import search_worked_process, ProcessStatus from calculate.lib.utils.tools import AddonError from calculate.lib.utils.colortext.palette import TextState from calculate.lib.utils.colortext import get_color_print from calculate.update.emerge_parser import RevdepPercentBlock +import math from package_tools import Git, Layman,\ EmergeLogNamedTask, EmergeLog, GitError, \ @@ -120,9 +122,16 @@ class Update: "Try to run later.")) else: self.startTask(_("Waiting for another update to be complete")) - while any(ifilter(lambda x: os.getpid() != x, - search_worked_process('update', dv))): - time.sleep(0.3) + + while filter(lambda x: os.getpid() != x, + search_worked_process('update', dv)): + self.pauseProcess() + while any(ifilter(lambda x: os.getpid() != x, + search_worked_process('update', dv))): + time.sleep(0.3) + self.resumeProcess() + time.sleep(random.random()*3) + self.endTask() return True