1 |
commit: 74ab23790239567dee35061cd541eec74b24a434 |
2 |
Author: André Erdmann <dywi <AT> mailerd <DOT> de> |
3 |
AuthorDate: Tue Jul 30 16:08:03 2013 +0000 |
4 |
Commit: André Erdmann <dywi <AT> mailerd <DOT> de> |
5 |
CommitDate: Tue Jul 30 16:08:03 2013 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=74ab2379 |
7 |
|
8 |
move common script functionality to roverlay/core |
9 |
|
10 |
--- |
11 |
debug-scripts/py/console.py | 10 +-- |
12 |
debug-scripts/py/descreader.py | 13 +-- |
13 |
debug-scripts/py/nosync-rforge.py | 84 +++++++++--------- |
14 |
roverlay/__init__.py | 66 -------------- |
15 |
roverlay/argutil.py | 12 +-- |
16 |
roverlay/core.py | 178 ++++++++++++++++++++++++++++++++++++++ |
17 |
roverlay/interface/main.py | 2 +- |
18 |
roverlay/interface/root.py | 8 +- |
19 |
roverlay/main.py | 127 ++++----------------------- |
20 |
roverlay/recipe/easyresolver.py | 7 +- |
21 |
roverlay/versiontuple.py | 2 +- |
22 |
11 files changed, 263 insertions(+), 246 deletions(-) |
23 |
|
24 |
diff --git a/debug-scripts/py/console.py b/debug-scripts/py/console.py |
25 |
index 52f1112..e91b075 100644 |
26 |
--- a/debug-scripts/py/console.py |
27 |
+++ b/debug-scripts/py/console.py |
28 |
@@ -4,10 +4,8 @@ |
29 |
# |
30 |
|
31 |
import argparse |
32 |
-import logging |
33 |
|
34 |
-import roverlay.main |
35 |
-import roverlay.recipe.easylogger |
36 |
+import roverlay.core |
37 |
import roverlay.console.depres |
38 |
import roverlay.console.remote |
39 |
|
40 |
@@ -27,7 +25,7 @@ parser.add_argument ( |
41 |
|
42 |
parser.add_argument ( |
43 |
'--config', '-C', metavar='<file>', dest='config_file', |
44 |
- default=roverlay.main.locate_config_file ( False ), |
45 |
+ default=roverlay.core.locate_config_file ( False ), |
46 |
help="config file [%(default)s]", |
47 |
) |
48 |
|
49 |
@@ -41,9 +39,7 @@ def main(): |
50 |
con_cls = CON_MAP [arg_config.mode] |
51 |
|
52 |
if arg_config.log_all: |
53 |
- roverlay.recipe.easylogger.force_reset() |
54 |
- roverlay.recipe.easylogger.setup_initial ( log_level=logging.DEBUG ) |
55 |
- roverlay.recipe.easylogger.freeze_status() |
56 |
+ roverlay.core.force_console_logging() |
57 |
|
58 |
with con_cls ( config_file=arg_config.config_file )as con: |
59 |
con.run_forever() |
60 |
|
61 |
diff --git a/debug-scripts/py/descreader.py b/debug-scripts/py/descreader.py |
62 |
index e1e4251..2f1a3e9 100644 |
63 |
--- a/debug-scripts/py/descreader.py |
64 |
+++ b/debug-scripts/py/descreader.py |
65 |
@@ -4,21 +4,16 @@ |
66 |
from __future__ import print_function |
67 |
|
68 |
import sys |
69 |
-import logging |
70 |
|
71 |
-import roverlay |
72 |
-import roverlay.main |
73 |
-import roverlay.recipe.easylogger |
74 |
+import roverlay.core |
75 |
import roverlay.rpackage.descriptionreader |
76 |
|
77 |
|
78 |
def setup(): |
79 |
- roverlay.recipe.easylogger.force_reset() |
80 |
- roverlay.recipe.easylogger.setup_initial ( log_level=logging.DEBUG ) |
81 |
- roverlay.recipe.easylogger.freeze_status() |
82 |
+ roverlay.core.force_console_logging() |
83 |
|
84 |
- config_file = roverlay.main.locate_config_file ( False ) |
85 |
- return roverlay.load_config_file ( |
86 |
+ config_file = roverlay.core.locate_config_file ( False ) |
87 |
+ return roverlay.core.load_config_file ( |
88 |
config_file, setup_logger=False, |
89 |
extraconf={ |
90 |
'installed': False, |
91 |
|
92 |
diff --git a/debug-scripts/py/nosync-rforge.py b/debug-scripts/py/nosync-rforge.py |
93 |
index cf0b888..29db4a0 100644 |
94 |
--- a/debug-scripts/py/nosync-rforge.py |
95 |
+++ b/debug-scripts/py/nosync-rforge.py |
96 |
@@ -8,61 +8,63 @@ |
97 |
import sys |
98 |
import logging |
99 |
|
100 |
+## initialize interface (main and remote) |
101 |
+import roverlay.core |
102 |
+import roverlay.interface.main |
103 |
|
104 |
-## repo to (no)sync |
105 |
-get_arg = lambda i, UNSET: sys.argv[i] if len ( sys.argv ) > i else UNSET |
106 |
- |
107 |
-REPO_IN_QUESTION = get_arg ( 1, None ) or 'R-Forge' |
108 |
-REPO_CONFIG = get_arg ( 2, None ) |
109 |
|
110 |
+def main(): |
111 |
+ ## repo to (no)sync |
112 |
+ get_arg = lambda i, UNSET: sys.argv[i] if len ( sys.argv ) > i else UNSET |
113 |
|
114 |
-## log everything to console |
115 |
-import roverlay.recipe.easylogger |
116 |
-roverlay.recipe.easylogger.setup_initial ( log_level=logging.DEBUG ) |
117 |
-roverlay.recipe.easylogger.freeze_status() |
118 |
+ REPO_IN_QUESTION = get_arg ( 1, None ) or 'R-Forge' |
119 |
+ REPO_CONFIG = get_arg ( 2, None ) |
120 |
|
121 |
|
122 |
-## initialize interface (main and remote) |
123 |
-import roverlay.main |
124 |
-import roverlay.interface.main |
125 |
+ ## log everything to console |
126 |
+ roverlay.core.force_console_logging() |
127 |
|
128 |
-MAIN_IF = roverlay.interface.main.MainInterface ( |
129 |
- config_file=roverlay.main.locate_config_file ( False ) |
130 |
-) |
131 |
+ MAIN_IF = roverlay.interface.main.MainInterface ( |
132 |
+ config_file=roverlay.core.locate_config_file ( False ) |
133 |
+ ) |
134 |
|
135 |
|
136 |
-REPO_IF = MAIN_IF.spawn_interface ( "remote" ) |
137 |
-if REPO_CONFIG: |
138 |
- REPO_IF.load_repo_file ( REPO_CONFIG ) |
139 |
-else: |
140 |
- REPO_IF.load_configured() |
141 |
+ REPO_IF = MAIN_IF.spawn_interface ( "remote" ) |
142 |
+ if REPO_CONFIG: |
143 |
+ REPO_IF.load_repo_file ( REPO_CONFIG ) |
144 |
+ else: |
145 |
+ REPO_IF.load_configured() |
146 |
|
147 |
-REPO_IF.disable_sync() |
148 |
+ REPO_IF.disable_sync() |
149 |
|
150 |
|
151 |
-## sync repo and report status |
152 |
-REPO_IF.sync_named_repo ( REPO_IN_QUESTION, enable_sync=False ) |
153 |
+ ## sync repo and report status |
154 |
+ REPO_IF.sync_named_repo ( REPO_IN_QUESTION, enable_sync=False ) |
155 |
|
156 |
-repo = REPO_IF.get_repo_by_name ( REPO_IN_QUESTION ) |
157 |
-if repo is not None: |
158 |
- repo_status = repo.sync_status |
159 |
- repo_ready = repo.ready() |
160 |
+ repo = REPO_IF.get_repo_by_name ( REPO_IN_QUESTION ) |
161 |
+ if repo is not None: |
162 |
+ repo_status = repo.sync_status |
163 |
+ repo_ready = repo.ready() |
164 |
|
165 |
- print ( "--- snip ---" ) |
166 |
- print ( "repo: " + str ( repo ) ) |
167 |
- if not repo_ready: |
168 |
- print ( "{n} would be ignored!".format ( n=REPO_IN_QUESTION ) ) |
169 |
- print ( |
170 |
- "{n}.ready() = {r} (sync_status={s:d})".format ( |
171 |
- n=REPO_IN_QUESTION, r=repo_ready, s=repo_status, |
172 |
+ print ( "--- snip ---" ) |
173 |
+ print ( "repo: " + str ( repo ) ) |
174 |
+ if not repo_ready: |
175 |
+ print ( "{n} would be ignored!".format ( n=REPO_IN_QUESTION ) ) |
176 |
+ print ( |
177 |
+ "{n}.ready() = {r} (sync_status={s:d})".format ( |
178 |
+ n=REPO_IN_QUESTION, r=repo_ready, s=repo_status, |
179 |
+ ) |
180 |
) |
181 |
- ) |
182 |
|
183 |
-else: |
184 |
- print ( "no such repo: " + REPO_IN_QUESTION ) |
185 |
+ else: |
186 |
+ print ( "no such repo: " + REPO_IN_QUESTION ) |
187 |
+ |
188 |
|
189 |
+ ### switch to python console |
190 |
+ #import code |
191 |
+ #con = code.InteractiveConsole ( locals=locals() ) |
192 |
+ #con.interact() |
193 |
+# --- end of main (...) --- |
194 |
|
195 |
-### switch to python console |
196 |
-#import code |
197 |
-#con = code.InteractiveConsole ( locals=locals() ) |
198 |
-#con.interact() |
199 |
+if __name__ == '__main__': |
200 |
+ main() |
201 |
|
202 |
diff --git a/roverlay/__init__.py b/roverlay/__init__.py |
203 |
index f660a4a..db229c0 100644 |
204 |
--- a/roverlay/__init__.py |
205 |
+++ b/roverlay/__init__.py |
206 |
@@ -3,69 +3,3 @@ |
207 |
# Copyright (C) 2012, 2013 André Erdmann <dywi@×××××××.de> |
208 |
# Distributed under the terms of the GNU General Public License; |
209 |
# either version 2 of the License, or (at your option) any later version. |
210 |
- |
211 |
-"""R overlay package |
212 |
- |
213 |
-Provides roverlay initialization helpers (setup_initial_logger, |
214 |
-load_config_file) and some information vars (version, name, ...). |
215 |
-""" |
216 |
- |
217 |
-__all__ = [ 'setup_initial_logger', 'load_config_file', ] |
218 |
- |
219 |
-name = "R_overlay" |
220 |
-version = "0.2.5" |
221 |
- |
222 |
-description_str = "R overlay creation (roverlay) " + version |
223 |
-license_str=( |
224 |
- 'Copyright (C) 2012, 2013 Andr\xc3\xa9 Erdmann\n' |
225 |
- 'Distributed under the terms of the GNU General Public License;\n' |
226 |
- 'either version 2 of the License, or (at your option) any later version.\n' |
227 |
-) |
228 |
- |
229 |
-import roverlay.config |
230 |
-import roverlay.recipe.easylogger |
231 |
- |
232 |
- |
233 |
-def setup_initial_logger(): |
234 |
- """Sets up initial logging.""" |
235 |
- roverlay.recipe.easylogger.setup_initial() |
236 |
- |
237 |
-def load_config_file ( |
238 |
- cfile, extraconf=None, setup_logger=True, load_main_only=False |
239 |
-): |
240 |
- """ |
241 |
- Loads the config, including the field definition file. |
242 |
- Sets up the logger afterwards. |
243 |
- (Don't call this method more than once.) |
244 |
- |
245 |
- arguments: |
246 |
- * cfile -- path to the config file |
247 |
- * extraconf -- a dict with additional config entries that will override |
248 |
- entries read from cfile |
249 |
- * setup_logger -- set up logger (defaults to True) |
250 |
- * load_main_only -- if set and True: load main config file only |
251 |
- (= do not load field def, ...) |
252 |
- """ |
253 |
- roverlay_config = roverlay.config.access() |
254 |
- |
255 |
- confloader = roverlay_config.get_loader() |
256 |
- |
257 |
- if cfile: |
258 |
- confloader.load_config ( cfile ) |
259 |
- |
260 |
- if extraconf is not None: |
261 |
- roverlay_config.merge_with ( extraconf ) |
262 |
- |
263 |
- if setup_logger: |
264 |
- roverlay.recipe.easylogger.setup ( roverlay_config ) |
265 |
- |
266 |
- if not load_main_only: |
267 |
- confloader.load_field_definition ( |
268 |
- roverlay_config.get_or_fail ( "DESCRIPTION.field_definition_file" ) |
269 |
- ) |
270 |
- |
271 |
- confloader.load_use_expand_map ( |
272 |
- roverlay_config.get ( "EBUILD.USE_EXPAND.rename_file" ) |
273 |
- ) |
274 |
- |
275 |
- return roverlay_config |
276 |
|
277 |
diff --git a/roverlay/argutil.py b/roverlay/argutil.py |
278 |
index 04ea84f..b101169 100644 |
279 |
--- a/roverlay/argutil.py |
280 |
+++ b/roverlay/argutil.py |
281 |
@@ -13,7 +13,7 @@ import argparse |
282 |
import pwd |
283 |
import grp |
284 |
|
285 |
-import roverlay |
286 |
+import roverlay.core |
287 |
|
288 |
def get_uid ( user ): |
289 |
try: |
290 |
@@ -119,7 +119,7 @@ def get_parser ( command_map, default_config_file, default_command='create' ): |
291 |
|
292 |
parser = argparse.ArgumentParser ( |
293 |
description='\n'.join (( |
294 |
- roverlay.description_str, roverlay.license_str, |
295 |
+ roverlay.core.description_str, roverlay.core.license_str, |
296 |
)), |
297 |
epilog = 'Known commands:\n' + '\n'.join ( |
298 |
( |
299 |
@@ -145,14 +145,16 @@ def get_parser ( command_map, default_config_file, default_command='create' ): |
300 |
# adding args starts here |
301 |
|
302 |
arg ( |
303 |
- '-V', '--version', action='version', version=roverlay.version |
304 |
+ '-V', '--version', action='version', version=roverlay.core.version |
305 |
) |
306 |
|
307 |
arg ( |
308 |
'commands', |
309 |
default=default_command, |
310 |
- help="action to perform. choices are " + ', '.join (command_map.keys()) \ |
311 |
- + ". defaults to %(default)s.", |
312 |
+ help=( |
313 |
+ 'action to perform. choices are ' + ', '.join (command_map.keys()) |
314 |
+ + '. defaults to %(default)s.' |
315 |
+ ), |
316 |
nargs="*", |
317 |
choices=command_map.keys(), |
318 |
metavar="command" |
319 |
|
320 |
diff --git a/roverlay/core.py b/roverlay/core.py |
321 |
new file mode 100644 |
322 |
index 0000000..6e095e1 |
323 |
--- /dev/null |
324 |
+++ b/roverlay/core.py |
325 |
@@ -0,0 +1,178 @@ |
326 |
+# R overlay -- roverlay package, core functions |
327 |
+# -*- coding: utf-8 -*- |
328 |
+# Copyright (C) 2012, 2013 André Erdmann <dywi@×××××××.de> |
329 |
+# Distributed under the terms of the GNU General Public License; |
330 |
+# either version 2 of the License, or (at your option) any later version. |
331 |
+ |
332 |
+"""R overlay package |
333 |
+ |
334 |
+Provides roverlay initialization helpers (setup_initial_logger, |
335 |
+load_config_file) and some information vars (version, name, ...). |
336 |
+""" |
337 |
+ |
338 |
+__all__ = [ |
339 |
+ 'DIE', 'die', 'setup_initial_logger', 'load_config_file', |
340 |
+ 'locate_config_file', 'default_helper_setup', 'load_locate_config_file', |
341 |
+] |
342 |
+ |
343 |
+import os |
344 |
+import sys |
345 |
+import logging |
346 |
+ |
347 |
+import roverlay.config |
348 |
+import roverlay.recipe.easylogger |
349 |
+import roverlay.tools.shenv |
350 |
+ |
351 |
+ |
352 |
+name = "R_overlay" |
353 |
+version = "0.2.5" |
354 |
+ |
355 |
+description_str = "R overlay creation (roverlay) " + version |
356 |
+license_str = ( |
357 |
+ 'Copyright (C) 2012, 2013 Andr\xc3\xa9 Erdmann\n' |
358 |
+ 'Distributed under the terms of the GNU General Public License;\n' |
359 |
+ 'either version 2 of the License, or (at your option) any later version.\n' |
360 |
+) |
361 |
+ |
362 |
+DEFAULT_CONFIG_FILE_NAME = "R-overlay.conf" |
363 |
+ |
364 |
+# directories where the config file could be found if roverlay has been |
365 |
+# installed, in order: |
366 |
+# * user roverlay dir (${HOME}/roverlay) |
367 |
+# * system config dir /etc/roverlay |
368 |
+# |
369 |
+# Note: $PWD has been removed |
370 |
+# |
371 |
+CONFIG_DIRS = tuple (( |
372 |
+ ( |
373 |
+ ( os.getenv ( 'HOME' ) or os.path.expanduser ( '~' ) ) |
374 |
+ + os.sep + 'roverlay' |
375 |
+ ), |
376 |
+ # os.sep is '/' if /etc exists, so don't care about that |
377 |
+ '/etc/roverlay', |
378 |
+)) |
379 |
+ |
380 |
+class DIE ( object ): |
381 |
+ """Container class for various system exit 'events'.""" |
382 |
+ NOP = os.EX_OK |
383 |
+ ERR = 1 |
384 |
+ BAD_USAGE = os.EX_USAGE |
385 |
+ USAGE = os.EX_USAGE |
386 |
+ ARG = 9 |
387 |
+ CONFIG = os.EX_CONFIG |
388 |
+ OV_CREATE = 20 |
389 |
+ SYNC = 30 |
390 |
+ CMD_LEFTOVER = 90 |
391 |
+ IMPORT = 91 |
392 |
+ UNKNOWN = 95 |
393 |
+ INTERRUPT = 130 |
394 |
+ |
395 |
+ @staticmethod |
396 |
+ def die ( msg=None, code=None ): |
397 |
+ """ |
398 |
+ Calls syst.exit (code:=DIE.ERR) after printing a message (if any). |
399 |
+ """ |
400 |
+ code = DIE.ERR if code is None else code |
401 |
+ if msg is not None: |
402 |
+ sys.stderr.write ( msg + "\n" ) |
403 |
+# else: |
404 |
+# sys.stderr.write ( "died.\n" ) |
405 |
+ sys.exit ( code ) |
406 |
+ # --- end of die (...) --- |
407 |
+ |
408 |
+# --- DIE: exit codes --- |
409 |
+die = DIE.die |
410 |
+ |
411 |
+ |
412 |
+def setup_initial_logger(): |
413 |
+ """Sets up initial logging.""" |
414 |
+ roverlay.recipe.easylogger.setup_initial() |
415 |
+# --- end of setup_initial_logger (...) --- |
416 |
+ |
417 |
+def force_console_logging ( log_level=logging.DEBUG ): |
418 |
+ roverlay.recipe.easylogger.force_reset() |
419 |
+ roverlay.recipe.easylogger.setup_initial ( log_level=log_level ) |
420 |
+ roverlay.recipe.easylogger.freeze_status() |
421 |
+# --- end of force_console_logging (...) --- |
422 |
+ |
423 |
+def load_config_file ( |
424 |
+ cfile, extraconf=None, setup_logger=True, load_main_only=False |
425 |
+): |
426 |
+ """ |
427 |
+ Loads the config, including the field definition file. |
428 |
+ Sets up the logger afterwards. |
429 |
+ (Don't call this method more than once.) |
430 |
+ |
431 |
+ arguments: |
432 |
+ * cfile -- path to the config file |
433 |
+ * extraconf -- a dict with additional config entries that will override |
434 |
+ entries read from cfile |
435 |
+ * setup_logger -- set up logger (defaults to True) |
436 |
+ * load_main_only -- if set and True: load main config file only |
437 |
+ (= do not load field def, ...) |
438 |
+ """ |
439 |
+ roverlay_config = roverlay.config.access() |
440 |
+ |
441 |
+ confloader = roverlay_config.get_loader() |
442 |
+ |
443 |
+ if cfile: |
444 |
+ confloader.load_config ( cfile ) |
445 |
+ |
446 |
+ if extraconf is not None: |
447 |
+ roverlay_config.merge_with ( extraconf ) |
448 |
+ |
449 |
+ if setup_logger: |
450 |
+ roverlay.recipe.easylogger.setup ( roverlay_config ) |
451 |
+ |
452 |
+ if not load_main_only: |
453 |
+ confloader.load_field_definition ( |
454 |
+ roverlay_config.get_or_fail ( "DESCRIPTION.field_definition_file" ) |
455 |
+ ) |
456 |
+ |
457 |
+ confloader.load_use_expand_map ( |
458 |
+ roverlay_config.get ( "EBUILD.USE_EXPAND.rename_file" ) |
459 |
+ ) |
460 |
+ |
461 |
+ return roverlay_config |
462 |
+ |
463 |
+# --- end of load_config_file (...) --- |
464 |
+ |
465 |
+def locate_config_file ( |
466 |
+ ROVERLAY_INSTALLED, CONFIG_FILE_NAME=DEFAULT_CONFIG_FILE_NAME |
467 |
+): |
468 |
+ DEFAULT_CONFIG_FILE = None |
469 |
+ # search for the config file if roverlay has been installed |
470 |
+ if ROVERLAY_INSTALLED: |
471 |
+ cfg = None |
472 |
+ config_dir = None |
473 |
+ |
474 |
+ for config_dir in CONFIG_DIRS: |
475 |
+ cfg = config_dir + os.sep + CONFIG_FILE_NAME |
476 |
+ if os.path.isfile ( cfg ): |
477 |
+ DEFAULT_CONFIG_FILE = cfg |
478 |
+ break |
479 |
+ |
480 |
+ del config_dir, cfg |
481 |
+ elif os.path.exists ( CONFIG_FILE_NAME ): |
482 |
+ DEFAULT_CONFIG_FILE = CONFIG_FILE_NAME |
483 |
+ |
484 |
+ return DEFAULT_CONFIG_FILE |
485 |
+# --- end of locate_config_file (...) --- |
486 |
+ |
487 |
+def load_locate_config_file ( |
488 |
+ ROVERLAY_INSTALLED, CONFIG_FILE_NAME=DEFAULT_CONFIG_FILE_NAME, **kw |
489 |
+): |
490 |
+ return load_config_file ( |
491 |
+ locate_config_file ( ROVERLAY_INSTALLED, CONFIG_FILE_NAME ), **kw |
492 |
+ ) |
493 |
+# --- end of load_locate_config_file (...) --- |
494 |
+ |
495 |
+def default_helper_setup ( ROVERLAY_INSTALLED ): |
496 |
+ setup_initial_logger() |
497 |
+ config = load_locate_config_file ( |
498 |
+ ROVERLAY_INSTALLED, extraconf={ 'installed': ROVERLAY_INSTALLED, }, |
499 |
+ setup_logger=False, load_main_only=True, |
500 |
+ ) |
501 |
+ roverlay.tools.shenv.setup_env() |
502 |
+ return config |
503 |
+# --- end of default_helper_setup (...) --- |
504 |
|
505 |
diff --git a/roverlay/interface/main.py b/roverlay/interface/main.py |
506 |
index db4ed50..1e4efb9 100644 |
507 |
--- a/roverlay/interface/main.py |
508 |
+++ b/roverlay/interface/main.py |
509 |
@@ -10,7 +10,7 @@ import roverlay.interface.root |
510 |
import roverlay.interface.depres |
511 |
import roverlay.interface.remote |
512 |
|
513 |
-roverlay.setup_initial_logger() |
514 |
+roverlay.core.setup_initial_logger() |
515 |
|
516 |
class MainInterface ( roverlay.interface.root.RootInterface ): |
517 |
|
518 |
|
519 |
diff --git a/roverlay/interface/root.py b/roverlay/interface/root.py |
520 |
index 5a4f386..1ea4ef1 100644 |
521 |
--- a/roverlay/interface/root.py |
522 |
+++ b/roverlay/interface/root.py |
523 |
@@ -6,14 +6,14 @@ |
524 |
|
525 |
import logging |
526 |
|
527 |
-import roverlay |
528 |
+import roverlay.core |
529 |
import roverlay.errorqueue |
530 |
import roverlay.hook |
531 |
|
532 |
import roverlay.interface.generic |
533 |
|
534 |
# does nothing if already initialized |
535 |
-roverlay.setup_initial_logger() |
536 |
+roverlay.core.setup_initial_logger() |
537 |
|
538 |
class RootInterface ( roverlay.interface.generic.RoverlayInterface ): |
539 |
"""Root interfaces for accessing roverlay interfaces. |
540 |
@@ -70,14 +70,14 @@ class RootInterface ( roverlay.interface.generic.RoverlayInterface ): |
541 |
self.config = config |
542 |
elif config_file is not None: |
543 |
if additional_config is None: |
544 |
- self.config = roverlay.load_config_file ( |
545 |
+ self.config = roverlay.core.load_config_file ( |
546 |
config_file, extraconf={ 'installed': False, } |
547 |
) |
548 |
else: |
549 |
# modifies additional_config |
550 |
additional_config.update ( { 'installed': False, } ) |
551 |
|
552 |
- self.config = roverlay.load_config_file ( |
553 |
+ self.config = roverlay.core.load_config_file ( |
554 |
config_file, extraconf=additional_config |
555 |
) |
556 |
else: |
557 |
|
558 |
diff --git a/roverlay/main.py b/roverlay/main.py |
559 |
index 04678fa..9cca0a8 100644 |
560 |
--- a/roverlay/main.py |
561 |
+++ b/roverlay/main.py |
562 |
@@ -10,95 +10,21 @@ __all__ = [ 'main' ] |
563 |
|
564 |
import os |
565 |
import sys |
566 |
+import stat |
567 |
|
568 |
import roverlay |
569 |
+import roverlay.core |
570 |
+import roverlay.argutil |
571 |
import roverlay.tools.shenv |
572 |
import roverlay.stats.collector |
573 |
+import roverlay.util |
574 |
+import roverlay.config.entrymap |
575 |
+import roverlay.config.entryutil |
576 |
+import roverlay.packagerules.rules |
577 |
|
578 |
-# roverlay modules will be imported later |
579 |
- |
580 |
-DEFAULT_CONFIG_FILE_NAME = "R-overlay.conf" |
581 |
- |
582 |
-# directories where the config file could be found if roverlay has been |
583 |
-# installed, in order: |
584 |
-# * ${PWD} |
585 |
-# * user roverlay dir (${HOME}/roverlay) |
586 |
-# * system config dir /etc/roverlay |
587 |
-CONFIG_DIRS = tuple (( |
588 |
- '.', |
589 |
- ( |
590 |
- ( os.getenv ( 'HOME' ) or os.path.expanduser ( '~' ) ) |
591 |
- + os.sep + 'roverlay' |
592 |
- ), |
593 |
- # os.sep is '/' if /etc exists, so don't care about that |
594 |
- '/etc/roverlay', |
595 |
-)) |
596 |
- |
597 |
- |
598 |
-class DIE ( object ): |
599 |
- """Container class for various system exit 'events'.""" |
600 |
- NOP = os.EX_OK |
601 |
- ERR = 1 |
602 |
- BAD_USAGE = os.EX_USAGE |
603 |
- USAGE = os.EX_USAGE |
604 |
- ARG = 9 |
605 |
- CONFIG = os.EX_CONFIG |
606 |
- OV_CREATE = 20 |
607 |
- SYNC = 30 |
608 |
- CMD_LEFTOVER = 90 |
609 |
- IMPORT = 91 |
610 |
- UNKNOWN = 95 |
611 |
- INTERRUPT = 130 |
612 |
- |
613 |
- @staticmethod |
614 |
- def die ( msg=None, code=None ): |
615 |
- """ |
616 |
- Calls syst.exit (code:=DIE.ERR) after printing a message (if any). |
617 |
- """ |
618 |
- code = DIE.ERR if code is None else code |
619 |
- if msg is not None: |
620 |
- sys.stderr.write ( msg + "\n" ) |
621 |
-# else: |
622 |
-# sys.stderr.write ( "died.\n" ) |
623 |
- sys.exit ( code ) |
624 |
- # --- end of die (...) --- |
625 |
- |
626 |
-# --- DIE: exit codes --- |
627 |
-die = DIE.die |
628 |
- |
629 |
-def locate_config_file ( |
630 |
- ROVERLAY_INSTALLED, CONFIG_FILE_NAME=DEFAULT_CONFIG_FILE_NAME |
631 |
-): |
632 |
- DEFAULT_CONFIG_FILE = None |
633 |
- # search for the config file if roverlay has been installed |
634 |
- if ROVERLAY_INSTALLED: |
635 |
- cfg = None |
636 |
- config_dir = None |
637 |
- |
638 |
- for config_dir in CONFIG_DIRS: |
639 |
- cfg = config_dir + os.sep + CONFIG_FILE_NAME |
640 |
- if os.path.isfile ( cfg ): |
641 |
- DEFAULT_CONFIG_FILE = cfg |
642 |
- break |
643 |
- |
644 |
- del config_dir, cfg |
645 |
- elif os.path.exists ( CONFIG_FILE_NAME ): |
646 |
- DEFAULT_CONFIG_FILE = CONFIG_FILE_NAME |
647 |
- |
648 |
- return DEFAULT_CONFIG_FILE |
649 |
-# --- end of locate_config_file (...) --- |
650 |
- |
651 |
-def default_helper_setup ( ROVERLAY_INSTALLED ): |
652 |
- roverlay.setup_initial_logger() |
653 |
- config_file = locate_config_file ( ROVERLAY_INSTALLED=ROVERLAY_INSTALLED ) |
654 |
- |
655 |
- config = roverlay.load_config_file ( |
656 |
- config_file, extraconf={ 'installed': ROVERLAY_INSTALLED, }, |
657 |
- setup_logger=False, load_main_only=True, |
658 |
- ) |
659 |
- roverlay.tools.shenv.setup_env() |
660 |
- return config |
661 |
-# --- end of default_helper_setup (...) --- |
662 |
+ |
663 |
+DIE = roverlay.core.DIE |
664 |
+die = roverlay.core.die |
665 |
|
666 |
def run_script_main_installed(): |
667 |
return run_script_main ( True ) |
668 |
@@ -107,7 +33,7 @@ def run_script_main ( ROVERLAY_INSTALLED ): |
669 |
if len ( sys.argv ) < 2 or not sys.argv[0]: |
670 |
die ( "no executable specified.", DIE.USAGE ) |
671 |
|
672 |
- default_helper_setup ( ROVERLAY_INSTALLED ) |
673 |
+ roverlay.core.default_helper_setup ( ROVERLAY_INSTALLED ) |
674 |
roverlay.tools.shenv.run_script_exec ( |
675 |
sys.argv[1], "runscript", sys.argv[1:], use_path=True |
676 |
) |
677 |
@@ -117,7 +43,7 @@ def run_shell_main_installed(): |
678 |
return run_shell_main ( True ) |
679 |
|
680 |
def run_shell_main ( ROVERLAY_INSTALLED ): |
681 |
- config = default_helper_setup ( ROVERLAY_INSTALLED ) |
682 |
+ config = roverlay.core.default_helper_setup ( ROVERLAY_INSTALLED ) |
683 |
shell = config.get ( 'SHELL_ENV.shell', '/bin/sh' ) |
684 |
roverlay.tools.shenv.run_script_exec ( |
685 |
shell, "shell", [ shell, ] + sys.argv [1:], use_path=False |
686 |
@@ -126,10 +52,6 @@ def run_shell_main ( ROVERLAY_INSTALLED ): |
687 |
|
688 |
|
689 |
def run_setupdirs ( config, target_uid, target_gid ): |
690 |
- import stat |
691 |
- import roverlay.util |
692 |
- import roverlay.config.entrymap |
693 |
- import roverlay.config.entryutil |
694 |
|
695 |
dodir = roverlay.util.dodir |
696 |
find_config_path = roverlay.config.entryutil.find_config_path |
697 |
@@ -181,7 +103,7 @@ def main_installed(): |
698 |
def main ( |
699 |
ROVERLAY_INSTALLED, |
700 |
HIDE_EXCEPTIONS=False, |
701 |
- CONFIG_FILE_NAME=DEFAULT_CONFIG_FILE_NAME |
702 |
+ CONFIG_FILE_NAME=roverlay.core.DEFAULT_CONFIG_FILE_NAME |
703 |
): |
704 |
"""main() - parse args, run overlay creation, sync, ... |
705 |
|
706 |
@@ -421,9 +343,9 @@ def main ( |
707 |
# ******************** |
708 |
|
709 |
# get args |
710 |
- # imports roverlay.argutil (deleted when done) |
711 |
try: |
712 |
- import roverlay.argutil |
713 |
+ # FIXME: why is the reimport of roverlay necessary? |
714 |
+ import roverlay |
715 |
except ImportError: |
716 |
if HIDE_EXCEPTIONS: |
717 |
die ( "Cannot import roverlay modules!", DIE.IMPORT ) |
718 |
@@ -443,7 +365,7 @@ def main ( |
719 |
} |
720 |
|
721 |
|
722 |
- DEFAULT_CONFIG_FILE = locate_config_file ( |
723 |
+ DEFAULT_CONFIG_FILE = roverlay.core.locate_config_file ( |
724 |
ROVERLAY_INSTALLED, CONFIG_FILE_NAME |
725 |
) |
726 |
|
727 |
@@ -457,7 +379,6 @@ def main ( |
728 |
|
729 |
OPTION = extra_opts.get |
730 |
|
731 |
- del roverlay.argutil |
732 |
|
733 |
# -- determine commands to run |
734 |
# (TODO) could replace this section when adding more actions |
735 |
@@ -491,18 +412,10 @@ def main ( |
736 |
# imports: roverlay, roverlay.config.entryutil (if --help-config) |
737 |
|
738 |
try: |
739 |
- import roverlay |
740 |
- except ImportError: |
741 |
- if HIDE_EXCEPTIONS: |
742 |
- die ( "Cannot import roverlay modules!", DIE.IMPORT ) |
743 |
- else: |
744 |
- raise |
745 |
- |
746 |
- try: |
747 |
roverlay.stats.collector.static.time.begin ( "setup" ) |
748 |
- roverlay.setup_initial_logger() |
749 |
+ roverlay.core.setup_initial_logger() |
750 |
|
751 |
- conf = roverlay.load_config_file ( |
752 |
+ conf = roverlay.core.load_config_file ( |
753 |
config_file, |
754 |
extraconf = additional_config, |
755 |
setup_logger = want_logging, |
756 |
@@ -549,8 +462,6 @@ def main ( |
757 |
if OPTION ( 'print_package_rules' ): |
758 |
# no try-/catch block here |
759 |
|
760 |
- import roverlay.packagerules.rules |
761 |
- |
762 |
package_rules = ( |
763 |
roverlay.packagerules.rules.PackageRules.get_configured() |
764 |
) |
765 |
@@ -639,7 +550,7 @@ def main ( |
766 |
|
767 |
|
768 |
if STATS_DB_FILE and want_db_commit: |
769 |
- roverlay.stats.collector.static.write_db() |
770 |
+ roverlay.stats.collector.static.write_database() |
771 |
roverlay.hook.run ( 'db_written' ) |
772 |
|
773 |
|
774 |
|
775 |
diff --git a/roverlay/recipe/easyresolver.py b/roverlay/recipe/easyresolver.py |
776 |
index 9055516..70cf108 100644 |
777 |
--- a/roverlay/recipe/easyresolver.py |
778 |
+++ b/roverlay/recipe/easyresolver.py |
779 |
@@ -8,10 +8,9 @@ |
780 |
|
781 |
__all__ = [ 'setup', ] |
782 |
|
783 |
-from roverlay import config |
784 |
-from roverlay.depres import listeners, deptype |
785 |
-from roverlay.depres.depresolver import DependencyResolver |
786 |
-from roverlay.depres.simpledeprule import SimpleDependencyRulePool |
787 |
+from roverlay import config |
788 |
+from roverlay.depres import listeners |
789 |
+from roverlay.depres.depresolver import DependencyResolver |
790 |
|
791 |
|
792 |
def setup ( err_queue ): |
793 |
|
794 |
diff --git a/roverlay/versiontuple.py b/roverlay/versiontuple.py |
795 |
index 20d5cf8..6586088 100644 |
796 |
--- a/roverlay/versiontuple.py |
797 |
+++ b/roverlay/versiontuple.py |
798 |
@@ -114,7 +114,7 @@ class VersionTuple ( tuple ): |
799 |
* keep_eq -- preserve VMOD_EQ when determining the inverse of mode |
800 |
(Example: '<' becomes '>' if True, else '>=') |
801 |
""" |
802 |
- f = self.get_comparator ( vmod_inverse ( mode, keep_eq=True ) ) |
803 |
+ f = self.get_comparator ( vmod_inverse ( mode, keep_eq=keep_eq ) ) |
804 |
return pkgver_decorator ( f ) if f is not None else None |
805 |
# --- end of get_package_comparator (...) --- |