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

commit:     92537be60a116b1633c55b34df3c69a9cb8f5629
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Jul  6 20:12:23 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Jul  6 20:13:20 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=92537be6

paludis: support sorting ebuilds.

---
 gentoopm/paludispm/__init__.py |    7 ++++++-
 gentoopm/paludispm/pkg.py      |   10 ++++++----
 gentoopm/paludispm/repo.py     |   22 +++++++++++++++++++---
 3 files changed, 31 insertions(+), 8 deletions(-)

diff --git a/gentoopm/paludispm/__init__.py b/gentoopm/paludispm/__init__.py
index 4e62095..e06b5aa 100644
--- a/gentoopm/paludispm/__init__.py
+++ b/gentoopm/paludispm/__init__.py
@@ -6,7 +6,8 @@
 import paludis
 
 from gentoopm.basepm import PackageManager
-from gentoopm.paludispm.repo import PaludisRepoDict, PaludisInstalledRepo
+from gentoopm.paludispm.repo import PaludisRepoDict, PaludisInstalledRepo, \
+		PaludisStackRepo
 
 class PaludisPM(PackageManager):
 	name = 'paludis'
@@ -21,3 +22,7 @@ class PaludisPM(PackageManager):
 	@property
 	def installed(self):
 		return PaludisInstalledRepo(self._env)
+
+	@property
+	def stack(self):
+		return PaludisStackRepo(self._env)

diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
index c816f96..99fc707 100644
--- a/gentoopm/paludispm/pkg.py
+++ b/gentoopm/paludispm/pkg.py
@@ -9,8 +9,10 @@ from gentoopm.basepm.metadata import PMPackageMetadata
 from gentoopm.basepm.pkg import PMPackage
 
 class PaludisID(PMPackage):
-	def __init__(self, pkg):
+	def __init__(self, pkg, num = 0, enum_id = None):
 		self._pkg = pkg
+		self._num = num
+		self._enum_id = enum_id
 
 	@property
 	def metadata(self):
@@ -24,9 +26,9 @@ class PaludisID(PMPackage):
 		if not isinstance(other, PaludisID):
 			raise TypeError('Unable to compare %s against %s' % \
 					self, other)
-		if self._pkg.name != other._pkg.name:
-			raise TypeError('Unable to compare IDs with different PNs')
-		return self._pkg.version.__cmp__(other._pkg.version)
+		if self._enum_id != other._enum_id:
+			raise TypeError('Unable to compare results of two enumerations')
+		return cmp(self._num, other._num)
 
 class PaludisMetadata(PMPackageMetadata):
 	def __init__(self, pkg):

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index 71214de..cd8cc16 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -18,13 +18,29 @@ class PaludisRepoDict(PMRepositoryDict):
 	def __init__(self, env):
 		self._env = env
 
+class PaludisEnumID(object):
+	pass
+
 class PaludisRepository(PMRepository):
+	def __init__(self, env):
+		self._env = env
+
 	def __iter__(self):
-		for p in self._env[paludis.Selection.AllVersionsSorted(
+		enum = PaludisEnumID()
+		for i, p in enumerate(self._env[paludis.Selection.AllVersionsSorted(
 				paludis.FilteredGenerator(
 					paludis.Generator.InRepository(self._repo.name),
-					paludis.Filter.All()))]:
-			yield PaludisID(p)
+					paludis.Filter.All()))]):
+			yield PaludisID(p, i, enum)
+
+class PaludisStackRepo(PaludisRepository):
+	def __iter__(self):
+		enum = PaludisEnumID()
+		for i, p in enumerate(self._env[paludis.Selection.AllVersionsSorted(
+				paludis.FilteredGenerator(
+					paludis.Generator.All(),
+					paludis.Filter.SupportsInstallAction()))]):
+			yield PaludisID(p, i, enum)
 
 class PaludisLivefsRepository(PaludisRepository, PMEbuildRepository):
 	def __init__(self, repo_obj, env):



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

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

commit:     b6feaf9e3476a4cb6166ea80a206b090a5f5b299
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jul  8 07:06:23 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jul  8 07:06:23 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=b6feaf9e

Paludis: use wildcard atoms for category unspecified.

Instead of expanding category, use '*' wildcard.

---
 gentoopm/paludispm/atom.py |   28 +++++++++++++++++++---------
 1 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/gentoopm/paludispm/atom.py b/gentoopm/paludispm/atom.py
index 5e1949d..a67a308 100644
--- a/gentoopm/paludispm/atom.py
+++ b/gentoopm/paludispm/atom.py
@@ -3,23 +3,33 @@
 # (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.atom import PMAtom
 
+_category_wildcard_re = re.compile(r'\w')
+
 class PaludisAtom(PMAtom):
-	def __init__(self, s, pm):
+	def _init_atom(self, s, pm, wildcards = False):
+		opts = paludis.UserPackageDepSpecOptions() \
+				+ paludis.UserPackageDepSpecOption.NO_DISAMBIGUATION
+		if wildcards:
+			opts += paludis.UserPackageDepSpecOption.ALLOW_WILDCARDS
+
 		try:
 			self._atom = paludis.parse_user_package_dep_spec(
-					s, pm._env,
-					paludis.UserPackageDepSpecOptions(),
+					s, pm._env, opts,
 					paludis.Filter.All())
-		except (paludis.BadVersionOperatorError, paludis.PackageDepSpecError):
+		except (paludis.BadVersionOperatorError, paludis.PackageDepSpecError,
+				paludis.RepositoryNameError):
 			raise ValueError('Incorrect atom: %s' % s)
-		except paludis.AmbiguousPackageNameError:
-			raise KeyError('Ambiguous atom: %s' % s)
-		except paludis.NoSuchPackageError:
-			raise KeyError('Unable to expand atom: %s' % s)
+
+	def __init__(self, s, pm):
+		try:
+			self._init_atom(s, pm)
+		except ValueError:
+			# try */ for the category
+			self._init_atom(_category_wildcard_re.sub(r'*/\g<0>', s, 1), pm, True)
 
 	def __contains__(self, pkg):
 		raise NotImplementedError('Direct atom matching not implemented in Paludis')



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

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

commit:     b0572d4b95f033e6f1d9c360e8d60fa0828e5d8a
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jul  8 16:38:07 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jul  8 16:38:07 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=b0572d4b

Paludis: don't sort if sorted already.

---
 gentoopm/paludispm/pkg.py  |   26 +++++++++++++++++++++++++-
 gentoopm/paludispm/repo.py |    3 ++-
 2 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
index 923376e..5f40984 100644
--- a/gentoopm/paludispm/pkg.py
+++ b/gentoopm/paludispm/pkg.py
@@ -10,11 +10,35 @@ from gentoopm.basepm.pkg import PMPackageSet, PMPackage, \
 		PMFilteredPackageSet
 
 class PaludisPackageSet(PMPackageSet):
+	_sorted = False
+
 	def filter(self, *args, **kwargs):
 		return PaludisFilteredPackageSet(self, args, kwargs)
 
+	@property
+	def best(self):
+		if self._sorted:
+			it = iter(self)
+
+			try:
+				f = next(it)
+			except StopIteration:
+				raise TypeError('.best called on an empty set')
+			for p in it:
+				if p.key != f.key:
+					raise KeyError('.best called on a set of differently-named packages')
+
+			try:
+				return p
+			except NameError:
+				return f
+		else:
+			return PMPackageSet.best.fget(self)
+
 class PaludisFilteredPackageSet(PMFilteredPackageSet, PaludisPackageSet):
-	pass
+	def __init__(self, pset, args, kwargs):
+		self._sorted = pset._sorted
+		PMFilteredPackageSet.__init__(self, pset, args, kwargs)
 
 class PaludisID(PMPackage):
 	def __init__(self, pkg, num = 0, enum_id = None):

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index 217242f..0a884fd 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -24,6 +24,7 @@ class PaludisEnumID(object):
 class PaludisRepository(PMRepository, PaludisPackageSet):
 	def __init__(self, env):
 		self._env = env
+		self._sorted = True
 
 	def __iter__(self):
 		enum = PaludisEnumID()
@@ -44,7 +45,7 @@ class PaludisStackRepo(PaludisRepository):
 
 class PaludisLivefsRepository(PaludisRepository, PMEbuildRepository):
 	def __init__(self, repo_obj, env):
-		self._env = env
+		PaludisRepository.__init__(self, env)
 		self._repo = repo_obj
 
 	@property



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

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

commit:     b2431df1d848cac88618598beb0799ef6f23802f
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jul  8 15:37:20 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jul  8 15:38:26 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=b2431df1

Paludis: wrap PackageSets.

---
 gentoopm/paludispm/pkg.py  |   10 +++++++++-
 gentoopm/paludispm/repo.py |    4 ++--
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
index 017cd07..923376e 100644
--- a/gentoopm/paludispm/pkg.py
+++ b/gentoopm/paludispm/pkg.py
@@ -6,7 +6,15 @@
 import paludis
 
 from gentoopm.basepm.metadata import PMPackageMetadata
-from gentoopm.basepm.pkg import PMPackage
+from gentoopm.basepm.pkg import PMPackageSet, PMPackage, \
+		PMFilteredPackageSet
+
+class PaludisPackageSet(PMPackageSet):
+	def filter(self, *args, **kwargs):
+		return PaludisFilteredPackageSet(self, args, kwargs)
+
+class PaludisFilteredPackageSet(PMFilteredPackageSet, PaludisPackageSet):
+	pass
 
 class PaludisID(PMPackage):
 	def __init__(self, pkg, num = 0, enum_id = None):

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index cd8cc16..217242f 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -7,7 +7,7 @@ import paludis
 
 from gentoopm.basepm.repo import PMRepository, PMRepositoryDict, \
 		PMEbuildRepository
-from gentoopm.paludispm.pkg import PaludisID
+from gentoopm.paludispm.pkg import PaludisID, PaludisPackageSet
 
 class PaludisRepoDict(PMRepositoryDict):
 	def __iter__(self):
@@ -21,7 +21,7 @@ class PaludisRepoDict(PMRepositoryDict):
 class PaludisEnumID(object):
 	pass
 
-class PaludisRepository(PMRepository):
+class PaludisRepository(PMRepository, PaludisPackageSet):
 	def __init__(self, env):
 		self._env = env
 



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

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

commit:     87eed3cc74ea06f0b6cb4cf2ebb18b27ee508e6f
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jul  8 21:00:18 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jul  8 21:00:18 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=87eed3cc

Paludis: support atom matching.

---
 gentoopm/paludispm/repo.py |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index 01f57a8..caa29e8 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -40,6 +40,38 @@ class PaludisRepository(PMRepository, PaludisPackageSet):
 				paludis.FilteredGenerator(self._gen, self._filt))]):
 			yield PaludisID(p, i, enum)
 
+	def filter(self, *args, **kwargs):
+		pset = self
+		newargs = []
+
+		for f in args:
+			if not callable(f): # an atom!
+				pset = PaludisAtomFilteredRepo(pset, f)
+			else:
+				newargs.append(f)
+
+		if pset == self:
+			return PaludisPackageSet.filter(self, args, kwargs)
+		elif newargs or kwargs:
+			return pset.filter(self, newargs, kwargs)
+		else:
+			return pset
+
+class PaludisAtomFilteredRepo(PaludisRepository):
+	@property
+	def _gen(self):
+		return self._mygen
+
+	@property
+	def _filt(self):
+		return self._myfilt
+
+	def __init__(self, repo, atom):
+		PaludisRepository.__init__(self, repo._env)
+		self._myfilt = repo._filt
+		self._mygen = repo._gen & paludis.Generator.Matches(atom._atom,
+				paludis.MatchPackageOptions())
+
 class PaludisStackRepo(PaludisRepository):
 	@property
 	def _gen(self):



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

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

commit:     094ce09c41677dc13db2de512213d0c49f066a8e
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jul  8 20:45:22 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jul  8 20:45:22 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=094ce09c

Paludis: make __iter__() a little more reusable.

---
 gentoopm/paludispm/repo.py |   26 ++++++++++++++++----------
 1 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index 0a884fd..01f57a8 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -26,22 +26,28 @@ class PaludisRepository(PMRepository, PaludisPackageSet):
 		self._env = env
 		self._sorted = True
 
+	@property
+	def _gen(self):
+		return paludis.Generator.InRepository(self._repo.name)
+
+	@property
+	def _filt(self):
+		return paludis.Filter.All()
+
 	def __iter__(self):
 		enum = PaludisEnumID()
 		for i, p in enumerate(self._env[paludis.Selection.AllVersionsSorted(
-				paludis.FilteredGenerator(
-					paludis.Generator.InRepository(self._repo.name),
-					paludis.Filter.All()))]):
+				paludis.FilteredGenerator(self._gen, self._filt))]):
 			yield PaludisID(p, i, enum)
 
 class PaludisStackRepo(PaludisRepository):
-	def __iter__(self):
-		enum = PaludisEnumID()
-		for i, p in enumerate(self._env[paludis.Selection.AllVersionsSorted(
-				paludis.FilteredGenerator(
-					paludis.Generator.All(),
-					paludis.Filter.SupportsInstallAction()))]):
-			yield PaludisID(p, i, enum)
+	@property
+	def _gen(self):
+		return paludis.Generator.All()
+
+	@property
+	def _filt(self):
+		return paludis.Filter.SupportInstallAction()
 
 class PaludisLivefsRepository(PaludisRepository, PMEbuildRepository):
 	def __init__(self, repo_obj, env):



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

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

commit:     aa999b70254436b82cf62391c8662821da359df7
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jul  9 07:21:25 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jul  9 07:21:25 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=aa999b70

Paludis: match PaludisAtom explicitly.

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

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index caa29e8..fbf8207 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -7,6 +7,7 @@ import paludis
 
 from gentoopm.basepm.repo import PMRepository, PMRepositoryDict, \
 		PMEbuildRepository
+from gentoopm.paludispm.atom import PaludisAtom
 from gentoopm.paludispm.pkg import PaludisID, PaludisPackageSet
 
 class PaludisRepoDict(PMRepositoryDict):
@@ -45,7 +46,7 @@ class PaludisRepository(PMRepository, PaludisPackageSet):
 		newargs = []
 
 		for f in args:
-			if not callable(f): # an atom!
+			if isinstance(f, PaludisAtom):
 				pset = PaludisAtomFilteredRepo(pset, f)
 			else:
 				newargs.append(f)



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

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

commit:     1959ef7497bd0bd79927099dc5281dd7bc54b22b
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Jul 10 22:15:46 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun Jul 10 22:17:02 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=1959ef74

Paludis: pass environment to atom initializer instead of pm.

---
 gentoopm/paludispm/__init__.py |    2 +-
 gentoopm/paludispm/atom.py     |   10 +++++-----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/gentoopm/paludispm/__init__.py b/gentoopm/paludispm/__init__.py
index 060eb2b..cb7fc69 100644
--- a/gentoopm/paludispm/__init__.py
+++ b/gentoopm/paludispm/__init__.py
@@ -30,4 +30,4 @@ class PaludisPM(PackageManager):
 
 	@property
 	def Atom(self):
-		return functools.partial(PaludisAtom, pm = self)
+		return functools.partial(PaludisAtom, env = self._env)

diff --git a/gentoopm/paludispm/atom.py b/gentoopm/paludispm/atom.py
index 85bc81e..38557ce 100644
--- a/gentoopm/paludispm/atom.py
+++ b/gentoopm/paludispm/atom.py
@@ -11,7 +11,7 @@ from gentoopm.exceptions import InvalidAtomStringError
 _category_wildcard_re = re.compile(r'\w')
 
 class PaludisAtom(PMAtom):
-	def _init_atom(self, s, pm, wildcards = False):
+	def _init_atom(self, s, env, wildcards = False):
 		opts = paludis.UserPackageDepSpecOptions() \
 				+ paludis.UserPackageDepSpecOption.NO_DISAMBIGUATION
 		if wildcards:
@@ -19,18 +19,18 @@ class PaludisAtom(PMAtom):
 
 		try:
 			self._atom = paludis.parse_user_package_dep_spec(
-					s, pm._env, opts,
+					s, env, opts,
 					paludis.Filter.All())
 		except (paludis.BadVersionOperatorError, paludis.PackageDepSpecError,
 				paludis.RepositoryNameError):
 			raise InvalidAtomStringError('Incorrect atom: %s' % s)
 
-	def __init__(self, s, pm):
+	def __init__(self, s, env):
 		try:
-			self._init_atom(s, pm)
+			self._init_atom(s, env)
 		except InvalidAtomStringError:
 			# try */ for the category
-			self._init_atom(_category_wildcard_re.sub(r'*/\g<0>', s, 1), pm, True)
+			self._init_atom(_category_wildcard_re.sub(r'*/\g<0>', s, 1), env, True)
 
 	def __contains__(self, pkg):
 		raise NotImplementedError('Direct atom matching not implemented in Paludis')



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

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

commit:     8b063eecef4a6858b75b4dd510779522faafed04
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Jul 10 22:18:05 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun Jul 10 22:18:05 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=8b063eec

Paludis: support transforming strings to atoms in filter().

---
 gentoopm/paludispm/repo.py |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index fbf8207..8296dbb 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -46,6 +46,8 @@ class PaludisRepository(PMRepository, PaludisPackageSet):
 		newargs = []
 
 		for f in args:
+			if isinstance(f, basestring):
+				f = PaludisAtom(f, self._env)
 			if isinstance(f, PaludisAtom):
 				pset = PaludisAtomFilteredRepo(pset, f)
 			else:



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

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

commit:     7d1c641d3fee46319e2a3350a79a26071af37603
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 14 14:04:12 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jul 14 14:04:12 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=7d1c641d

Paludis: fix filtering.

---
 gentoopm/paludispm/repo.py |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index 6a47596..4813c7b 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -82,7 +82,7 @@ class PaludisStackRepo(PaludisRepository):
 
 	@property
 	def _filt(self):
-		return paludis.Filter.SupportInstallAction()
+		return paludis.Filter.SupportsInstallAction()
 
 class PaludisLivefsRepository(PaludisRepository, PMEbuildRepository):
 	def __init__(self, repo_obj, env):



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

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

commit:     51a871f381e3d101dc72f4ffc7ef370e53fd869c
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 14 14:05:24 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jul 14 14:05:24 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=51a871f3

Paludis: fix getting atoms.

---
 gentoopm/paludispm/pkg.py |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
index 5a34802..50b8927 100644
--- a/gentoopm/paludispm/pkg.py
+++ b/gentoopm/paludispm/pkg.py
@@ -9,6 +9,7 @@ from gentoopm.basepm.metadata import PMPackageMetadata
 from gentoopm.basepm.pkg import PMPackageSet, PMPackage, \
 		PMFilteredPackageSet
 from gentoopm.exceptions import EmptyPackageSetError, AmbiguousPackageSetError
+from gentoopm.paludispm.atom import PaludisAtom
 
 class PaludisPackageSet(PMPackageSet):
 	_sorted = False



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

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

commit:     0d56d09b6e3f42326f2d6c59397df73c6e1f2886
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 14 17:08:23 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jul 14 17:10:57 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=0d56d09b

Paludis: get package atom via uniquely_identifying_spec().

---
 gentoopm/paludispm/atom.py |   16 +++++++++-------
 gentoopm/paludispm/pkg.py  |    4 ++--
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/gentoopm/paludispm/atom.py b/gentoopm/paludispm/atom.py
index 1680859..9f1128b 100644
--- a/gentoopm/paludispm/atom.py
+++ b/gentoopm/paludispm/atom.py
@@ -26,14 +26,16 @@ class PaludisAtom(PMAtom):
 			raise InvalidAtomStringError('Incorrect atom: %s' % s)
 
 	def __init__(self, s, env, pkg = None):
-		try:
-			self._init_atom(s, env)
-		except InvalidAtomStringError:
-			# try */ for the category
-			self._init_atom(_category_wildcard_re.sub(r'*/\g<0>', s, 1), env, True)
-			self._incomplete = True
+		self._incomplete = False
+		if isinstance(s, paludis.PackageDepSpec):
+			self._atom = s
 		else:
-			self._incomplete = False
+			try:
+				self._init_atom(s, env)
+			except InvalidAtomStringError:
+				# try */ for the category
+				self._init_atom(_category_wildcard_re.sub(r'*/\g<0>', s, 1), env, True)
+				self._incomplete = True
 		self._pkg = pkg
 		self._env = env
 

diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
index 50b8927..201c443 100644
--- a/gentoopm/paludispm/pkg.py
+++ b/gentoopm/paludispm/pkg.py
@@ -67,8 +67,8 @@ class PaludisID(PMPackage):
 
 	@property
 	def atom(self):
-		# XXX: newer version wraps getting atom
-		return PaludisAtom('=%s' % self.id, self._env, self)
+		return PaludisAtom(self.uniquely_identifying_spec(),
+				self._env, self)
 
 	def __cmp__(self, other):
 		if not isinstance(other, PaludisID):



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

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

commit:     578c5ddf5b9e3eda6db1271c31bcb709524e9f32
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 14 17:02:20 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jul 14 17:02:20 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=578c5ddf

Paludis: support getting userpriv uid/gid.

---
 gentoopm/paludispm/config.py |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/gentoopm/paludispm/config.py b/gentoopm/paludispm/config.py
index f58803f..6bdd17c 100644
--- a/gentoopm/paludispm/config.py
+++ b/gentoopm/paludispm/config.py
@@ -8,3 +8,18 @@ from gentoopm.basepm.config import PMConfig
 class PaludisConfig(PMConfig):
 	def __init__(self, env):
 		self._env = env
+
+	# XXX: the userpriv_* funcs return current UID/GID
+	# when run by an unprivileged user
+
+	@property
+	def userpriv_enabled(self):
+		return True
+
+	@property
+	def userpriv_uid(self):
+		return self._env.reduced_uid()
+
+	@property
+	def userpriv_gid(self):
+		return self._env.reduced_gid()



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

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

commit:     350f17a4c07462fc9fff6e3a87c837e155d611bd
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 14 22:42:02 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jul 14 22:42:02 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=350f17a4

Paludis: fix getting atoms.

---
 gentoopm/paludispm/pkg.py |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
index 201c443..f70c67b 100644
--- a/gentoopm/paludispm/pkg.py
+++ b/gentoopm/paludispm/pkg.py
@@ -67,7 +67,7 @@ class PaludisID(PMPackage):
 
 	@property
 	def atom(self):
-		return PaludisAtom(self.uniquely_identifying_spec(),
+		return PaludisAtom(self._pkg.uniquely_identifying_spec(),
 				self._env, self)
 
 	def __cmp__(self, other):



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

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

commit:     e68f8d2efd2462d614933a6eeff9c5123e21b07b
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 15 08:58:09 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jul 15 08:58:09 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=e68f8d2e

Paludis: don't assume userpriv enabled when reduced_uid==0.

---
 gentoopm/paludispm/config.py |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/gentoopm/paludispm/config.py b/gentoopm/paludispm/config.py
index 6bdd17c..5c521ba 100644
--- a/gentoopm/paludispm/config.py
+++ b/gentoopm/paludispm/config.py
@@ -14,7 +14,7 @@ class PaludisConfig(PMConfig):
 
 	@property
 	def userpriv_enabled(self):
-		return True
+		return self.userpriv_uid != 0
 
 	@property
 	def userpriv_uid(self):



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

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

commit:     3ab3887d3272558d630de21ff3812ab68708c16f
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 15 09:09:16 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jul 15 09:09:16 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=3ab3887d

Paludis: support repo1 == repo2.

---
 gentoopm/paludispm/repo.py |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index 4813c7b..f5a8341 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -97,6 +97,9 @@ class PaludisLivefsRepository(PaludisRepository, PMEbuildRepository):
 	def path(self):
 		return self._repo.location_key().parse_value()
 
+	def __eq__(self, other):
+		return self.name == other.name and self.path == other.path
+
 class PaludisInstalledRepo(PaludisRepository):
 	def __init__(self, env):
 		self._env = env



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

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

commit:     6e90f9705a2994bfb76c12bbc49f6c0888115268
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 15 09:16:12 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jul 15 09:16:12 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=6e90f970

Paludis: fix checking whether 'pset' var changed.

---
 gentoopm/paludispm/repo.py |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index f5a8341..7326850 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -53,7 +53,7 @@ class PaludisRepository(PMRepository, PaludisPackageSet):
 			else:
 				newargs.append(f)
 
-		if pset == self:
+		if id(pset) == id(self):
 			return PaludisPackageSet.filter(self, args, kwargs)
 		elif newargs or kwargs:
 			return pset.filter(self, newargs, kwargs)



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

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

commit:     53588b1d36488918c463c780ef1f4ee4c44ac2c3
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 15 11:22:52 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jul 15 11:22:52 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=53588b1d

Paludis: support '==' for packages in different enums.

---
 gentoopm/paludispm/pkg.py |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
index f70c67b..ba7d56d 100644
--- a/gentoopm/paludispm/pkg.py
+++ b/gentoopm/paludispm/pkg.py
@@ -78,6 +78,12 @@ class PaludisID(PMPackage):
 			raise TypeError('Unable to compare results of two enumerations')
 		return cmp(self._num, other._num)
 
+	def __eq__(self, other):
+		if not isinstance(other, PaludisID):
+			raise TypeError('Unable to compare %s against %s' % \
+					self, other)
+		return self.id == other.id
+
 class PaludisMetadata(PMPackageMetadata):
 	def __init__(self, pkg):
 		self._pkg = pkg



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

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

commit:     d4ee3452a518c377c57cbcfc062e9513292b774b
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 15 13:16:07 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jul 15 13:16:07 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=d4ee3452

Paludis: use rich comparisons.

---
 gentoopm/paludispm/pkg.py  |   10 ++--------
 gentoopm/paludispm/repo.py |    3 ---
 2 files changed, 2 insertions(+), 11 deletions(-)

diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
index ba7d56d..42b6fc7 100644
--- a/gentoopm/paludispm/pkg.py
+++ b/gentoopm/paludispm/pkg.py
@@ -70,19 +70,13 @@ class PaludisID(PMPackage):
 		return PaludisAtom(self._pkg.uniquely_identifying_spec(),
 				self._env, self)
 
-	def __cmp__(self, other):
+	def __lt__(self, other):
 		if not isinstance(other, PaludisID):
 			raise TypeError('Unable to compare %s against %s' % \
 					self, other)
 		if self._enum_id != other._enum_id:
 			raise TypeError('Unable to compare results of two enumerations')
-		return cmp(self._num, other._num)
-
-	def __eq__(self, other):
-		if not isinstance(other, PaludisID):
-			raise TypeError('Unable to compare %s against %s' % \
-					self, other)
-		return self.id == other.id
+		return self._num < other._num
 
 class PaludisMetadata(PMPackageMetadata):
 	def __init__(self, pkg):

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index 04a651c..78214e5 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -97,9 +97,6 @@ class PaludisLivefsRepository(PaludisRepository, PMEbuildRepository):
 	def path(self):
 		return self._repo.location_key().parse_value()
 
-	def __eq__(self, other):
-		return self.name == other.name and self.path == other.path
-
 class PaludisInstalledRepo(PaludisRepository):
 	def __init__(self, env):
 		self._env = env



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

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

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

Paludis: implement direct (manual) atom matching.

---
 gentoopm/paludispm/atom.py |   25 ++++++++++++++++++++++++-
 1 files changed, 24 insertions(+), 1 deletions(-)

diff --git a/gentoopm/paludispm/atom.py b/gentoopm/paludispm/atom.py
index 510dfcf..036c22e 100644
--- a/gentoopm/paludispm/atom.py
+++ b/gentoopm/paludispm/atom.py
@@ -81,7 +81,30 @@ class PaludisAtom(PMAtom):
 		self._env = env
 
 	def __contains__(self, pkg):
-		raise NotImplementedError('Direct atom matching not implemented in Paludis')
+		# we have to implementing matching by hand, boo
+		# 1) category, our may be unset
+		if self.key.category is not None \
+				and self.key.category != pkg.atom.key.category:
+			return False
+		# 2) package name
+		if self.key.package != pkg.atom.key.package:
+			return False
+		# 3) package version (if any requirement set)
+		try:
+			vr = next(iter(self._atom.version_requirements))
+		except StopIteration:
+			pass
+		else:
+			if not vr.version_operator.compare(pkg._pkg.version,
+					vr.version_spec):
+				return False
+		# 4) slot
+		# XXX
+		# 5) repository
+		if self._atom.in_repository is not None \
+				and self._atom.in_repository != pkg._pkg.repository_name:
+			return False
+		return True
 
 	def __str__(self):
 		if self._incomplete:



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

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

commit:     811bb72f01f4ac828e835c16b64855c38b48f321
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 16 09:09:05 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jul 16 09:09:05 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=811bb72f

Paludis: use new atom properties for matching.

---
 gentoopm/paludispm/atom.py |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/gentoopm/paludispm/atom.py b/gentoopm/paludispm/atom.py
index f6fe592..adafef5 100644
--- a/gentoopm/paludispm/atom.py
+++ b/gentoopm/paludispm/atom.py
@@ -82,12 +82,13 @@ class PaludisAtom(PMAtom):
 
 	def __contains__(self, pkg):
 		# we have to implementing matching by hand, boo
+		other = pkg.atom
 		# 1) category, our may be unset
 		if self.key.category is not None \
-				and self.key.category != pkg.atom.key.category:
+				and self.key.category != other.key.category:
 			return False
 		# 2) package name
-		if self.key.package != pkg.atom.key.package:
+		if self.key.package != other.key.package:
 			return False
 		# 3) package version (if any requirement set)
 		try:
@@ -99,10 +100,12 @@ class PaludisAtom(PMAtom):
 					vr.version_spec):
 				return False
 		# 4) slot
-		# XXX
+		if self.slot is not None \
+				and self.slot != other.slot:
+			return False
 		# 5) repository
-		if self._atom.in_repository is not None \
-				and self._atom.in_repository != pkg._pkg.repository_name:
+		if self.repository is not None \
+				and self.repository != other.repository:
 			return False
 		return True
 



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

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

commit:     3453afab6f0cc8db8b379382c13bee4806acea04
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 16 09:41:22 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jul 16 09:41:22 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=3453afab

Paludis: refuse running with <paludis-0.64.2.

---
 gentoopm/paludispm/__init__.py |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/gentoopm/paludispm/__init__.py b/gentoopm/paludispm/__init__.py
index a64657e..64cf799 100644
--- a/gentoopm/paludispm/__init__.py
+++ b/gentoopm/paludispm/__init__.py
@@ -5,6 +5,11 @@
 
 import functools, paludis
 
+try:
+	paludis.PackageDepSpec.slot
+except (NameError, AttributeError):
+	raise ImportError('paludis version too old (at least 0.64.2 required)')
+
 from gentoopm.basepm import PackageManager
 from gentoopm.paludispm.atom import PaludisAtom
 from gentoopm.paludispm.config import PaludisConfig



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

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

commit:     4290ee1a9aec8c3a444d1971c27aec1a4f383b11
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 16 22:55:27 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jul 16 22:55:27 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=4290ee1a

Update the paludis version check to match upstream API.

---
 gentoopm/paludispm/__init__.py |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/gentoopm/paludispm/__init__.py b/gentoopm/paludispm/__init__.py
index 64cf799..40ae49a 100644
--- a/gentoopm/paludispm/__init__.py
+++ b/gentoopm/paludispm/__init__.py
@@ -6,7 +6,7 @@
 import functools, paludis
 
 try:
-	paludis.PackageDepSpec.slot
+	paludis.PackageDepSpec.slot_requirement
 except (NameError, AttributeError):
 	raise ImportError('paludis version too old (at least 0.64.2 required)')
 



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

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

commit:     c67f6dc41514345aff57508db4e4a0fe88845ab1
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 16 22:51:42 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jul 16 22:51:42 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=c67f6dc4

Paludis: support getting slot from atoms.

---
 gentoopm/paludispm/atom.py |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/gentoopm/paludispm/atom.py b/gentoopm/paludispm/atom.py
index adafef5..808e8ea 100644
--- a/gentoopm/paludispm/atom.py
+++ b/gentoopm/paludispm/atom.py
@@ -151,8 +151,9 @@ class PaludisAtom(PMAtom):
 
 	@property
 	def slot(self):
-		# XXX
-		raise NotImplementedError('PaludisAtom.slot not yet implemented.')
+		if self._atom.slot_requirement is None:
+			return None
+		return str(self._atom.slot_requirement.slot)
 
 	@property
 	def repository(self):



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

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

commit:     1419fc1b49f84b46f35e0c6b221e91c9cdc39c3f
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 21 08:01:44 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jul 21 08:01:44 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=1419fc1b

Paludis: use _pkg_class.

---
 gentoopm/paludispm/repo.py |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index 9c32eab..a0df635 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -37,11 +37,15 @@ class PaludisBaseRepo(PMRepository, PaludisPackageSet):
 	def _filt(self):
 		return paludis.Filter.All()
 
+	@abstractproperty
+	def _pkg_class(self):
+		pass
+
 	def __iter__(self):
 		enum = PaludisEnumID()
 		for i, p in enumerate(self._env[paludis.Selection.AllVersionsSorted(
 				paludis.FilteredGenerator(self._gen, self._filt))]):
-			yield PaludisID(p, i, enum, self._env)
+			yield self._pkg_class(p, i, enum, self._env)
 
 	def filter(self, *args, **kwargs):
 		pset = self
@@ -76,18 +80,27 @@ class PaludisAtomFilteredRepo(PaludisBaseRepo):
 	def _filt(self):
 		return self._myfilt
 
+	@property
+	def _pkg_class(self):
+		return self._mypkg_class
+
 	def __init__(self, repo, atom):
 		PaludisBaseRepo.__init__(self, repo._env)
 		self._myfilt = repo._filt
 		self._mygen = repo._gen & paludis.Generator.Matches(atom._atom,
 				paludis.MatchPackageOptions())
+		self._mypkg_class = repo._pkg_class
 
 class PaludisStackRepo(PaludisBaseRepo):
+	_pkg_class = PaludisID
+
 	@property
 	def _filt(self):
 		return paludis.Filter.SupportsInstallAction()
 
 class PaludisLivefsRepository(PaludisRepository, PMEbuildRepository):
+	_pkg_class = PaludisID
+
 	def __init__(self, repo_obj, env):
 		PaludisRepository.__init__(self, env)
 		self._repo = repo_obj
@@ -101,6 +114,8 @@ class PaludisLivefsRepository(PaludisRepository, PMEbuildRepository):
 		return self._repo.location_key().parse_value()
 
 class PaludisInstalledRepo(PaludisBaseRepo):
+	_pkg_class = PaludisID
+
 	@property
 	def _filt(self):
 		return paludis.Filter.InstalledAtRoot('/')



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

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

commit:     16f0dbad74ac245066259a62787ca3464c3b31dc
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 21 07:48:28 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jul 21 07:48:28 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=16f0dbad

Paludis: default out _filt&_gen in PaludisBaseRepo.

---
 gentoopm/paludispm/repo.py |   16 ++++------------
 1 files changed, 4 insertions(+), 12 deletions(-)

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index c4c5a12..d2c2a20 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -29,13 +29,13 @@ class PaludisBaseRepo(PMRepository, PaludisPackageSet):
 	def __init__(self, env):
 		PaludisPackageSet.__init__(self, env, True)
 
-	@abstractproperty
+	@property
 	def _gen(self):
-		pass
+		return paludis.Generator.All()
 
-	@abstractproperty
+	@property
 	def _filt(self):
-		pass
+		return paludis.Filter.All()
 
 	def __iter__(self):
 		enum = PaludisEnumID()
@@ -67,10 +67,6 @@ class PaludisRepository(PaludisBaseRepo):
 	def _gen(self):
 		return paludis.Generator.InRepository(self._repo.name)
 
-	@property
-	def _filt(self):
-		return paludis.Filter.All()
-
 class PaludisAtomFilteredRepo(PaludisBaseRepo):
 	@property
 	def _gen(self):
@@ -88,10 +84,6 @@ class PaludisAtomFilteredRepo(PaludisBaseRepo):
 
 class PaludisStackRepo(PaludisBaseRepo):
 	@property
-	def _gen(self):
-		return paludis.Generator.All()
-
-	@property
 	def _filt(self):
 		return paludis.Filter.SupportsInstallAction()
 



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

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

commit:     f53097f316a7ecffb47a3cdc2deafa583d5e6ae5
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 21 07:53:03 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jul 21 07:53:03 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=f53097f3

Paludis: use Filter.InstalledAtRoot() for installed repo.

---
 gentoopm/paludispm/repo.py |   13 ++++---------
 1 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index d2c2a20..9c32eab 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -100,12 +100,7 @@ class PaludisLivefsRepository(PaludisRepository, PMEbuildRepository):
 	def path(self):
 		return self._repo.location_key().parse_value()
 
-class PaludisInstalledRepo(PaludisRepository):
-	def __init__(self, env):
-		PaludisRepository.__init__(self, env)
-		for r in env.repositories:
-			if str(r.name) == 'installed': # XXX
-				self._repo = r
-				break
-		else:
-			raise Exception('Unable to find installed repository.')
+class PaludisInstalledRepo(PaludisBaseRepo):
+	@property
+	def _filt(self):
+		return paludis.Filter.InstalledAtRoot('/')



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

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

commit:     7794ed5de6c3684fc8f68c9f4fc91b7920456c32
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 21 07:46:37 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jul 21 07:46:37 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=7794ed5d

Paludis: split out PaludisBaseRepo.

---
 gentoopm/paludispm/repo.py |   27 +++++++++++++++++++--------
 1 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index e1be9cc..c4c5a12 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -3,6 +3,8 @@
 # (c) 2011 Michał Górny <mgorny@gentoo.org>
 # Released under the terms of the 2-clause BSD license.
 
+from abc import abstractproperty
+
 import paludis
 
 from gentoopm.basepm.repo import PMRepository, PMRepositoryDict, \
@@ -23,17 +25,17 @@ class PaludisRepoDict(PMRepositoryDict):
 class PaludisEnumID(object):
 	pass
 
-class PaludisRepository(PMRepository, PaludisPackageSet):
+class PaludisBaseRepo(PMRepository, PaludisPackageSet):
 	def __init__(self, env):
 		PaludisPackageSet.__init__(self, env, True)
 
-	@property
+	@abstractproperty
 	def _gen(self):
-		return paludis.Generator.InRepository(self._repo.name)
+		pass
 
-	@property
+	@abstractproperty
 	def _filt(self):
-		return paludis.Filter.All()
+		pass
 
 	def __iter__(self):
 		enum = PaludisEnumID()
@@ -60,7 +62,16 @@ class PaludisRepository(PMRepository, PaludisPackageSet):
 		else:
 			return pset
 
-class PaludisAtomFilteredRepo(PaludisRepository):
+class PaludisRepository(PaludisBaseRepo):
+	@property
+	def _gen(self):
+		return paludis.Generator.InRepository(self._repo.name)
+
+	@property
+	def _filt(self):
+		return paludis.Filter.All()
+
+class PaludisAtomFilteredRepo(PaludisBaseRepo):
 	@property
 	def _gen(self):
 		return self._mygen
@@ -70,12 +81,12 @@ class PaludisAtomFilteredRepo(PaludisRepository):
 		return self._myfilt
 
 	def __init__(self, repo, atom):
-		PaludisRepository.__init__(self, repo._env)
+		PaludisBaseRepo.__init__(self, repo._env)
 		self._myfilt = repo._filt
 		self._mygen = repo._gen & paludis.Generator.Matches(atom._atom,
 				paludis.MatchPackageOptions())
 
-class PaludisStackRepo(PaludisRepository):
+class PaludisStackRepo(PaludisBaseRepo):
 	@property
 	def _gen(self):
 		return paludis.Generator.All()



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

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

commit:     6d0a2574daf156fe86497712a47fb9948bc2bbca
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 21 08:04:28 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jul 21 08:04:28 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=6d0a2574

Paludis: merge PaludisRepository into PaludisLivefsRepository.

---
 gentoopm/paludispm/repo.py |   13 ++++++-------
 1 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index a0df635..ebc8af1 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -66,11 +66,6 @@ class PaludisBaseRepo(PMRepository, PaludisPackageSet):
 		else:
 			return pset
 
-class PaludisRepository(PaludisBaseRepo):
-	@property
-	def _gen(self):
-		return paludis.Generator.InRepository(self._repo.name)
-
 class PaludisAtomFilteredRepo(PaludisBaseRepo):
 	@property
 	def _gen(self):
@@ -98,14 +93,18 @@ class PaludisStackRepo(PaludisBaseRepo):
 	def _filt(self):
 		return paludis.Filter.SupportsInstallAction()
 
-class PaludisLivefsRepository(PaludisRepository, PMEbuildRepository):
+class PaludisLivefsRepository(PaludisBaseRepo, PMEbuildRepository):
 	_pkg_class = PaludisID
 
 	def __init__(self, repo_obj, env):
-		PaludisRepository.__init__(self, env)
+		PaludisBaseRepo.__init__(self, env)
 		self._repo = repo_obj
 
 	@property
+	def _gen(self):
+		return paludis.Generator.InRepository(self._repo.name)
+
+	@property
 	def name(self):
 		return str(self._repo.name)
 



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

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

commit:     caf886384c873f86acd2828a6a2cc7258a01772f
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 21 08:06:42 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jul 21 08:06:42 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=caf88638

Paludis: split out PaludisInstalledID.

---
 gentoopm/paludispm/pkg.py  |    6 +++++-
 gentoopm/paludispm/repo.py |    4 ++--
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
index b262080..437ddaf 100644
--- a/gentoopm/paludispm/pkg.py
+++ b/gentoopm/paludispm/pkg.py
@@ -6,7 +6,8 @@
 import paludis
 
 from gentoopm.basepm.metadata import PMPackageMetadata
-from gentoopm.basepm.pkg import PMPackage, PMPackageDescription
+from gentoopm.basepm.pkg import PMPackage, PMPackageDescription, \
+		PMInstalledPackage
 from gentoopm.paludispm.atom import PaludisAtom, \
 		PaludisPackageKey, PaludisPackageVersion
 from gentoopm.util import SpaceSepTuple
@@ -97,6 +98,9 @@ class PaludisID(PMPackage, PaludisAtom):
 			raise TypeError('Unable to compare results of two enumerations')
 		return self._num < other._num
 
+class PaludisInstalledID(PaludisID, PMInstalledPackage):
+	pass
+
 class PaludisMetadata(PMPackageMetadata):
 	def __init__(self, pkg):
 		self._pkg = pkg

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index ebc8af1..dc46ffe 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -10,7 +10,7 @@ import paludis
 from gentoopm.basepm.repo import PMRepository, PMRepositoryDict, \
 		PMEbuildRepository
 from gentoopm.paludispm.atom import PaludisAtom
-from gentoopm.paludispm.pkg import PaludisID
+from gentoopm.paludispm.pkg import PaludisID, PaludisInstalledID
 from gentoopm.paludispm.pkgset import PaludisPackageSet
 
 class PaludisRepoDict(PMRepositoryDict):
@@ -113,7 +113,7 @@ class PaludisLivefsRepository(PaludisBaseRepo, PMEbuildRepository):
 		return self._repo.location_key().parse_value()
 
 class PaludisInstalledRepo(PaludisBaseRepo):
-	_pkg_class = PaludisID
+	_pkg_class = PaludisInstalledID
 
 	@property
 	def _filt(self):



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

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

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

Paludis: sort packages directly.

---
 gentoopm/paludispm/pkg.py  |   11 +++++------
 gentoopm/paludispm/repo.py |    6 +++---
 2 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
index 557deee..4af56c8 100644
--- a/gentoopm/paludispm/pkg.py
+++ b/gentoopm/paludispm/pkg.py
@@ -38,10 +38,8 @@ class PaludisPackageDescription(PMPackageDescription):
 		return k.parse_value() if k is not None else None
 
 class PaludisID(PMPackage, PaludisAtom):
-	def __init__(self, pkg, num = 0, enum_id = None, env = None):
+	def __init__(self, pkg, env):
 		self._pkg = pkg
-		self._num = num
-		self._enum_id = enum_id
 		self._env = env
 
 	@property
@@ -106,9 +104,10 @@ class PaludisID(PMPackage, PaludisAtom):
 		if not isinstance(other, PaludisID):
 			raise TypeError('Unable to compare %s against %s' % \
 					self, other)
-		if self._enum_id != other._enum_id:
-			raise TypeError('Unable to compare results of two enumerations')
-		return self._num < other._num
+		return str(self.key) < str(other.key) \
+				or self._pkg.version < other._pkg.version \
+				or self._env.more_important_than( \
+						other.repository, self.repository)
 
 class PaludisInstallableID(PaludisID, PMInstallablePackage):
 	pass

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index 27419a9..1449923 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -43,9 +43,9 @@ class PaludisBaseRepo(PMRepository, PaludisPackageSet):
 
 	def __iter__(self):
 		enum = PaludisEnumID()
-		for i, p in enumerate(self._env[paludis.Selection.AllVersionsSorted(
-				paludis.FilteredGenerator(self._gen, self._filt))]):
-			yield self._pkg_class(p, i, enum, self._env)
+		for p in self._env[paludis.Selection.AllVersionsUnsorted(
+				paludis.FilteredGenerator(self._gen, self._filt))]:
+			yield self._pkg_class(p, self._env)
 
 	def filter(self, *args, **kwargs):
 		pset = self



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

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

commit:     ce7ceb28bdda7829199b2f412c78bbcff4eacb47
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 23 08:38:15 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jul 23 08:38:15 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=ce7ceb28

Paludis: remove 'issorted'.

---
 gentoopm/paludispm/pkgset.py |   25 ++-----------------------
 gentoopm/paludispm/repo.py   |    3 ---
 2 files changed, 2 insertions(+), 26 deletions(-)

diff --git a/gentoopm/paludispm/pkgset.py b/gentoopm/paludispm/pkgset.py
index f41fd16..86572ea 100644
--- a/gentoopm/paludispm/pkgset.py
+++ b/gentoopm/paludispm/pkgset.py
@@ -8,9 +8,8 @@ from gentoopm.exceptions import EmptyPackageSetError, AmbiguousPackageSetError
 from gentoopm.paludispm.atom import PaludisAtom
 
 class PaludisPackageSet(object):
-	def __init__(self, env, issorted = False):
+	def __init__(self, env):
 		self._env = env
-		self._sorted = issorted
 
 	def filter(self, *args, **kwargs):
 		newargs = [(a if not isinstance(a, str)
@@ -18,27 +17,7 @@ class PaludisPackageSet(object):
 
 		return PaludisFilteredPackageSet(self, newargs, kwargs)
 
-	@property
-	def best(self):
-		if self._sorted:
-			it = iter(self)
-
-			try:
-				f = next(it)
-			except StopIteration:
-				raise EmptyPackageSetError('.best called on an empty set')
-			for p in it:
-				if p.key != f.key:
-					raise AmbiguousPackageSetError('.best called on a set of differently-named packages')
-
-			try:
-				return p
-			except NameError:
-				return f
-		else:
-			return PMPackageSet.best.fget(self)
-
 class PaludisFilteredPackageSet(PaludisPackageSet, PMFilteredPackageSet):
 	def __init__(self, pset, args, kwargs):
-		PaludisPackageSet.__init__(self, pset._env, pset._sorted)
+		PaludisPackageSet.__init__(self, pset._env)
 		PMFilteredPackageSet.__init__(self, pset, args, kwargs)

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index 1449923..3f82bcd 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -26,9 +26,6 @@ class PaludisEnumID(object):
 	pass
 
 class PaludisBaseRepo(PMRepository, PaludisPackageSet):
-	def __init__(self, env):
-		PaludisPackageSet.__init__(self, env, True)
-
 	@property
 	def _gen(self):
 		return paludis.Generator.All()



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

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

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

Paludis: support overriding selection type.

---
 gentoopm/paludispm/repo.py |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index 6179c9a..115f195 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -34,13 +34,17 @@ class PaludisBaseRepo(PMRepository, PaludisPackageSet):
 	def _filt(self):
 		return paludis.Filter.All()
 
+	@property
+	def _sel(self):
+		return paludis.Selection.AllVersionsUnsorted
+
 	@abstractproperty
 	def _pkg_class(self):
 		pass
 
 	def __iter__(self):
 		enum = PaludisEnumID()
-		for p in self._env[paludis.Selection.AllVersionsUnsorted(
+		for p in self._env[self._sel(
 				paludis.FilteredGenerator(self._gen, self._filt))]:
 			yield self._pkg_class(p, self._env)
 



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

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

commit:     a98910961a52f4c2a29fad19f4dbd328818183db
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 23 20:00:38 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jul 23 20:00:38 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=a9891096

Paludis: transform atom-filtered repo into more general override repo.

Now the caller is supposed to instantiate necessary filters/generators
and the repo just sets them up.

---
 gentoopm/paludispm/repo.py |   20 ++++++++++++++------
 1 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index 115f195..44547c3 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -56,7 +56,9 @@ class PaludisBaseRepo(PMRepository, PaludisPackageSet):
 			if isinstance(f, str):
 				f = PaludisAtom(f, self._env)
 			if isinstance(f, PaludisAtom):
-				pset = PaludisAtomFilteredRepo(pset, f)
+				newgen = paludis.Generator.Matches(f._atom,
+						paludis.MatchPackageOptions())
+				pset = PaludisOverrideRepo(pset, gen = newgen)
 			else:
 				newargs.append(f)
 
@@ -67,7 +69,7 @@ class PaludisBaseRepo(PMRepository, PaludisPackageSet):
 		else:
 			return pset
 
-class PaludisAtomFilteredRepo(PaludisBaseRepo):
+class PaludisOverrideRepo(PaludisBaseRepo):
 	@property
 	def _gen(self):
 		return self._mygen
@@ -77,14 +79,20 @@ class PaludisAtomFilteredRepo(PaludisBaseRepo):
 		return self._myfilt
 
 	@property
+	def _sel(self):
+		return self._mysel
+
+	@property
 	def _pkg_class(self):
 		return self._mypkg_class
 
-	def __init__(self, repo, atom):
+	def __init__(self, repo, filt = None, gen = None, sel = None):
 		PaludisBaseRepo.__init__(self, repo._env)
-		self._myfilt = repo._filt
-		self._mygen = repo._gen & paludis.Generator.Matches(atom._atom,
-				paludis.MatchPackageOptions())
+		self._myfilt = filt or repo._filt
+		self._mygen = repo._gen
+		if gen is not None:
+			self._mygen &= gen
+		self._mysel = sel or repo._sel
 		self._mypkg_class = repo._pkg_class
 
 class PaludisStackRepo(PaludisBaseRepo):



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

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

commit:     9c653c4c078da438620d0aa9459cd4f34ab5b059
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 23 20:15:19 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jul 23 20:15:19 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=9c653c4c

Paludis: use C++ API for sorting.

---
 gentoopm/paludispm/repo.py |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/gentoopm/paludispm/repo.py b/gentoopm/paludispm/repo.py
index 44547c3..20cd1e2 100644
--- a/gentoopm/paludispm/repo.py
+++ b/gentoopm/paludispm/repo.py
@@ -69,6 +69,11 @@ class PaludisBaseRepo(PMRepository, PaludisPackageSet):
 		else:
 			return pset
 
+	@property
+	def sorted(self):
+		return PaludisOverrideRepo(self,
+				sel = paludis.Selection.AllVersionsSorted)
+
 class PaludisOverrideRepo(PaludisBaseRepo):
 	@property
 	def _gen(self):



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

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

commit:     dfd84bfb63bbf8283fd0eb63bbbb73e30393f076
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Mon Jul 25 16:58:35 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Jul 25 17:06:58 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=dfd84bfb

Paludis: support getting package contents.

---
 gentoopm/paludispm/contents.py |   15 +++++++++++++++
 gentoopm/paludispm/pkg.py      |    5 ++++-
 2 files changed, 19 insertions(+), 1 deletions(-)

diff --git a/gentoopm/paludispm/contents.py b/gentoopm/paludispm/contents.py
new file mode 100644
index 0000000..f9ec46e
--- /dev/null
+++ b/gentoopm/paludispm/contents.py
@@ -0,0 +1,15 @@
+#!/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 gentoopm.basepm.contents import PMPackageContents, \
+		PMContentObj
+
+class PaludisPackageContents(PMPackageContents):
+	def __init__(self, cont):
+		self._cont = cont
+
+	def __iter__(self):
+		for f in self._cont:
+			yield PMContentObj(f.location_key().parse_value())

diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
index 1c3fb6e..97d64cd 100644
--- a/gentoopm/paludispm/pkg.py
+++ b/gentoopm/paludispm/pkg.py
@@ -11,6 +11,7 @@ from gentoopm.basepm.pkg import PMPackage, PMPackageDescription, \
 		PMPackageState
 from gentoopm.paludispm.atom import PaludisAtom, \
 		PaludisPackageKey, PaludisPackageVersion
+from gentoopm.paludispm.contents import PaludisPackageContents
 from gentoopm.util import SpaceSepTuple
 
 class PaludisBoundPackageKey(PaludisPackageKey, PMBoundPackageKey):
@@ -113,7 +114,9 @@ class PaludisInstallableID(PaludisID, PMInstallablePackage):
 	pass
 
 class PaludisInstalledID(PaludisID, PMInstalledPackage):
-	pass
+	@property
+	def contents(self):
+		return PaludisPackageContents(self._pkg.contents_key().parse_value())
 
 class PaludisMetadata(PMPackageMetadata):
 	def __init__(self, pkg):



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

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

commit:     ec043d62f5056b9d7f7bcd929ae578ed0b553368
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 28 15:39:03 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jul 28 15:39:03 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=ec043d62

Paludis: support blocking atoms.

---
 gentoopm/paludispm/atom.py   |    5 +++--
 gentoopm/paludispm/depend.py |    7 ++++++-
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/gentoopm/paludispm/atom.py b/gentoopm/paludispm/atom.py
index c416cb1..ea1d233 100644
--- a/gentoopm/paludispm/atom.py
+++ b/gentoopm/paludispm/atom.py
@@ -69,8 +69,9 @@ class PaludisAtom(PMAtom):
 				paludis.RepositoryNameError):
 			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
 		else:
@@ -114,7 +115,7 @@ class PaludisAtom(PMAtom):
 	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))
 
 	@property
 	def complete(self):

diff --git a/gentoopm/paludispm/depend.py b/gentoopm/paludispm/depend.py
index 91a2e3c..ee5ad4c 100644
--- a/gentoopm/paludispm/depend.py
+++ b/gentoopm/paludispm/depend.py
@@ -3,12 +3,14 @@
 # (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
@@ -18,6 +20,9 @@ class PaludisBaseDep(PMBaseDep):
 		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):



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

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

commit:     35ccdf9b9c1ccef8482e8d2f2ed1dac3d50849d6
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 28 19:25:57 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jul 28 19:25:57 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=35ccdf9b

Paludis: support passing more args to depspecs.

---
 gentoopm/paludispm/depend.py |   24 ++++++++++++++----------
 1 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/gentoopm/paludispm/depend.py b/gentoopm/paludispm/depend.py
index ee5ad4c..9084f3d 100644
--- a/gentoopm/paludispm/depend.py
+++ b/gentoopm/paludispm/depend.py
@@ -4,6 +4,7 @@
 # Released under the terms of the 2-clause BSD license.
 
 import paludis, re
+from collections import namedtuple
 
 from gentoopm.basepm.depend import PMPackageDepSet, PMConditionalDep, \
 	PMAnyOfDep, PMAllOfDep, PMExactlyOneOfDep, PMBaseDep
@@ -12,25 +13,25 @@ from gentoopm.paludispm.atom import PaludisAtom
 _block_re = re.compile('^!*')
 
 class PaludisBaseDep(PMBaseDep):
-	def __init__(self, deps, pkg):
+	def __init__(self, deps, args):
 		self._deps = deps
-		self._pkg = pkg
+		self._args = args
 
 	def __iter__(self):
 		for d in self._deps:
 			if isinstance(d, paludis.PackageDepSpec):
-				yield PaludisAtom(d, self._pkg._env)
+				yield PaludisAtom(d, self._args.env)
 			elif isinstance(d, paludis.BlockDepSpec):
-				yield PaludisAtom(d.blocking, self._pkg._env,
+				yield PaludisAtom(d.blocking, self._args.env,
 						block = _block_re.match(d.text).group(0))
 			elif isinstance(d, paludis.AnyDepSpec):
-				yield PaludisAnyOfDep(d, self._pkg)
+				yield PaludisAnyOfDep(d, self._args)
 			elif isinstance(d, paludis.AllDepSpec):
-				yield PaludisAllOfDep(d, self._pkg)
+				yield PaludisAllOfDep(d, self._args)
 			elif isinstance(d, paludis.ExactlyOneDepSpec):
-				yield PaludisExactlyOneOfDep(d, self._pkg)
+				yield PaludisExactlyOneOfDep(d, self._args)
 			elif isinstance(d, paludis.ConditionalDepSpec):
-				yield PaludisConditionalDep(d, self._pkg)
+				yield PaludisConditionalDep(d, self._args)
 			elif isinstance(d, paludis.PlainTextDepSpec):
 				# XXX: this is in REQUIRED_USE as well
 				yield str(d)
@@ -49,7 +50,10 @@ class PaludisExactlyOneOfDep(PMExactlyOneOfDep, PaludisBaseDep):
 class PaludisConditionalDep(PMConditionalDep, PaludisBaseDep):
 	@property
 	def enabled(self):
-		return self._deps.condition_met(self._pkg._env, self._pkg._pkg)
+		return self._deps.condition_met(self._args.env, self._args.pkg)
+
+_argtuple = namedtuple('PaludisDepArgTuple', ('env', 'pkg', 'cls'))
 
 class PaludisPackageDepSet(PMPackageDepSet, PaludisAllOfDep):
-	pass
+	def __init__(self, deps, pkg, cls = None):
+		PaludisAllOfDep.__init__(self, deps, _argtuple(pkg._env, pkg._pkg, cls))



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

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

commit:     aba8a872b2e4c22ff726409ce6ca01162185cd1c
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 28 19:55:21 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jul 28 19:55:21 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=aba8a872

Paludis: use helper function for metadata gets.

This should fix issues with empty *DEPEND as well.

---
 gentoopm/paludispm/pkg.py |   45 ++++++++++++++++++++++++---------------------
 1 files changed, 24 insertions(+), 21 deletions(-)

diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
index 151cd92..368344c 100644
--- a/gentoopm/paludispm/pkg.py
+++ b/gentoopm/paludispm/pkg.py
@@ -74,10 +74,16 @@ class PaludisID(PMPackage, PaludisAtom):
 	def version(self):
 		return PaludisPackageVersion(self._pkg.version)
 
+	def _get_meta(self, key):
+		if isinstance(key, str):
+			key = self._pkg.find_metadata(key)
+		if key is None:
+			return ()
+		return key.parse_value()
+
 	@property
 	def eapi(self):
-		k = self._pkg.find_metadata('EAPI')
-		return str(k.parse_value())
+		return str(self._get_meta('EAPI'))
 
 	@property
 	def description(self):
@@ -85,35 +91,30 @@ class PaludisID(PMPackage, PaludisAtom):
 
 	@property
 	def inherits(self):
-		k = self._pkg.find_metadata('INHERITED')
-		if k is None:
-			return SpaceSepFrozenSet(())
-		return SpaceSepFrozenSet(k.parse_value())
+		return SpaceSepFrozenSet(self._get_meta('INHERITED'))
 
 	@property
 	def defined_phases(self):
-		k = self._pkg.find_metadata('DEFINED_PHASES')
-		if k is None:
+		ret = SpaceSepFrozenSet(self._get_meta('DEFINED_PHASES'))
+		if not ret:
 			return None
-		ret = SpaceSepFrozenSet(k.parse_value())
-		if ret == ('-',):
+		elif ret == ('-',):
 			return SpaceSepFrozenSet(())
 		return ret
 
 	@property
 	def homepages(self):
-		spec = self._pkg.homepage_key().parse_value()
+		spec = self._get_meta(self._pkg.homepage_key())
 		return SpaceSepTuple([str(x) for x in spec])
 
 	@property
 	def keywords(self):
-		kws = self._pkg.keywords_key().parse_value()
+		kws = self._get_meta(self._pkg.keywords_key())
 		return SpaceSepFrozenSet([str(x) for x in kws])
 
 	@property
 	def slot(self):
-		k = self._pkg.slot_key()
-		return str(k.parse_value())
+		return str(self._get_meta(self._pkg.slot_key()))
 
 	@property
 	def repository(self):
@@ -122,19 +123,19 @@ class PaludisID(PMPackage, PaludisAtom):
 	@property
 	def build_dependencies(self):
 		return PaludisPackageDepSet(
-				self._pkg.build_dependencies_key().parse_value(),
+				self._get_meta(self._pkg.build_dependencies_key()),
 				self)
 
 	@property
 	def run_dependencies(self):
 		return PaludisPackageDepSet(
-				self._pkg.run_dependencies_key().parse_value(),
+				self._get_meta(self._pkg.run_dependencies_key()),
 				self)
 
 	@property
 	def post_dependencies(self):
 		return PaludisPackageDepSet(
-				self._pkg.post_dependencies_key().parse_value(),
+				self._get_meta(self._pkg.post_dependencies_key()),
 				self)
 
 	@property
@@ -142,12 +143,13 @@ class PaludisID(PMPackage, PaludisAtom):
 		k = self._pkg.find_metadata('REQUIRED_USE')
 		if k is None:
 			return None
-		return PaludisPackageDepSet(k.parse_value(), self,
-				PMRequiredUseAtom)
+		return PaludisPackageDepSet(
+				self._get_meta('REQUIRED_USE'),
+				self, PMRequiredUseAtom)
 
 	@property
 	def use(self):
-		iuse = self._pkg.find_metadata('IUSE').parse_value()
+		iuse = self._get_meta('IUSE')
 		return SpaceSepFrozenSet([PaludisUseFlag(x) for x in iuse])
 
 	@property
@@ -172,7 +174,8 @@ class PaludisInstallableID(PaludisID, PMInstallablePackage):
 class PaludisInstalledID(PaludisID, PMInstalledPackage):
 	@property
 	def contents(self):
-		return PaludisPackageContents(self._pkg.contents_key().parse_value())
+		return PaludisPackageContents(
+				self._get_meta(self._pkg.contents_key()))
 
 class PaludisMetadata(PMPackageMetadata):
 	def __init__(self, pkg):



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

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

commit:     510300cdf687df85ed1ab5f049f8502e1e3e3814
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 29 06:39:27 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jul 29 06:39:27 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=510300cd

Paludis: start using choices_key().

This will allow getting USE values in the future.

---
 gentoopm/paludispm/pkg.py |   32 ++++++++++++++++++++++++++++----
 1 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
index 368344c..fe680ee 100644
--- a/gentoopm/paludispm/pkg.py
+++ b/gentoopm/paludispm/pkg.py
@@ -40,8 +40,31 @@ class PaludisPackageDescription(PMPackageDescription):
 		k = self._pkg.long_description_key()
 		return k.parse_value() if k is not None else None
 
-class PaludisUseFlag(PMUseFlag):
-	pass
+class PaludisChoice(PMUseFlag):
+	def __init__(self, choice, default = None):
+		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])
+		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))
+		return SpaceSepFrozenSet.__new__(self, l)
 
 class PaludisID(PMPackage, PaludisAtom):
 	def __init__(self, pkg, env):
@@ -149,8 +172,9 @@ class PaludisID(PMPackage, PaludisAtom):
 
 	@property
 	def use(self):
-		iuse = self._get_meta('IUSE')
-		return SpaceSepFrozenSet([PaludisUseFlag(x) for x in iuse])
+		return PaludisChoiceSet(
+				self._get_meta(self._pkg.choices_key()),
+				self._get_meta('IUSE'))
 
 	@property
 	def _atom(self):



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

* [gentoo-commits] proj/gentoopm:master commit in: gentoopm/paludispm/
@ 2011-12-09 15:09 Michał Górny
  0 siblings, 0 replies; 43+ messages in thread
From: Michał Górny @ 2011-12-09 15:09 UTC (permalink / raw
  To: gentoo-commits

commit:     82846ec07f7a868597db4f51f756fb7b2d8e8a7d
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Dec  9 15:09:48 2011 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Dec  9 15:09:48 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=82846ec0

Paludis: update getting package contents wrt Paludis API change.

---
 gentoopm/paludispm/pkg.py |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
index 1470dbd..ba34e5d 100644
--- a/gentoopm/paludispm/pkg.py
+++ b/gentoopm/paludispm/pkg.py
@@ -205,5 +205,8 @@ class PaludisInstallableID(PaludisID, PMInstallablePackage):
 class PaludisInstalledID(PaludisID, PMInstalledPackage):
 	@property
 	def contents(self):
-		return PaludisPackageContents(
-				self._get_meta(self._pkg.contents_key()))
+		try:
+			return PaludisPackageContents(self._pkg.contents())
+		except AttributeError:
+			return PaludisPackageContents(
+					self._get_meta(self._pkg.contents_key()))



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

* [gentoo-commits] proj/gentoopm:master commit in: gentoopm/paludispm/
@ 2012-01-03 18:18 Michał Górny
  0 siblings, 0 replies; 43+ messages in thread
From: Michał Górny @ 2012-01-03 18:18 UTC (permalink / raw
  To: gentoo-commits

commit:     bf623fe3a1dcab55c03e906b1be395d3b772a0eb
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Jan  3 18:19:08 2012 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Jan  3 18:19:08 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=bf623fe3

Paludis: update USEflag grepping API.

---
 gentoopm/paludispm/pkg.py |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
index ba34e5d..15b5995 100644
--- a/gentoopm/paludispm/pkg.py
+++ b/gentoopm/paludispm/pkg.py
@@ -59,8 +59,13 @@ class PaludisChoiceSet(SpaceSepFrozenSet):
 				if group.raw_name == 'build_options': # paludis specific
 					continue
 				for c in group:
-					if c.explicitly_listed:
-						yield PaludisChoice(c)
+					try:
+						if c.origin != paludis.ChoiceOrigin.EXPLICIT:
+							continue
+					except AttributeError:
+						if not c.explicitly_listed:
+							continue
+					yield PaludisChoice(c)
 
 		self._choices = choices
 		return SpaceSepFrozenSet.__new__(self, _get_iuse())



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

* [gentoo-commits] proj/gentoopm:master commit in: gentoopm/paludispm/
@ 2013-10-10 13:35 Michał Górny
  0 siblings, 0 replies; 43+ messages in thread
From: Michał Górny @ 2013-10-10 13:35 UTC (permalink / raw
  To: gentoo-commits

commit:     b0d2e0b3a9f926746e942fe17832008a06b621c1
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Oct 10 13:34:59 2013 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Oct 10 13:34:59 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=b0d2e0b3

Fix getting slots in Paludis.

---
 gentoopm/paludispm/pkg.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/gentoopm/paludispm/pkg.py b/gentoopm/paludispm/pkg.py
index 15b5995..972123f 100644
--- a/gentoopm/paludispm/pkg.py
+++ b/gentoopm/paludispm/pkg.py
@@ -147,7 +147,11 @@ class PaludisID(PMPackage, PaludisAtom):
 
 	@property
 	def slot(self):
-		return str(self._get_meta(self._pkg.slot_key()))
+		slot = self._get_meta(self._pkg.slot_key())
+		if hasattr(slot, 'raw_value'): # paludis-1.4
+			return slot.raw_value
+		else:
+			return str(slot)
 
 	@property
 	def repository(self):


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

end of thread, other threads:[~2013-10-10 13:35 UTC | newest]

Thread overview: 43+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-10 22:17 [gentoo-commits] proj/gentoopm:master commit in: gentoopm/paludispm/ Michał Górny
  -- strict thread matches above, loose matches on Subject: below --
2013-10-10 13:35 Michał Górny
2012-01-03 18:18 Michał Górny
2011-12-09 15:09 Michał Górny
2011-07-29  6:38 Michał Górny
2011-07-28 19:54 Michał Górny
2011-07-28 19:54 Michał Górny
2011-07-28 16:24 Michał Górny
2011-07-25 17:06 Michał Górny
2011-07-23 20:14 Michał Górny
2011-07-23 20:14 Michał Górny
2011-07-23 20:14 Michał Górny
2011-07-23  9:27 Michał Górny
2011-07-22  6:18 Michał Górny
2011-07-21  8:47 Michał Górny
2011-07-21  8:47 Michał Górny
2011-07-21  8:47 Michał Górny
2011-07-21  8:47 Michał Górny
2011-07-21  8:47 Michał Górny
2011-07-21  8:47 Michał Górny
2011-07-16 22:55 Michał Górny
2011-07-16 22:55 Michał Górny
2011-07-16  9:40 Michał Górny
2011-07-16  9:08 Michał Górny
2011-07-16  8:34 Michał Górny
2011-07-15 13:32 Michał Górny
2011-07-15 12:34 Michał Górny
2011-07-15  9:52 Michał Górny
2011-07-15  9:52 Michał Górny
2011-07-15  9:52 Michał Górny
2011-07-14 22:51 Michał Górny
2011-07-14 17:10 Michał Górny
2011-07-14 17:10 Michał Górny
2011-07-14 14:05 Michał Górny
2011-07-14 14:05 Michał Górny
2011-07-10 22:17 Michał Górny
2011-07-09  7:20 Michał Górny
2011-07-08 21:05 Michał Górny
2011-07-08 21:05 Michał Górny
2011-07-08 16:37 Michał Górny
2011-07-08 16:37 Michał Górny
2011-07-08  7:18 Michał Górny
2011-07-06 20:54 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