1 |
Since commit 3e327e8c849cf6bfb84a3a3ec5c080ab4bc4653c, |
2 |
AutounmaskTestCase.testAutounmaskAndSets fails due to incorrect logic |
3 |
in WorldSelectedSet._load. Fix it to load all nested atoms/sets. Also, |
4 |
fix WorldSelectedSet.write so that self._pkgset and self._setset have |
5 |
separate data structures. Shared data structures triggered the |
6 |
corruption reported in bug #539746. |
7 |
|
8 |
Fixes: 3e327e8c849c ("Split @selected into @selected-packages and @selected-sets") |
9 |
|
10 |
X-Gentoo-Bug: 539746 |
11 |
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=539746 |
12 |
--- |
13 |
pym/portage/_sets/files.py | 9 ++++----- |
14 |
1 file changed, 4 insertions(+), 5 deletions(-) |
15 |
|
16 |
diff --git a/pym/portage/_sets/files.py b/pym/portage/_sets/files.py |
17 |
index 6bf05d4..26ee094 100644 |
18 |
--- a/pym/portage/_sets/files.py |
19 |
+++ b/pym/portage/_sets/files.py |
20 |
@@ -215,15 +215,14 @@ class WorldSelectedSet(EditablePackageSet): |
21 |
self._setset = WorldSelectedSetsSet(eroot) |
22 |
|
23 |
def write(self): |
24 |
- self._pkgset._atoms = self._atoms |
25 |
+ self._pkgset._atoms = self._atoms.copy() |
26 |
self._pkgset.write() |
27 |
- self._setset._nonatoms = self._nonatoms |
28 |
+ self._setset._nonatoms = self._nonatoms.copy() |
29 |
self._setset.write() |
30 |
|
31 |
def load(self): |
32 |
- self._pkgset.load() |
33 |
- self._setset.load() |
34 |
- self._setAtoms(self._pkgset._atoms | self._pkgset._nonatoms) |
35 |
+ # Iterating over these sets loads them automatically. |
36 |
+ self._setAtoms(chain(self._pkgset, self._setset)) |
37 |
|
38 |
def lock(self): |
39 |
self._pkgset.lock() |
40 |
-- |
41 |
2.0.5 |