* [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