1 |
commit: f6d66e29da42e30705cebfadcf20bf02b8f07bac |
2 |
Author: André Erdmann <dywi <AT> mailerd <DOT> de> |
3 |
AuthorDate: Fri Aug 2 13:34:39 2013 +0000 |
4 |
Commit: André Erdmann <dywi <AT> mailerd <DOT> de> |
5 |
CommitDate: Fri Aug 2 13:34:57 2013 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=f6d66e29 |
7 |
|
8 |
overlay: create/write metadata/layout.conf |
9 |
|
10 |
--- |
11 |
roverlay/config/const.py | 1 + |
12 |
roverlay/overlay/root.py | 52 ++++++++++++++++++++++++++++++++++++++++++++++-- |
13 |
2 files changed, 51 insertions(+), 2 deletions(-) |
14 |
|
15 |
diff --git a/roverlay/config/const.py b/roverlay/config/const.py |
16 |
index 2dc79c5..64ee0ad 100644 |
17 |
--- a/roverlay/config/const.py |
18 |
+++ b/roverlay/config/const.py |
19 |
@@ -79,6 +79,7 @@ _CONSTANTS = dict ( |
20 |
name = 'R_Overlay', |
21 |
category = 'sci-R', |
22 |
manifest_implementation = 'default', |
23 |
+ masters = [ 'gentoo', ], |
24 |
), |
25 |
|
26 |
EVENT_HOOK = dict ( |
27 |
|
28 |
diff --git a/roverlay/overlay/root.py b/roverlay/overlay/root.py |
29 |
index 32bab35..c404813 100644 |
30 |
--- a/roverlay/overlay/root.py |
31 |
+++ b/roverlay/overlay/root.py |
32 |
@@ -30,7 +30,7 @@ import roverlay.recipe.distmap |
33 |
import roverlay.overlay.additionsdir |
34 |
import roverlay.overlay.category |
35 |
import roverlay.overlay.header |
36 |
- |
37 |
+import roverlay.overlay.pkgdir.base |
38 |
|
39 |
class Overlay ( object ): |
40 |
DEFAULT_USE_DESC = ( |
41 |
@@ -71,6 +71,7 @@ class Overlay ( object ): |
42 |
use_desc = optional ( 'OVERLAY.use_desc' ), |
43 |
rsuggests_flags = rsuggests_flags, |
44 |
keep_n_ebuilds = optional ( 'OVERLAY.keep_nth_latest' ), |
45 |
+ masters = mandatory ( 'OVERLAY.masters' ), |
46 |
**kw |
47 |
) |
48 |
# --- end of new_configured (...) --- |
49 |
@@ -92,6 +93,7 @@ class Overlay ( object ): |
50 |
use_desc=None, |
51 |
runtime_incremental=False, |
52 |
keep_n_ebuilds=None, |
53 |
+ masters=None, |
54 |
): |
55 |
"""Initializes an overlay. |
56 |
|
57 |
@@ -137,6 +139,7 @@ class Overlay ( object ): |
58 |
self._catlock = threading.Lock() |
59 |
self._categories = dict() |
60 |
|
61 |
+ self._masters = masters |
62 |
self._rsuggests_flags = rsuggests_flags |
63 |
|
64 |
self.skip_manifest = skip_manifest |
65 |
@@ -278,6 +281,10 @@ class Overlay ( object ): |
66 |
raises: |
67 |
* IOError |
68 |
""" |
69 |
+ NEWLINE = '\n' |
70 |
+ EMPTY_STR = "" |
71 |
+ |
72 |
+ |
73 |
def write_profiles_dir(): |
74 |
"""Creates and updates the profiles/ dir.""" |
75 |
def write_profiles_file ( filename, to_write ): |
76 |
@@ -339,6 +346,46 @@ class Overlay ( object ): |
77 |
write_profiles_file ( 'use.desc', self._use_desc + '\n' ) |
78 |
# --- end of write_profiles_dir (...) --- |
79 |
|
80 |
+ def write_metadata_dir(): |
81 |
+ |
82 |
+ METADATA_DIR = self.physical_location + os.sep + 'metadata' |
83 |
+ roverlay.util.dodir ( METADATA_DIR ) |
84 |
+ |
85 |
+ # create layout.conf file |
86 |
+ # * create lines |
87 |
+ layout_lines = list() |
88 |
+ layout_add = layout_lines.append |
89 |
+ kv_join = lambda k, v: "{k} = {v}".format ( k=k, v=v ) |
90 |
+ v_join = lambda v: ' '.join ( v ) |
91 |
+ |
92 |
+ layout_add ( kv_join ( "repo_name", self.name ) ) |
93 |
+ |
94 |
+ if self._masters: |
95 |
+ layout_add ( kv_join ( "masters", v_join ( self._masters ) ) ) |
96 |
+ else: |
97 |
+ layout_add ( "masters =" ) |
98 |
+ |
99 |
+ |
100 |
+ # strictly speaking, |
101 |
+ # declaring cache-formats here is not correct since egencache |
102 |
+ # is run as hook |
103 |
+ layout_add ( kv_join ( "cache-formats", "md5-dict" ) ) |
104 |
+ |
105 |
+ ##layout_add ( kv_join ( "sign-commits", "false" ) ) |
106 |
+ ##layout_add ( kv_join ( "sign-manifests", "false" ) ) |
107 |
+ ##layout_add ( kv_join ( "thin-manifests", "false" ) ) |
108 |
+ |
109 |
+ hashes = roverlay.overlay.pkgdir.base.get_class().HASH_TYPES |
110 |
+ if hashes: |
111 |
+ layout_add ( kv_join ( "manifest-hashes", v_join ( hashes ) ) ) |
112 |
+ |
113 |
+ # * write it |
114 |
+ with open ( METADATA_DIR + os.sep + 'layout.conf', 'wt' ) as FH: |
115 |
+ for line in layout_lines: |
116 |
+ FH.write ( line ) |
117 |
+ FH.write ( NEWLINE ) |
118 |
+ # --- end of write_metadata_dir (...) --- |
119 |
+ |
120 |
try: |
121 |
# mkdir overlay root |
122 |
roverlay.util.dodir ( self.physical_location, mkdir_p=True ) |
123 |
@@ -346,11 +393,12 @@ class Overlay ( object ): |
124 |
self._import_eclass ( reimport_eclass ) |
125 |
|
126 |
write_profiles_dir() |
127 |
+ write_metadata_dir() |
128 |
|
129 |
except IOError as e: |
130 |
|
131 |
self.logger.exception ( e ) |
132 |
- self.logger.critical ( "^failed to init overlay" ) |
133 |
+ self.logger.critical ( "failed to init overlay" ) |
134 |
raise |
135 |
# --- end of _init_overlay (...) --- |