Gentoo Archives: gentoo-commits

From: "André Erdmann" <dywi@×××××××.de>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/R_overlay:master commit in: roverlay/overlay/pkgdir/, roverlay/overlay/
Date: Fri, 02 Aug 2013 13:39:41
Message-Id: 1375450212.14fa2c10125834937c7c3db5f6495749b1d06d94.dywi@gentoo
1 commit: 14fa2c10125834937c7c3db5f6495749b1d06d94
2 Author: André Erdmann <dywi <AT> mailerd <DOT> de>
3 AuthorDate: Fri Aug 2 13:30:12 2013 +0000
4 Commit: André Erdmann <dywi <AT> mailerd <DOT> de>
5 CommitDate: Fri Aug 2 13:30:12 2013 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=14fa2c10
7
8 manifest implementations: simplify code
9
10 * moved [overlay]/pkgdir/__init__ to pkgdir/base
11 * pkgdir/base no longer uses importlib, package dir modules/classes are used
12 directly instead (_PACKAGE_DIR_IMPLEMENTATIONS lists PackageDir classes now)
13 * overlay/category sets its pkgdir class in __init__ now
14
15 ---
16 roverlay/overlay/__init__.py | 4 --
17 roverlay/overlay/category.py | 15 ++--
18 roverlay/overlay/creator.py | 2 +-
19 roverlay/overlay/pkgdir/__init__.py | 86 -----------------------
20 roverlay/overlay/pkgdir/{__init__.py => base.py} | 43 +++---------
21 roverlay/overlay/pkgdir/packagedir_newmanifest.py | 4 +-
22 6 files changed, 21 insertions(+), 133 deletions(-)
23
24 diff --git a/roverlay/overlay/__init__.py b/roverlay/overlay/__init__.py
25 index 84cdf31..708f8ae 100644
26 --- a/roverlay/overlay/__init__.py
27 +++ b/roverlay/overlay/__init__.py
28 @@ -5,7 +5,3 @@
29 # either version 2 of the License, or (at your option) any later version.
30
31 """overlay package"""
32 -
33 -__all__ = [ 'Overlay', ]
34 -
35 -from roverlay.overlay.root import Overlay
36
37 diff --git a/roverlay/overlay/category.py b/roverlay/overlay/category.py
38 index 751a26d..2fc3a4f 100644
39 --- a/roverlay/overlay/category.py
40 +++ b/roverlay/overlay/category.py
41 @@ -26,7 +26,10 @@ except ImportError:
42
43 import roverlay.stats.collector
44
45 -from roverlay.overlay import pkgdir
46 +import roverlay.overlay.pkgdir.base
47 +##import roverlay.overlay.pkgdir.packagedir_ebuildmanifest
48 +##import roverlay.overlay.pkgdir.packagedir_newmanifest
49 +
50
51 class WriteQueueJob ( object ):
52
53 @@ -100,6 +103,7 @@ class Category ( object ):
54 self.physical_location = directory
55 self.get_header = get_header
56 self.runtime_incremental = runtime_incremental
57 + self.packagedir_cls = roverlay.overlay.pkgdir.base.get_class()
58 # --- end of __init__ (...) ---
59
60 def _get_package_dir ( self, pkg_name ):
61 @@ -113,7 +117,7 @@ class Category ( object ):
62 self._lock.acquire()
63 try:
64 if not pkg_name in self._subdirs:
65 - newpkg = pkgdir.get_class() (
66 + newpkg = self.packagedir_cls (
67 name = pkg_name,
68 logger = self.logger,
69 directory = self.physical_location + os.sep + pkg_name,
70 @@ -249,12 +253,7 @@ class Category ( object ):
71
72 """
73 if unsafe:
74 - try:
75 - return bool (
76 - next ( iter ( self._subdirs.values() ) ).MANIFEST_THREADSAFE
77 - )
78 - except StopIteration:
79 - return True
80 + return self.packagedir_cls.MANIFEST_THREADSAFE
81 else:
82 for pkgdir in self._subdirs.values():
83 #if not pkgdir.__class__.MANIFEST_THREADSAFE:
84
85 diff --git a/roverlay/overlay/creator.py b/roverlay/overlay/creator.py
86 index 32dacbc..96c5531 100644
87 --- a/roverlay/overlay/creator.py
88 +++ b/roverlay/overlay/creator.py
89 @@ -26,7 +26,7 @@ except ImportError:
90
91 from roverlay import config, errorqueue
92
93 -from roverlay.overlay import Overlay
94 +from roverlay.overlay.root import Overlay
95 from roverlay.overlay.worker import OverlayWorker
96 from roverlay.packageinfo import PackageInfo
97 from roverlay.packagerules.rules import PackageRules
98
99 diff --git a/roverlay/overlay/pkgdir/__init__.py b/roverlay/overlay/pkgdir/__init__.py
100 index 90dfb6e..e69de29 100644
101 --- a/roverlay/overlay/pkgdir/__init__.py
102 +++ b/roverlay/overlay/pkgdir/__init__.py
103 @@ -1,86 +0,0 @@
104 -# R overlay -- overlay package, package directory
105 -# -*- coding: utf-8 -*-
106 -# Copyright (C) 2012 André Erdmann <dywi@×××××××.de>
107 -# Distributed under the terms of the GNU General Public License;
108 -# either version 2 of the License, or (at your option) any later version.
109 -
110 -__all__ = [ 'create', 'get_class', ]
111 -
112 -# the actual PackageDir implementation will be loaded after initialization
113 -# of the config module (using importlib.import_module)
114 -import importlib
115 -
116 -import logging
117 -
118 -import roverlay.config
119 -
120 -
121 -# _package_dir_module is an imported module or None
122 -_package_dir_module = None
123 -_package_dir_class = None
124 -
125 -_PACKAGE_DIR_IMPLEMENTATIONS = {
126 - 'none' : 'packagedir_base',
127 - 'default' : 'packagedir_newmanifest',
128 - 'e' : 'packagedir_ebuildmanifest',
129 - 'ebuild' : 'packagedir_ebuildmanifest',
130 - 'next' : 'packagedir_newmanifest',
131 -}
132 -
133 -def _configure():
134 - """Determines which Manifest implementation to use and sets the
135 - _package_dir_module, _package_dir_class variables accordingly.
136 - """
137 -
138 - mf_impl = roverlay.config.get_or_fail ( 'OVERLAY.manifest_implementation' )
139 -
140 - # also accept the internal (module) name of the manifest implementation
141 - pkgdir_impl = (
142 - _PACKAGE_DIR_IMPLEMENTATIONS.get ( mf_impl, None )
143 - or (
144 - mf_impl
145 - if mf_impl in _PACKAGE_DIR_IMPLEMENTATIONS.values()
146 - else None
147 - )
148 - )
149 -
150 - if pkgdir_impl is not None:
151 - global _package_dir_module
152 - _package_dir_module = importlib.import_module (
153 - 'roverlay.overlay.pkgdir.' + pkgdir_impl
154 - )
155 -
156 - global _package_dir_class
157 - if hasattr ( _package_dir_module, 'PackageDir' ):
158 - _package_dir_class = _package_dir_module.PackageDir
159 - else:
160 - _package_dir_class = _package_dir_module.PackageDirBase
161 -
162 - if hasattr ( _package_dir_class, 'init_cls' ):
163 - _package_dir_class.init_cls()
164 - else:
165 - _package_dir_class.init_base_cls()
166 -
167 - logging.getLogger ('pkgdir').debug (
168 - 'Using {!r} as manifest implementation.'.format ( mf_impl )
169 - )
170 - else:
171 - # NameError, NotImplementedError, ...?
172 - raise Exception (
173 - "PackageDir/Manifest implementation {} is unknown".format ( mf_impl )
174 - )
175 -# --- end of configure (...) ---
176 -
177 -def get_class():
178 - """Returns the configured PackageDir class."""
179 - if _package_dir_class is None:
180 - _configure()
181 - return _package_dir_class
182 -# --- end of get_class (...) ---
183 -
184 -def create ( *args, **kwargs ):
185 - """Returns a new PackageDir object by calling the constructor
186 - of the configured PackageDir class (as returned by get_class()).
187 - """
188 - return get_class() ( *args, **kwargs )
189 -# --- end of create (...) ---
190
191 diff --git a/roverlay/overlay/pkgdir/__init__.py b/roverlay/overlay/pkgdir/base.py
192 similarity index 59%
193 copy from roverlay/overlay/pkgdir/__init__.py
194 copy to roverlay/overlay/pkgdir/base.py
195 index 90dfb6e..4d48a3f 100644
196 --- a/roverlay/overlay/pkgdir/__init__.py
197 +++ b/roverlay/overlay/pkgdir/base.py
198 @@ -6,55 +6,34 @@
199
200 __all__ = [ 'create', 'get_class', ]
201
202 -# the actual PackageDir implementation will be loaded after initialization
203 -# of the config module (using importlib.import_module)
204 -import importlib
205 -
206 import logging
207
208 import roverlay.config
209
210 +import roverlay.overlay.pkgdir.packagedir_base
211 +import roverlay.overlay.pkgdir.packagedir_ebuildmanifest
212 +import roverlay.overlay.pkgdir.packagedir_newmanifest
213 +
214
215 -# _package_dir_module is an imported module or None
216 -_package_dir_module = None
217 _package_dir_class = None
218
219 _PACKAGE_DIR_IMPLEMENTATIONS = {
220 - 'none' : 'packagedir_base',
221 - 'default' : 'packagedir_newmanifest',
222 - 'e' : 'packagedir_ebuildmanifest',
223 - 'ebuild' : 'packagedir_ebuildmanifest',
224 - 'next' : 'packagedir_newmanifest',
225 + 'none' : roverlay.overlay.pkgdir.packagedir_base.PackageDirBase,
226 + 'default' : roverlay.overlay.pkgdir.packagedir_newmanifest.PackageDir,
227 + 'e' : roverlay.overlay.pkgdir.packagedir_ebuildmanifest.PackageDir,
228 + 'ebuild' : roverlay.overlay.pkgdir.packagedir_ebuildmanifest.PackageDir,
229 + 'next' : roverlay.overlay.pkgdir.packagedir_newmanifest.PackageDir,
230 }
231
232 def _configure():
233 """Determines which Manifest implementation to use and sets the
234 _package_dir_module, _package_dir_class variables accordingly.
235 """
236 -
237 mf_impl = roverlay.config.get_or_fail ( 'OVERLAY.manifest_implementation' )
238
239 - # also accept the internal (module) name of the manifest implementation
240 - pkgdir_impl = (
241 - _PACKAGE_DIR_IMPLEMENTATIONS.get ( mf_impl, None )
242 - or (
243 - mf_impl
244 - if mf_impl in _PACKAGE_DIR_IMPLEMENTATIONS.values()
245 - else None
246 - )
247 - )
248 -
249 - if pkgdir_impl is not None:
250 - global _package_dir_module
251 - _package_dir_module = importlib.import_module (
252 - 'roverlay.overlay.pkgdir.' + pkgdir_impl
253 - )
254 -
255 + if mf_impl in _PACKAGE_DIR_IMPLEMENTATIONS:
256 global _package_dir_class
257 - if hasattr ( _package_dir_module, 'PackageDir' ):
258 - _package_dir_class = _package_dir_module.PackageDir
259 - else:
260 - _package_dir_class = _package_dir_module.PackageDirBase
261 + _package_dir_class = _PACKAGE_DIR_IMPLEMENTATIONS [mf_impl]
262
263 if hasattr ( _package_dir_class, 'init_cls' ):
264 _package_dir_class.init_cls()
265
266 diff --git a/roverlay/overlay/pkgdir/packagedir_newmanifest.py b/roverlay/overlay/pkgdir/packagedir_newmanifest.py
267 index 7bbfb86..fb9bd2d 100644
268 --- a/roverlay/overlay/pkgdir/packagedir_newmanifest.py
269 +++ b/roverlay/overlay/pkgdir/packagedir_newmanifest.py
270 @@ -13,10 +13,10 @@ import threading
271 import roverlay.config
272
273 import roverlay.overlay.pkgdir.manifest.file
274 -import roverlay.overlay.pkgdir.packagedir_base
275 -
276 from roverlay.overlay.pkgdir.manifest.file import ManifestFile
277
278 +import roverlay.overlay.pkgdir.packagedir_base
279 +
280
281 class PackageDir ( roverlay.overlay.pkgdir.packagedir_base.PackageDirBase ):
282 """