Gentoo Archives: gentoo-commits

From: "Michał Górny" <mgorny@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gentoopm:master commit in: gentoopm/paludispm/
Date: Thu, 28 Jul 2011 16:24:40
Message-Id: ec043d62f5056b9d7f7bcd929ae578ed0b553368.mgorny@gentoo
1 commit: ec043d62f5056b9d7f7bcd929ae578ed0b553368
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Thu Jul 28 15:39:03 2011 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Thu Jul 28 15:39:03 2011 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=ec043d62
7
8 Paludis: support blocking atoms.
9
10 ---
11 gentoopm/paludispm/atom.py | 5 +++--
12 gentoopm/paludispm/depend.py | 7 ++++++-
13 2 files changed, 9 insertions(+), 3 deletions(-)
14
15 diff --git a/gentoopm/paludispm/atom.py b/gentoopm/paludispm/atom.py
16 index c416cb1..ea1d233 100644
17 --- a/gentoopm/paludispm/atom.py
18 +++ b/gentoopm/paludispm/atom.py
19 @@ -69,8 +69,9 @@ class PaludisAtom(PMAtom):
20 paludis.RepositoryNameError):
21 raise InvalidAtomStringError('Incorrect atom: %s' % s)
22
23 - def __init__(self, s, env):
24 + def __init__(self, s, env, block = ''):
25 self._incomplete = False
26 + self._blocking = block
27 if isinstance(s, paludis.PackageDepSpec):
28 self._atom = s
29 else:
30 @@ -114,7 +115,7 @@ class PaludisAtom(PMAtom):
31 def __str__(self):
32 if self._incomplete:
33 raise ValueError('Unable to stringify incomplete atom')
34 - return str(self._atom)
35 + return '%s%s' % (self._blocking, str(self._atom))
36
37 @property
38 def complete(self):
39
40 diff --git a/gentoopm/paludispm/depend.py b/gentoopm/paludispm/depend.py
41 index 91a2e3c..ee5ad4c 100644
42 --- a/gentoopm/paludispm/depend.py
43 +++ b/gentoopm/paludispm/depend.py
44 @@ -3,12 +3,14 @@
45 # (c) 2011 Michał Górny <mgorny@g.o>
46 # Released under the terms of the 2-clause BSD license.
47
48 -import paludis
49 +import paludis, re
50
51 from gentoopm.basepm.depend import PMPackageDepSet, PMConditionalDep, \
52 PMAnyOfDep, PMAllOfDep, PMExactlyOneOfDep, PMBaseDep
53 from gentoopm.paludispm.atom import PaludisAtom
54
55 +_block_re = re.compile('^!*')
56 +
57 class PaludisBaseDep(PMBaseDep):
58 def __init__(self, deps, pkg):
59 self._deps = deps
60 @@ -18,6 +20,9 @@ class PaludisBaseDep(PMBaseDep):
61 for d in self._deps:
62 if isinstance(d, paludis.PackageDepSpec):
63 yield PaludisAtom(d, self._pkg._env)
64 + elif isinstance(d, paludis.BlockDepSpec):
65 + yield PaludisAtom(d.blocking, self._pkg._env,
66 + block = _block_re.match(d.text).group(0))
67 elif isinstance(d, paludis.AnyDepSpec):
68 yield PaludisAnyOfDep(d, self._pkg)
69 elif isinstance(d, paludis.AllDepSpec):