1 |
commit: 1289b60a321e7b0fa507ee22e9a92d4baef2234c |
2 |
Author: Michał Górny <mgorny <AT> gentoo <DOT> org> |
3 |
AuthorDate: Wed Jul 6 15:59:59 2011 +0000 |
4 |
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> |
5 |
CommitDate: Wed Jul 6 15:59:59 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoopm.git;a=commit;h=1289b60a |
7 |
|
8 |
Portage: cleanup class inheritance. |
9 |
|
10 |
--- |
11 |
gentoopm/portagepm/__init__.py | 3 +- |
12 |
gentoopm/portagepm/db.py | 65 ---------------------------------------- |
13 |
gentoopm/portagepm/pkg.py | 36 ++++++++++++++++++---- |
14 |
gentoopm/portagepm/repo.py | 15 ++++++++- |
15 |
4 files changed, 43 insertions(+), 76 deletions(-) |
16 |
|
17 |
diff --git a/gentoopm/portagepm/__init__.py b/gentoopm/portagepm/__init__.py |
18 |
index 15a9bec..0919916 100644 |
19 |
--- a/gentoopm/portagepm/__init__.py |
20 |
+++ b/gentoopm/portagepm/__init__.py |
21 |
@@ -7,8 +7,7 @@ import os |
22 |
from portage import create_trees |
23 |
|
24 |
from gentoopm.basepm import PackageManager |
25 |
-from gentoopm.portagepm.repo import PortageRepoDict |
26 |
-from gentoopm.portagepm.db import VDBRepository |
27 |
+from gentoopm.portagepm.repo import PortageRepoDict, VDBRepository |
28 |
|
29 |
class PortagePM(PackageManager): |
30 |
name = 'portage' |
31 |
|
32 |
diff --git a/gentoopm/portagepm/db.py b/gentoopm/portagepm/db.py |
33 |
deleted file mode 100644 |
34 |
index 3eae39a..0000000 |
35 |
--- a/gentoopm/portagepm/db.py |
36 |
+++ /dev/null |
37 |
@@ -1,65 +0,0 @@ |
38 |
-#!/usr/bin/python |
39 |
-# vim:fileencoding=utf-8 |
40 |
-# (c) 2011 Michał Górny <mgorny@g.o> |
41 |
-# Released under the terms of the 2-clause BSD license. |
42 |
- |
43 |
-import portage.versions |
44 |
- |
45 |
-from gentoopm.basepm.metadata import PMPackageMetadata |
46 |
-from gentoopm.basepm.repo import PMRepository |
47 |
-from gentoopm.portagepm.pkg import PortageCPV |
48 |
- |
49 |
-# XXX: cleanup all this mess! |
50 |
- |
51 |
-class PortageDBCPV(PortageCPV): |
52 |
- def __init__(self, cpv, dbapi): |
53 |
- self._cpv = cpv |
54 |
- self._dbapi = dbapi |
55 |
- |
56 |
- @property |
57 |
- def metadata(self): |
58 |
- return PortageDBMetadata(self._cpv, self._dbapi) |
59 |
- |
60 |
- @property |
61 |
- def path(self): |
62 |
- # .findname() gives .ebuild path |
63 |
- return self._dbapi.getpath(self._cpv) |
64 |
- |
65 |
-class PortageDBMetadata(PMPackageMetadata): |
66 |
- def __init__(self, cpv, dbapi): |
67 |
- self._cpv = cpv |
68 |
- self._dbapi = dbapi |
69 |
- |
70 |
- def __getattr__(self, key): |
71 |
- return self._dbapi.aux_get(self._cpv, [key])[0] |
72 |
- |
73 |
- @property |
74 |
- def CATEGORY(self): |
75 |
- return portage.versions.catsplit(self._cpv)[0] |
76 |
- |
77 |
- @property |
78 |
- def PN(self): |
79 |
- return portage.versions.catpkgsplit(self._cpv)[1] |
80 |
- |
81 |
- @property |
82 |
- def PV(self): |
83 |
- return portage.versions.pkgsplit(self._cpv)[1] |
84 |
- |
85 |
- @property |
86 |
- def PR(self): |
87 |
- return portage.versions.pkgsplit(self._cpv)[2] |
88 |
- |
89 |
- @property |
90 |
- def PVR(self): |
91 |
- return portage.versions.cpv_getversion(self._cpv) |
92 |
- |
93 |
-class PortDBRepository(PMRepository): |
94 |
- def __init__(self, dbapi): |
95 |
- self._dbapi = dbapi |
96 |
- |
97 |
- def __iter__(self): |
98 |
- for p in self._dbapi.cpv_all(): # XXX |
99 |
- yield PortageDBCPV(p, self._dbapi) |
100 |
- |
101 |
-class VDBRepository(PortDBRepository): |
102 |
- pass |
103 |
|
104 |
diff --git a/gentoopm/portagepm/pkg.py b/gentoopm/portagepm/pkg.py |
105 |
index 8696706..a92af4e 100644 |
106 |
--- a/gentoopm/portagepm/pkg.py |
107 |
+++ b/gentoopm/portagepm/pkg.py |
108 |
@@ -10,10 +10,23 @@ from gentoopm.basepm.pkg import PMPackage |
109 |
|
110 |
# XXX: cleanup all this mess! |
111 |
|
112 |
-class PortageCPV(PMPackage): |
113 |
- def __init__(self, cpv, dbapi, tree): |
114 |
+class PortageDBCPV(PMPackage): |
115 |
+ def __init__(self, cpv, dbapi): |
116 |
self._cpv = cpv |
117 |
self._dbapi = dbapi |
118 |
+ |
119 |
+ @property |
120 |
+ def metadata(self): |
121 |
+ return PortageDBMetadata(self._cpv, self._dbapi) |
122 |
+ |
123 |
+ @property |
124 |
+ def path(self): |
125 |
+ # .findname() gives .ebuild path |
126 |
+ return self._dbapi.getpath(self._cpv) |
127 |
+ |
128 |
+class PortageCPV(PortageDBCPV): |
129 |
+ def __init__(self, cpv, dbapi, tree = None): |
130 |
+ PortageDBCPV.__init__(self, cpv, dbapi) |
131 |
self._tree = tree |
132 |
|
133 |
@property |
134 |
@@ -35,17 +48,15 @@ class PortageCPV(PMPackage): |
135 |
portage.versions.cpv_getversion(self._cpv), |
136 |
portage.versions.cpv_getversion(other._cpv)) |
137 |
|
138 |
-class PortageMetadata(PMPackageMetadata): |
139 |
- def __init__(self, cpv, dbapi, tree): |
140 |
+class PortageDBMetadata(PMPackageMetadata): |
141 |
+ def __init__(self, cpv, dbapi): |
142 |
self._cpv = cpv |
143 |
self._dbapi = dbapi |
144 |
- self._tree = tree |
145 |
|
146 |
def __getattr__(self, key): |
147 |
if key not in self: |
148 |
raise AttributeError('Unsupported metadata key: %s' % key) |
149 |
- return self._dbapi.aux_get(self._cpv, [key], |
150 |
- mytree = self._tree)[0] |
151 |
+ return self._dbapi.aux_get(self._cpv, [key])[0] |
152 |
|
153 |
@property |
154 |
def CATEGORY(self): |
155 |
@@ -66,3 +77,14 @@ class PortageMetadata(PMPackageMetadata): |
156 |
@property |
157 |
def PVR(self): |
158 |
return portage.versions.cpv_getversion(self._cpv) |
159 |
+ |
160 |
+class PortageMetadata(PortageDBMetadata): |
161 |
+ def __init__(self, cpv, dbapi, tree): |
162 |
+ PortageDBMetadata.__init__(self, cpv, dbapi) |
163 |
+ self._tree = tree |
164 |
+ |
165 |
+ def __getattr__(self, key): |
166 |
+ if key not in self: |
167 |
+ raise AttributeError('Unsupported metadata key: %s' % key) |
168 |
+ return self._dbapi.aux_get(self._cpv, [key], |
169 |
+ mytree = self._tree)[0] |
170 |
|
171 |
diff --git a/gentoopm/portagepm/repo.py b/gentoopm/portagepm/repo.py |
172 |
index 8203f92..aece5f6 100644 |
173 |
--- a/gentoopm/portagepm/repo.py |
174 |
+++ b/gentoopm/portagepm/repo.py |
175 |
@@ -5,8 +5,8 @@ |
176 |
|
177 |
import os.path |
178 |
|
179 |
-from gentoopm.basepm.repo import PMRepositoryDict, PMEbuildRepository |
180 |
-from gentoopm.portagepm.db import PortDBRepository |
181 |
+from gentoopm.basepm.repo import PMRepositoryDict, PMEbuildRepository, \ |
182 |
+ PMRepository |
183 |
from gentoopm.portagepm.pkg import PortageCPV |
184 |
|
185 |
class PortageRepoDict(PMRepositoryDict): |
186 |
@@ -29,6 +29,14 @@ class PortageRepoDict(PMRepositoryDict): |
187 |
def __init__(self, portdbapi): |
188 |
self._dbapi = portdbapi |
189 |
|
190 |
+class PortDBRepository(PMRepository): |
191 |
+ def __init__(self, dbapi): |
192 |
+ self._dbapi = dbapi |
193 |
+ |
194 |
+ def __iter__(self): |
195 |
+ for p in self._dbapi.cpv_all(): # XXX |
196 |
+ yield PortageCPV(p, self._dbapi) |
197 |
+ |
198 |
class PortageRepository(PortDBRepository, PMEbuildRepository): |
199 |
def __init__(self, repo_obj, portdbapi): |
200 |
self._repo = repo_obj |
201 |
@@ -50,3 +58,6 @@ class PortageRepository(PortDBRepository, PMEbuildRepository): |
202 |
|
203 |
def __cmp__(self, other): |
204 |
return cmp(self._repo.priority, other._repo.priority) |
205 |
+ |
206 |
+class VDBRepository(PortDBRepository): |
207 |
+ pass |