commit: c3586c5e15c8373d08f9192713a2b03d4542faaf
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Wed Feb 11 18:53:26 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Wed Feb 11 19:05:47 2015 +0000
URL:
http://sources.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=c3586c5e
WorldSelectedSet: fix breakage for bug #539746
Since commit 3e327e8c849cf6bfb84a3a3ec5c080ab4bc4653c,
AutounmaskTestCase.testAutounmaskAndSets fails due to incorrect logic
in WorldSelectedSet._load. Fix it to load all nested atoms/sets. Also,
fix WorldSelectedSet.write so that self._pkgset and self._setset have
separate data structures. Shared data structures triggered the
corruption reported in bug #539746.
Fixes: 3e327e8c849c ("Split @selected into @selected-packages and
@selected-sets")
X-Gentoo-Bug: 539746
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=539746
---
pym/portage/_sets/files.py | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/pym/portage/_sets/files.py b/pym/portage/_sets/files.py
index 6bf05d4..26ee094 100644
--- a/pym/portage/_sets/files.py
+++ b/pym/portage/_sets/files.py
@@ -215,15 +215,14 @@ class WorldSelectedSet(EditablePackageSet):
self._setset = WorldSelectedSetsSet(eroot)
def write(self):
- self._pkgset._atoms = self._atoms
+ self._pkgset._atoms = self._atoms.copy()
self._pkgset.write()
- self._setset._nonatoms = self._nonatoms
+ self._setset._nonatoms = self._nonatoms.copy()
self._setset.write()
def load(self):
- self._pkgset.load()
- self._setset.load()
- self._setAtoms(self._pkgset._atoms | self._pkgset._nonatoms)
+ # Iterating over these sets loads them automatically.
+ self._setAtoms(chain(self._pkgset, self._setset))
def lock(self):
self._pkgset.lock()