Gentoo Archives: gentoo-commits

From: "Michał Górny" <mgorny@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/pms-test-suite:master commit in: PMSTestSuite/pm/
Date: Tue, 31 May 2011 12:14:47
Message-Id: 5a7d32196d0045b90835ef80a2fecb78125d3c39.mgorny@gentoo
1 commit: 5a7d32196d0045b90835ef80a2fecb78125d3c39
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Tue May 31 11:40:05 2011 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Tue May 31 11:40:05 2011 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/pms-test-suite.git;a=commit;h=5a7d3219
7
8 Support vdb lookups.
9
10 ---
11 PMSTestSuite/pm/__init__.py | 10 ++++++++++
12 PMSTestSuite/pm/portagepm.py | 18 ++++++++++++++++++
13 2 files changed, 28 insertions(+), 0 deletions(-)
14
15 diff --git a/PMSTestSuite/pm/__init__.py b/PMSTestSuite/pm/__init__.py
16 index d3bd434..9838822 100644
17 --- a/PMSTestSuite/pm/__init__.py
18 +++ b/PMSTestSuite/pm/__init__.py
19 @@ -71,6 +71,16 @@ class PackageManager(object):
20 """
21 raise NotImplementedError('Please override the unmerge() method.')
22
23 + def lookup_vardb(self, cpvs):
24 + """
25 + Lookup the vardb checking whether the packages listed in <cpvs>
26 + are installed. The elements of iterable passed as <cpvs> shall be in CPV
27 + form, i.e. category/pn-pv.
28 +
29 + Returns an iterable of packages actually merged (a subset of <cpvs>).
30 + """
31 + raise NotImplementedError('Please override the lookup_vardb() method.')
32 +
33 def get_package_managers():
34 """ Return the list of supported Package Managers. """
35
36
37 diff --git a/PMSTestSuite/pm/portagepm.py b/PMSTestSuite/pm/portagepm.py
38 index 71672c0..9d5fa0b 100644
39 --- a/PMSTestSuite/pm/portagepm.py
40 +++ b/PMSTestSuite/pm/portagepm.py
41 @@ -44,3 +44,21 @@ class PortagePM(PackageManager):
42 ret = subprocess.call([self.emerge_path, '--unmerge'] + self.pm_options + atoms,
43 env = {'PORTDIR_OVERLAY': ' '.join(self.repo_paths)})
44 return ret == 0
45 +
46 + _vardb = None
47 + @property
48 + def vardb(self):
49 + if not self._vardb:
50 + from portage import create_trees
51 + trees = create_trees(
52 + config_root = os.environ.get('PORTAGE_CONFIGROOT'),
53 + target_root = os.environ.get('ROOT'))
54 + tree = trees[max(trees)]
55 + self._vardb = tree['vartree'].dbapi
56 +
57 + return self._vardb
58 +
59 + def lookup_vardb(self, cpvs):
60 + installed_cpvs = set(self.vardb.cpv_all())
61 + installed_cpvs &= set(cpvs)
62 + return installed_cpvs