public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/gentoopm:master commit in: gentoopm/paludispm/, gentoopm/basepm/
@ 2011-07-16  8:34 Michał Górny
  0 siblings, 0 replies; 4+ messages in thread
From: Michał Górny @ 2011-07-16  8:34 UTC (permalink / raw
  To: gentoo-commits

commit:     d9df3127304481334302d83c5ceaa20b0a1ebf36
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 16 08:33:40 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jul 16 08:33:40 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=d9df3127

Paludis: fix PackageSet inheritance/filtering.

---
 gentoopm/basepm/pkgset.py    |    2 --
 gentoopm/paludispm/pkgset.py |   16 +++++++++++-----
 gentoopm/paludispm/repo.py   |    9 ++++-----
 3 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/gentoopm/basepm/pkgset.py b/gentoopm/basepm/pkgset.py
index 4c7cb7c..1e96527 100644
--- a/gentoopm/basepm/pkgset.py
+++ b/gentoopm/basepm/pkgset.py
@@ -164,5 +164,3 @@ class PMFilteredPackageSet(PMPackageSet):
 		for el in self._src:
 			if el._matches(*self._args, **self._kwargs):
 				yield el
-
-

diff --git a/gentoopm/paludispm/pkgset.py b/gentoopm/paludispm/pkgset.py
index 98cc4f5..f41fd16 100644
--- a/gentoopm/paludispm/pkgset.py
+++ b/gentoopm/paludispm/pkgset.py
@@ -5,12 +5,18 @@
 
 from gentoopm.basepm.pkgset import PMPackageSet, PMFilteredPackageSet
 from gentoopm.exceptions import EmptyPackageSetError, AmbiguousPackageSetError
+from gentoopm.paludispm.atom import PaludisAtom
 
-class PaludisPackageSet(PMPackageSet):
-	_sorted = False
+class PaludisPackageSet(object):
+	def __init__(self, env, issorted = False):
+		self._env = env
+		self._sorted = issorted
 
 	def filter(self, *args, **kwargs):
-		return PaludisFilteredPackageSet(self, args, kwargs)
+		newargs = [(a if not isinstance(a, str)
+			else PaludisAtom(a)) for a in args]
+
+		return PaludisFilteredPackageSet(self, newargs, kwargs)
 
 	@property
 	def best(self):
@@ -32,7 +38,7 @@ class PaludisPackageSet(PMPackageSet):
 		else:
 			return PMPackageSet.best.fget(self)
 
-class PaludisFilteredPackageSet(PMFilteredPackageSet, PaludisPackageSet):
+class PaludisFilteredPackageSet(PaludisPackageSet, PMFilteredPackageSet):
 	def __init__(self, pset, args, kwargs):
-		self._sorted = pset._sorted
+		PaludisPackageSet.__init__(self, pset._env, pset._sorted)
 		PMFilteredPackageSet.__init__(self, pset, args, kwargs)

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index c9817f8..e1be9cc 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -25,8 +25,7 @@ class PaludisEnumID(object):
 
 class PaludisRepository(PMRepository, PaludisPackageSet):
 	def __init__(self, env):
-		self._env = env
-		self._sorted = True
+		PaludisPackageSet.__init__(self, env, True)
 
 	@property
 	def _gen(self):
@@ -55,9 +54,9 @@ class PaludisRepository(PMRepository, PaludisPackageSet):
 				newargs.append(f)
 
 		if id(pset) == id(self):
-			return PaludisPackageSet.filter(self, args, kwargs)
+			return PaludisPackageSet.filter(self, *args, **kwargs)
 		elif newargs or kwargs:
-			return pset.filter(self, newargs, kwargs)
+			return pset.filter(*newargs, **kwargs)
 		else:
 			return pset
 
@@ -100,7 +99,7 @@ class PaludisLivefsRepository(PaludisRepository, PMEbuildRepository):
 
 class PaludisInstalledRepo(PaludisRepository):
 	def __init__(self, env):
-		self._env = env
+		PaludisRepository.__init__(self, env)
 		for r in env.repositories:
 			if str(r.name) == 'installed': # XXX
 				self._repo = r



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [gentoo-commits] proj/gentoopm:master commit in: gentoopm/paludispm/, gentoopm/basepm/
@ 2011-07-23  9:27 Michał Górny
  0 siblings, 0 replies; 4+ messages in thread
From: Michał Górny @ 2011-07-23  9:27 UTC (permalink / raw
  To: gentoo-commits

commit:     d9388437a685c70db9dca26764873824e995c69e
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 23 09:21:58 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jul 23 09:21:58 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=d9388437

Make repository comparison support obligatory.

---
 gentoopm/basepm/repo.py    |    8 ++++++--
 gentoopm/paludispm/repo.py |    3 +++
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/gentoopm/basepm/repo.py b/gentoopm/basepm/repo.py
index 8456a13..e9beca7 100644
--- a/gentoopm/basepm/repo.py
+++ b/gentoopm/basepm/repo.py
@@ -7,7 +7,7 @@ import os.path
 from abc import abstractmethod, abstractproperty
 
 from gentoopm.basepm.pkgset import PMPackageSet
-from gentoopm.util import ABCObject, FillMissingNotEqual
+from gentoopm.util import ABCObject, FillMissingComparisons
 
 class PMRepositoryDict(ABCObject):
 	"""
@@ -71,7 +71,7 @@ class PMRepository(PMPackageSet):
 	Base abstract class for a single repository.
 	"""
 
-class PMEbuildRepository(PMRepository, FillMissingNotEqual):
+class PMEbuildRepository(PMRepository, FillMissingComparisons):
 	"""
 	Base abstract class for an ebuild repository (on livefs).
 	"""
@@ -95,6 +95,10 @@ class PMEbuildRepository(PMRepository, FillMissingNotEqual):
 		"""
 		pass
 
+	@abstractmethod
+	def __lt__(self, other):
+		pass
+
 	def __eq__(self, other):
 		if not isinstance(other, self.__class__):
 			return False

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index 3f82bcd..6179c9a 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -109,6 +109,9 @@ class PaludisLivefsRepository(PaludisBaseRepo, PMEbuildRepository):
 	def path(self):
 		return self._repo.location_key().parse_value()
 
+	def __lt__(self, other):
+		return self._env.more_important_than(other.name, self.name)
+
 class PaludisInstalledRepo(PaludisBaseRepo):
 	_pkg_class = PaludisInstalledID
 



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [gentoo-commits] proj/gentoopm:master commit in: gentoopm/paludispm/, gentoopm/basepm/
@ 2011-07-25 19:06 Michał Górny
  0 siblings, 0 replies; 4+ messages in thread
From: Michał Górny @ 2011-07-25 19:06 UTC (permalink / raw
  To: gentoo-commits

commit:     0ec9072da7ca19f8028d4b602f3bc2f331372f67
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Mon Jul 25 18:24:53 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Jul 25 18:24:53 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=0ec9072d

Paludis: support getting depsets.

---
 gentoopm/basepm/depend.py    |   40 ++++++++++++++++++++++++++++++++++++++
 gentoopm/basepm/pkg.py       |   27 +++++++++++++++++++++++++
 gentoopm/paludispm/depend.py |   44 ++++++++++++++++++++++++++++++++++++++++++
 gentoopm/paludispm/pkg.py    |   19 ++++++++++++++++++
 4 files changed, 130 insertions(+), 0 deletions(-)

diff --git a/gentoopm/basepm/depend.py b/gentoopm/basepm/depend.py
new file mode 100644
index 0000000..f1245c1
--- /dev/null
+++ b/gentoopm/basepm/depend.py
@@ -0,0 +1,40 @@
+#!/usr/bin/python
+#	vim:fileencoding=utf-8
+# (c) 2011 Michał Górny <mgorny@gentoo.org>
+# Released under the terms of the 2-clause BSD license.
+
+from abc import abstractmethod, abstractproperty
+
+from gentoopm.util import ABCObject
+
+class PMPackageDepSet(ABCObject):
+	"""
+	A base class representing a depset of a single package.
+	"""
+
+	def __iter__(self):
+		raise NotImplementedError('Working with raw depsets is not supported')
+
+	@abstractproperty
+	def evaluated(self):
+		"""
+		Get the evaluated depset (i.e. with all conditionals and one-of sets
+		collapsed).
+
+		@type: L{PMPackageFinalDepSet}
+		"""
+		pass
+
+class PMPackageFinalDepSet(ABCObject):
+	"""
+	A base class representing a collapsed depset.
+	"""
+
+	@abstractmethod
+	def __iter__(self):
+		"""
+		Iterate over dependency atoms.
+
+		@rtype: iter(L{PMAtom})
+		"""
+		pass

diff --git a/gentoopm/basepm/pkg.py b/gentoopm/basepm/pkg.py
index ec89179..d4f421f 100644
--- a/gentoopm/basepm/pkg.py
+++ b/gentoopm/basepm/pkg.py
@@ -213,6 +213,33 @@ class PMPackage(PMAtom, FillMissingComparisons):
 			return None
 		return PMPackageEnvironment(p)
 
+	@property
+	def build_dependencies(self):
+		"""
+		Get the package build dependencies (C{DEPEND}).
+
+		@type: L{PMPackageDepSet}
+		"""
+		pass
+
+	@property
+	def run_dependencies(self):
+		"""
+		Get the package runtime dependencies (C{RDEPEND}).
+
+		@type: L{PMPackageDepSet}
+		"""
+		pass
+
+	@property
+	def post_dependencies(self):
+		"""
+		Get the package post-installed dependencies (C{PDEPEND}).
+
+		@type: L{PMPackageDepSet}
+		"""
+		pass
+
 	@abstractproperty
 	def slotted(self):
 		"""

diff --git a/gentoopm/paludispm/depend.py b/gentoopm/paludispm/depend.py
new file mode 100644
index 0000000..2c564a5
--- /dev/null
+++ b/gentoopm/paludispm/depend.py
@@ -0,0 +1,44 @@
+#!/usr/bin/python
+#	vim:fileencoding=utf-8
+# (c) 2011 Michał Górny <mgorny@gentoo.org>
+# Released under the terms of the 2-clause BSD license.
+
+import paludis
+
+from gentoopm.basepm.depend import PMPackageDepSet, \
+		PMPackageFinalDepSet
+from gentoopm.paludispm.atom import PaludisAtom
+
+class PaludisPackageDepSet(PMPackageDepSet):
+	def __init__(self, deps, pkg):
+		self._deps = deps
+		self._pkg = pkg
+
+	@property
+	def evaluated(self):
+		return PaludisPackageFinalDepSet(
+				self._deps, self._pkg)
+
+class PaludisPackageFinalDepSet(PMPackageFinalDepSet):
+	def __init__(self, deps, pkg):
+		self._deps = deps
+		self._pkg = pkg
+
+	def _ideps(self, deps):
+		for d in deps:
+			if isinstance(d, paludis.PackageDepSpec):
+				yield PaludisAtom(d, self._pkg._env)
+			elif isinstance(d, paludis.AnyDepSpec):
+				# XXX, use something better here
+				for a in self._ideps((next(iter(d)),)):
+					yield a
+			elif isinstance(d, paludis.ConditionalDepSpec):
+				if d.condition_met(self._pkg._env, self._pkg._pkg):
+					for a in self._ideps(d):
+						yield a
+			else:
+				raise NotImplementedError('Unable to parse %s' % repr(d))
+
+	def __iter__(self):
+		for r in self._ideps(self._deps):
+			yield r

diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
index 97d64cd..08398ae 100644
--- a/gentoopm/paludispm/pkg.py
+++ b/gentoopm/paludispm/pkg.py
@@ -12,6 +12,7 @@ from gentoopm.basepm.pkg import PMPackage, PMPackageDescription, \
 from gentoopm.paludispm.atom import PaludisAtom, \
 		PaludisPackageKey, PaludisPackageVersion
 from gentoopm.paludispm.contents import PaludisPackageContents
+from gentoopm.paludispm.depend import PaludisPackageDepSet
 from gentoopm.util import SpaceSepTuple
 
 class PaludisBoundPackageKey(PaludisPackageKey, PMBoundPackageKey):
@@ -95,6 +96,24 @@ class PaludisID(PMPackage, PaludisAtom):
 		return str(self._pkg.repository_name)
 
 	@property
+	def build_dependencies(self):
+		return PaludisPackageDepSet(
+				self._pkg.build_dependencies_key().parse_value(),
+				self)
+
+	@property
+	def run_dependencies(self):
+		return PaludisPackageDepSet(
+				self._pkg.run_dependencies_key().parse_value(),
+				self)
+
+	@property
+	def post_dependencies(self):
+		return PaludisPackageDepSet(
+				self._pkg.post_dependencies_key().parse_value(),
+				self)
+
+	@property
 	def _atom(self):
 		return self._pkg.uniquely_identifying_spec()
 



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [gentoo-commits] proj/gentoopm:master commit in: gentoopm/paludispm/, gentoopm/basepm/
@ 2011-07-29 19:47 Michał Górny
  0 siblings, 0 replies; 4+ messages in thread
From: Michał Górny @ 2011-07-29 19:47 UTC (permalink / raw
  To: gentoo-commits

commit:     15b6dad42b78ac3582de909c2ed85861e18f5727
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 29 19:47:54 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jul 29 19:47:54 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=15b6dad4

Drop the default property from PMUseFlag.

It is not really useful and troublesome to maintain.

---
 gentoopm/basepm/pkg.py    |   15 +--------------
 gentoopm/paludispm/pkg.py |   16 ++++------------
 2 files changed, 5 insertions(+), 26 deletions(-)

diff --git a/gentoopm/basepm/pkg.py b/gentoopm/basepm/pkg.py
index 397ff7f..efb80e7 100644
--- a/gentoopm/basepm/pkg.py
+++ b/gentoopm/basepm/pkg.py
@@ -82,20 +82,7 @@ class PMUseFlag(ABCObject, StringCompat):
 		@param usestr: the IUSE atom (C{[+-]?flag})
 		@type usestr: string
 		"""
-		self._default = None
-		if usestr[0] in ('-', '+'):
-			self._default = (usestr[0] == '+')
-			usestr = usestr[1:]
-		self._name = usestr
-
-	@property
-	def default(self):
-		"""
-		The default state, if provided by the ebuild.
-
-		@type: bool/C{None}
-		"""
-		return self._default
+		self._name = usestr.lstrip('+-')
 
 	@property
 	def name(self):

diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
index fe680ee..0c5d567 100644
--- a/gentoopm/paludispm/pkg.py
+++ b/gentoopm/paludispm/pkg.py
@@ -41,29 +41,22 @@ class PaludisPackageDescription(PMPackageDescription):
 		return k.parse_value() if k is not None else None
 
 class PaludisChoice(PMUseFlag):
-	def __init__(self, choice, default = None):
+	def __init__(self, choice):
 		self._c = choice
-		self._default = default
-
-	@property
-	def default(self):
-		return self._default
 
 	@property
 	def name(self):
 		return str(self._c.name_with_prefix)
 
 class PaludisChoiceSet(SpaceSepFrozenSet):
-	def __new__(self, choices, iuse):
-		iuse = SpaceSepFrozenSet([PMUseFlag(x) for x in iuse])
+	def __new__(self, choices):
 		l = []
 		for group in choices:
 			if group.raw_name == 'build_options': # paludis specific
 				continue
 			for c in group:
 				if c.explicitly_listed:
-					miuse = iuse[str(c.name_with_prefix)]
-					l.append(PaludisChoice(c, miuse.default))
+					l.append(PaludisChoice(c))
 		return SpaceSepFrozenSet.__new__(self, l)
 
 class PaludisID(PMPackage, PaludisAtom):
@@ -173,8 +166,7 @@ class PaludisID(PMPackage, PaludisAtom):
 	@property
 	def use(self):
 		return PaludisChoiceSet(
-				self._get_meta(self._pkg.choices_key()),
-				self._get_meta('IUSE'))
+				self._get_meta(self._pkg.choices_key()))
 
 	@property
 	def _atom(self):



^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2011-07-29 19:47 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-29 19:47 [gentoo-commits] proj/gentoopm:master commit in: gentoopm/paludispm/, gentoopm/basepm/ Michał Górny
  -- strict thread matches above, loose matches on Subject: below --
2011-07-25 19:06 Michał Górny
2011-07-23  9:27 Michał Górny
2011-07-16  8:34 Michał Górny

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