Gentoo Archives: gentoo-portage-dev

From: Zac Medico <zmedico@g.o>
To: gentoo-portage-dev@l.g.o
Cc: Zac Medico <zmedico@g.o>
Subject: [gentoo-portage-dev] [PATCH] SyncManager.async: initialize attributes before fork (bug 561234)
Date: Wed, 23 Sep 2015 16:18:51
Message-Id: 1443025092-3469-1-git-send-email-zmedico@gentoo.org
1 Since commit 496ff326dc18890889d1ea5d2aec590394635960, the pre_sync
2 method executes in a forked child process. Therefore, initialize
3 attributes before the fork (in the async method).
4
5 Fixes: 496ff326dc18 ("sync repositories in parallel (bug 557426)")
6 X-Gentoo-Bug: 561234
7 X-Gentoo-Bug-url: https://bugs.gentoo.org/show_bug.cgi?id=561234
8 ---
9 pym/portage/sync/controller.py | 6 +++---
10 1 file changed, 3 insertions(+), 3 deletions(-)
11
12 diff --git a/pym/portage/sync/controller.py b/pym/portage/sync/controller.py
13 index e992cc4..5471841 100644
14 --- a/pym/portage/sync/controller.py
15 +++ b/pym/portage/sync/controller.py
16 @@ -115,6 +115,9 @@ class SyncManager(object):
17 return []
18
19 def async(self, emerge_config=None, repo=None):
20 + self.settings, self.trees, self.mtimedb = emerge_config
21 + self.xterm_titles = "notitles" not in self.settings.features
22 + self.portdb = self.trees[self.settings['EROOT']]['porttree'].dbapi
23 proc = AsyncFunction(target=self.sync,
24 kwargs=dict(emerge_config=emerge_config, repo=repo))
25 proc.addExitListener(self._sync_callback)
26 @@ -199,13 +202,10 @@ class SyncManager(object):
27
28
29 def pre_sync(self, repo):
30 - self.settings, self.trees, self.mtimedb = self.emerge_config
31 - self.xterm_titles = "notitles" not in self.settings.features
32 msg = ">>> Syncing repository '%s' into '%s'..." \
33 % (repo.name, repo.location)
34 self.logger(self.xterm_titles, msg)
35 writemsg_level(msg + "\n")
36 - self.portdb = self.trees[self.settings['EROOT']]['porttree'].dbapi
37 try:
38 st = os.stat(repo.location)
39 except OSError:
40 --
41 2.4.6

Replies