1. Michał Górny
  2. gentoopm


Michał Górny  committed ec043d6

Paludis: support blocking atoms.

  • Participants
  • Parent commits 5d0ad77
  • Branches master

Comments (0)

Files changed (2)

File gentoopm/paludispm/atom.py

View file
  • Ignore whitespace
 			raise InvalidAtomStringError('Incorrect atom: %s' % s)
-	def __init__(self, s, env):
+	def __init__(self, s, env, block = ''):
 		self._incomplete = False
+		self._blocking = block
 		if isinstance(s, paludis.PackageDepSpec):
 			self._atom = s
 	def __str__(self):
 		if self._incomplete:
 			raise ValueError('Unable to stringify incomplete atom')
-		return str(self._atom)
+		return '%s%s' % (self._blocking, str(self._atom))
 	def complete(self):

File gentoopm/paludispm/depend.py

View file
  • Ignore whitespace
 # (c) 2011 Michał Górny <mgorny@gentoo.org>
 # Released under the terms of the 2-clause BSD license.
-import paludis
+import paludis, re
 from gentoopm.basepm.depend import PMPackageDepSet, PMConditionalDep, \
 	PMAnyOfDep, PMAllOfDep, PMExactlyOneOfDep, PMBaseDep
 from gentoopm.paludispm.atom import PaludisAtom
+_block_re = re.compile('^!*')
 class PaludisBaseDep(PMBaseDep):
 	def __init__(self, deps, pkg):
 		self._deps = deps
 		for d in self._deps:
 			if isinstance(d, paludis.PackageDepSpec):
 				yield PaludisAtom(d, self._pkg._env)
+			elif isinstance(d, paludis.BlockDepSpec):
+				yield PaludisAtom(d.blocking, self._pkg._env,
+						block = _block_re.match(d.text).group(0))
 			elif isinstance(d, paludis.AnyDepSpec):
 				yield PaludisAnyOfDep(d, self._pkg)
 			elif isinstance(d, paludis.AllDepSpec):