public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] portage r14679 - main/trunk/pym/portage/sets
@ 2009-10-18 21:06 Zac Medico (zmedico)
  0 siblings, 0 replies; only message in thread
From: Zac Medico (zmedico) @ 2009-10-18 21:06 UTC (permalink / raw
  To: gentoo-commits

Author: zmedico
Date: 2009-10-18 21:06:39 +0000 (Sun, 18 Oct 2009)
New Revision: 14679

Modified:
   main/trunk/pym/portage/sets/__init__.py
Log:
Remove support for 'extend', 'remove', and 'intersect' sets.conf section
attributes in SetConfig.getSetAtoms() since the current implementation does
not meet user expectations, as mentioned in bug #253802, comment #5:

Package set operators currently operate on atoms, but what users really need
is for them to operate on the packages themselves. This will allow one set to
add or subtract packages from another even though the sets to not use the exact
same atoms to refer to the given packages.

I imagine the way this should be done is to create a mapping of atom -> package
for each set, perform the intersection using the packages, and then map the
package intersection back into a set of atoms.


Modified: main/trunk/pym/portage/sets/__init__.py
===================================================================
--- main/trunk/pym/portage/sets/__init__.py	2009-10-18 20:41:30 UTC (rev 14678)
+++ main/trunk/pym/portage/sets/__init__.py	2009-10-18 21:06:39 UTC (rev 14679)
@@ -155,44 +155,21 @@
 			raise PackageSetNotFound(setname)
 		myatoms = myset.getAtoms()
 		parser = self._parser
-		extend = set()
-		remove = set()
-		intersect = set()
 
 		if ignorelist is None:
 			ignorelist = set()
 
-		# If sets.conf is corrupt then emerge generates
-		# fallback sets without the 'creator' attribute.
-		if setname not in ignorelist and hasattr(myset, 'creator'):
-			if parser.has_option(myset.creator, "extend"):
-				extend.update(parser.get(myset.creator, "extend").split())
-			if parser.has_option(myset.creator, "remove"):
-				remove.update(parser.get(myset.creator, "remove").split())
-			if parser.has_option(myset.creator, "intersect"):
-				intersect.update(parser.get(myset.creator, "intersect").split())
-
 		ignorelist.add(setname)
 		for n in myset.getNonAtoms():
 			if n.startswith(SETPREFIX):
 				s = n[len(SETPREFIX):]
 				if s in self.psets:
-					extend.add(n[len(SETPREFIX):])
+					if s not in ignorelist:
+						myatoms.update(self.getSetAtoms(s,
+							ignorelist=ignorelist))
 				else:
 					raise PackageSetNotFound(s)
 
-		for s in ignorelist:
-			extend.discard(s)
-			remove.discard(s)
-			intersect.discard(s)
-
-		for s in extend:
-			myatoms.update(self.getSetAtoms(s, ignorelist=ignorelist))
-		for s in remove:
-			myatoms.difference_update(self.getSetAtoms(s, ignorelist=ignorelist))
-		for s in intersect:
-			myatoms.intersection_update(self.getSetAtoms(s, ignorelist=ignorelist))
-
 		return myatoms
 
 def load_default_config(settings, trees):




^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2009-10-18 21:06 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-18 21:06 [gentoo-commits] portage r14679 - main/trunk/pym/portage/sets Zac Medico (zmedico)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox