1 |
commit: 5e738c15639dddb86446e5c749d2c986f4350580 |
2 |
Author: André Erdmann <dywi <AT> mailerd <DOT> de> |
3 |
AuthorDate: Thu Aug 29 12:28:14 2013 +0000 |
4 |
Commit: André Erdmann <dywi <AT> mailerd <DOT> de> |
5 |
CommitDate: Thu Aug 29 12:28:14 2013 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=5e738c15 |
7 |
|
8 |
common base object for Overlay,Category,... |
9 |
|
10 |
--- |
11 |
roverlay/overlay/base.py | 34 ++++++++++++++++++++++++++++++++++ |
12 |
roverlay/overlay/category.py | 10 +++++----- |
13 |
roverlay/overlay/root.py | 12 ++++++------ |
14 |
3 files changed, 45 insertions(+), 11 deletions(-) |
15 |
|
16 |
diff --git a/roverlay/overlay/base.py b/roverlay/overlay/base.py |
17 |
new file mode 100644 |
18 |
index 0000000..b380e8f |
19 |
--- /dev/null |
20 |
+++ b/roverlay/overlay/base.py |
21 |
@@ -0,0 +1,34 @@ |
22 |
+# R overlay -- overlay package, overlay base object |
23 |
+# -*- coding: utf-8 -*- |
24 |
+# Copyright (C) 2013 André Erdmann <dywi@×××××××.de> |
25 |
+# Distributed under the terms of the GNU General Public License; |
26 |
+# either version 2 of the License, or (at your option) any later version. |
27 |
+ |
28 |
+import logging |
29 |
+ |
30 |
+import roverlay.util.objects |
31 |
+ |
32 |
+class OverlayObject ( roverlay.util.objects.ReferenceTree ): |
33 |
+ |
34 |
+ # always keep a (weak) reference to self: |
35 |
+ # (a) Overlay: multiple Category objects use this ref |
36 |
+ # (b) Category: ^ PackageDir ... |
37 |
+ # (c) PackageDir: ^ PackageInfo ... |
38 |
+ # |
39 |
+ CACHE_REF = True |
40 |
+ |
41 |
+ def __init__ ( self, name, logger, directory, parent ): |
42 |
+ super ( OverlayObject, self ).__init__ ( parent ) |
43 |
+ self.name = name |
44 |
+ self.logger = ( |
45 |
+ logger.getChild ( name ) if logger else logging.getLogger ( name ) |
46 |
+ ) |
47 |
+ self.physical_location = directory |
48 |
+ # --- end of __init__ (...) --- |
49 |
+ |
50 |
+ # inherited: |
51 |
+ #def get_parent |
52 |
+ #def get_upper |
53 |
+ #def get_ref |
54 |
+ |
55 |
+# --- end of OverlayObject --- |
56 |
|
57 |
diff --git a/roverlay/overlay/category.py b/roverlay/overlay/category.py |
58 |
index 2fc3a4f..d2b2028 100644 |
59 |
--- a/roverlay/overlay/category.py |
60 |
+++ b/roverlay/overlay/category.py |
61 |
@@ -27,6 +27,7 @@ except ImportError: |
62 |
import roverlay.stats.collector |
63 |
|
64 |
import roverlay.overlay.pkgdir.base |
65 |
+import roverlay.overlay.base |
66 |
##import roverlay.overlay.pkgdir.packagedir_ebuildmanifest |
67 |
##import roverlay.overlay.pkgdir.packagedir_newmanifest |
68 |
|
69 |
@@ -77,14 +78,14 @@ class WriteQueueJob ( object ): |
70 |
|
71 |
# --- end of WriteQueueJob --- |
72 |
|
73 |
-class Category ( object ): |
74 |
+class Category ( roverlay.overlay.base.OverlayObject ): |
75 |
|
76 |
WRITE_JOBCOUNT = 3 |
77 |
|
78 |
STATS = roverlay.stats.collector.static.overlay |
79 |
|
80 |
def __init__ ( self, |
81 |
- name, logger, directory, get_header, runtime_incremental |
82 |
+ name, logger, directory, get_header, runtime_incremental, parent |
83 |
): |
84 |
"""Initializes a overlay/portage category (such as 'app-text', 'sci-R'). |
85 |
|
86 |
@@ -95,12 +96,11 @@ class Category ( object ): |
87 |
* get_header -- function that returns an ebuild header |
88 |
* runtime_incremental -- enable/disable runtime incremental writing |
89 |
for this category (and all created PackageDirs) |
90 |
+ * parent -- overlay object that created/creates this object |
91 |
""" |
92 |
- self.logger = logger.getChild ( name ) |
93 |
- self.name = name |
94 |
+ super ( Category, self ).__init__ ( name, logger, directory, parent ) |
95 |
self._lock = threading.RLock() |
96 |
self._subdirs = dict() |
97 |
- self.physical_location = directory |
98 |
self.get_header = get_header |
99 |
self.runtime_incremental = runtime_incremental |
100 |
self.packagedir_cls = roverlay.overlay.pkgdir.base.get_class() |
101 |
|
102 |
diff --git a/roverlay/overlay/root.py b/roverlay/overlay/root.py |
103 |
index 6e3b1d7..1a07091 100644 |
104 |
--- a/roverlay/overlay/root.py |
105 |
+++ b/roverlay/overlay/root.py |
106 |
@@ -27,15 +27,15 @@ import threading |
107 |
import roverlay.config |
108 |
import roverlay.util |
109 |
import roverlay.overlay.additionsdir |
110 |
+import roverlay.overlay.base |
111 |
import roverlay.overlay.category |
112 |
import roverlay.overlay.header |
113 |
import roverlay.overlay.pkgdir.base |
114 |
import roverlay.overlay.pkgdir.distroot.static |
115 |
|
116 |
-class Overlay ( object ): |
117 |
+class Overlay ( roverlay.overlay.base.OverlayObject ): |
118 |
DEFAULT_USE_DESC = ( |
119 |
'byte-compile - enable byte compiling\n' |
120 |
- 'R_suggests - install recommended packages' |
121 |
) |
122 |
|
123 |
@classmethod |
124 |
@@ -124,9 +124,8 @@ class Overlay ( object ): |
125 |
* keep_n_ebuilds -- number of ebuilds to keep (per package), |
126 |
any "false" Value (None, 0, ...) disables this |
127 |
""" |
128 |
- self.name = name |
129 |
- self.logger = logger.getChild ( 'overlay' ) |
130 |
- self.physical_location = directory |
131 |
+ super ( Overlay, self ).__init__ ( name, logger, directory, None ) |
132 |
+ |
133 |
self.default_category = default_category |
134 |
|
135 |
self._eclass_files = eclass_files |
136 |
@@ -203,7 +202,8 @@ class Overlay ( object ): |
137 |
self.logger, |
138 |
self.physical_location + os.sep + category, |
139 |
get_header=self._header.get, |
140 |
- runtime_incremental=self._runtime_incremental |
141 |
+ runtime_incremental=self._runtime_incremental, |
142 |
+ parent=self, |
143 |
) |
144 |
self._categories [category] = newcat |
145 |
finally: |