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] WorldSelectedSet: fix breakage for bug #539746
Date: Wed, 11 Feb 2015 18:53:56
Message-Id: 1423680806-13067-1-git-send-email-zmedico@gentoo.org
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

Replies