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 |