1 |
commit: 0a2b1b41cfbe8ef4683ee392ed92e425343f235d |
2 |
Author: André Erdmann <dywi <AT> mailerd <DOT> de> |
3 |
AuthorDate: Fri Aug 2 10:22:30 2013 +0000 |
4 |
Commit: André Erdmann <dywi <AT> mailerd <DOT> de> |
5 |
CommitDate: Fri Aug 2 10:22:30 2013 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=0a2b1b41 |
7 |
|
8 |
overlay creation, import ebuilds: fixup |
9 |
|
10 |
* fix DOEBUILD_FETCH behavior (replaced by DOEBUILD_FETCH_WITH_MANIFEST bool) |
11 |
* respect --nosync/--sync-imports |
12 |
* increment 'ebuilds_imported' stats counter |
13 |
* call import_ebuilds() in main(), not in Overlay.__init__() |
14 |
|
15 |
--- |
16 |
roverlay/main.py | 9 +++++- |
17 |
roverlay/overlay/category.py | 11 ++++--- |
18 |
roverlay/overlay/pkgdir/packagedir_base.py | 39 ++++++++++++++++------- |
19 |
roverlay/overlay/pkgdir/packagedir_newmanifest.py | 4 +-- |
20 |
roverlay/overlay/root.py | 6 ++-- |
21 |
5 files changed, 45 insertions(+), 24 deletions(-) |
22 |
|
23 |
diff --git a/roverlay/main.py b/roverlay/main.py |
24 |
index dff81a8..b67aa31 100644 |
25 |
--- a/roverlay/main.py |
26 |
+++ b/roverlay/main.py |
27 |
@@ -124,7 +124,7 @@ def main ( |
28 |
# set up the repo list |
29 |
global repo_list |
30 |
repo_list = RepoList ( |
31 |
- sync_enabled = not OPTION ( 'nosync' ), |
32 |
+ sync_enabled = not conf.get_or_fail ( 'nosync' ), |
33 |
force_distroot = OPTION ( 'force_distroot' ) |
34 |
) |
35 |
|
36 |
@@ -291,6 +291,13 @@ def main ( |
37 |
immediate_ebuild_writes = OPTION ( 'immediate_ebuild_writes' ), |
38 |
) |
39 |
|
40 |
+ overlay_creator.overlay.import_ebuilds ( |
41 |
+ overwrite = not OPTION ( 'incremental' ), |
42 |
+ nosync = ( |
43 |
+ OPTION ( 'sync_imported' ) or conf.get_or_fail ( 'nosync' ) |
44 |
+ ), |
45 |
+ ) |
46 |
+ |
47 |
repo_list.add_packages ( overlay_creator.add_package ) |
48 |
if OPTION ( 'revbump' ): |
49 |
overlay_creator.enqueue_postponed() |
50 |
|
51 |
diff --git a/roverlay/overlay/category.py b/roverlay/overlay/category.py |
52 |
index e074f98..751a26d 100644 |
53 |
--- a/roverlay/overlay/category.py |
54 |
+++ b/roverlay/overlay/category.py |
55 |
@@ -173,17 +173,18 @@ class Category ( object ): |
56 |
return os.path.isdir ( self.physical_location + os.sep + _dir ) |
57 |
# --- end of has_category (...) --- |
58 |
|
59 |
- def import_ebuilds ( self, catview, *args, **kwargs ): |
60 |
+ def import_ebuilds ( self, catview, **kwargs ): |
61 |
"""Imports ebuilds into this category. |
62 |
|
63 |
arguments: |
64 |
- * catview -- view object that creates EbuildView objects |
65 |
- * *args, **kwargs -- (keyword) arguments that will be passed to |
66 |
- package dirs |
67 |
+ * catview -- view object that creates EbuildView objects |
68 |
+ * **kwargs -- (keyword) arguments that will be passed to |
69 |
+ package dirs |
70 |
""" |
71 |
+ stats = self.STATS |
72 |
for eview in catview: |
73 |
self._get_package_dir ( eview.name ).import_ebuilds ( |
74 |
- eview, *args, **kwargs |
75 |
+ eview, stats=stats, **kwargs |
76 |
) |
77 |
# --- end of import_ebuilds (...) --- |
78 |
|
79 |
|
80 |
diff --git a/roverlay/overlay/pkgdir/packagedir_base.py b/roverlay/overlay/pkgdir/packagedir_base.py |
81 |
index 7d5f906..44f42e9 100644 |
82 |
--- a/roverlay/overlay/pkgdir/packagedir_base.py |
83 |
+++ b/roverlay/overlay/pkgdir/packagedir_base.py |
84 |
@@ -62,11 +62,11 @@ class PackageDirBase ( object ): |
85 |
# other subsystems might calculate them in advance if advertised here |
86 |
HASH_TYPES = None |
87 |
|
88 |
- # DOEBUILD_FETCH |
89 |
- # doebuild function that fetches $SRC_URI |
90 |
- # can be overridden by subclasses if e.g. on-the-fly manifest creation |
91 |
- # is required, too |
92 |
- DOEBUILD_FETCH = roverlay.tools.ebuild.doebuild_fetch |
93 |
+ # DOEBUILD_FETCH_WITH_MANIFEST |
94 |
+ # bool that indicates whether the "ebuild <...> fetch" should create |
95 |
+ # a Manifest file (when importing ebuilds) |
96 |
+ # |
97 |
+ DOEBUILD_FETCH_WITH_MANIFEST = False |
98 |
|
99 |
@classmethod |
100 |
def init_base_cls ( cls ): |
101 |
@@ -618,22 +618,37 @@ class PackageDirBase ( object ): |
102 |
# --- end of get_distdir (...) --- |
103 |
|
104 |
def fetch_src_for_ebuild ( self, efile ): |
105 |
- return self.DOEBUILD_FETCH ( |
106 |
- ebuild_file = efile, |
107 |
- logger = self.logger, |
108 |
- env = self.FETCHENV.get_env ( self.get_distdir().get_root() ) |
109 |
- ) |
110 |
+ fetch_env = self.FETCHENV.get_env ( self.get_distdir().get_root() ) |
111 |
+ |
112 |
+ if self.DOEBUILD_FETCH_WITH_MANIFEST: |
113 |
+ return roverlay.tools.ebuild.doebuild_fetch_and_manifest ( |
114 |
+ ebuild_file = efile, |
115 |
+ logger = self.logger, |
116 |
+ env = fetch_env, |
117 |
+ ) |
118 |
+ else: |
119 |
+ return roverlay.tools.ebuilds.doebuild_fetch ( |
120 |
+ ebuild_file = efile, |
121 |
+ logger = self.logger, |
122 |
+ env = fetch_env, |
123 |
+ ) |
124 |
# --- end of fetch_src_for_ebuild (...) --- |
125 |
|
126 |
- def import_ebuilds ( self, eview, overwrite, nosync=False ): |
127 |
+ def import_ebuilds ( self, eview, overwrite, nosync=False, stats=None ): |
128 |
"""Imports ebuilds from an additions dir into this package dir. |
129 |
|
130 |
arguments: |
131 |
* eview -- additions dir ebuild view |
132 |
* overwrite -- whether to overwrite existing ebuilds or not |
133 |
* nosync -- if True: don't fetch src files (defaults to False) |
134 |
+ * stats -- |
135 |
""" |
136 |
|
137 |
+ stats_ebuild_imported = ( |
138 |
+ stats.ebuilds_imported.inc if stats is not None |
139 |
+ else ( lambda: None ) |
140 |
+ ) |
141 |
+ |
142 |
def import_ebuild_efile ( pvr, efile_src, fname ): |
143 |
"""Imports an ebuild file into this package dir and registers it |
144 |
in self._packages. |
145 |
@@ -675,6 +690,8 @@ class PackageDirBase ( object ): |
146 |
# imported ebuilds cannot be used for generating metadata.xml |
147 |
##self._need_metadata = True |
148 |
|
149 |
+ stats_ebuild_imported() |
150 |
+ |
151 |
return p |
152 |
except: |
153 |
# this package dir is "broken" now, |
154 |
|
155 |
diff --git a/roverlay/overlay/pkgdir/packagedir_newmanifest.py b/roverlay/overlay/pkgdir/packagedir_newmanifest.py |
156 |
index f7c258c..7bbfb86 100644 |
157 |
--- a/roverlay/overlay/pkgdir/packagedir_newmanifest.py |
158 |
+++ b/roverlay/overlay/pkgdir/packagedir_newmanifest.py |
159 |
@@ -12,8 +12,6 @@ import threading |
160 |
|
161 |
import roverlay.config |
162 |
|
163 |
-import roverlay.tools.ebuild |
164 |
- |
165 |
import roverlay.overlay.pkgdir.manifest.file |
166 |
import roverlay.overlay.pkgdir.packagedir_base |
167 |
|
168 |
@@ -31,7 +29,7 @@ class PackageDir ( roverlay.overlay.pkgdir.packagedir_base.PackageDirBase ): |
169 |
HASH_TYPES = frozenset ( ManifestFile.HASH_TYPES ) |
170 |
|
171 |
# Manifest entries for imported ebuilds have to be created during import |
172 |
- DOEBUILD_FETCH = roverlay.tools.ebuild.doebuild_fetch_and_manifest |
173 |
+ DOEBUILD_FETCH_WITH_MANIFEST = True |
174 |
|
175 |
def _get_manifest ( self ): |
176 |
"""Returns a ManifestFile object.""" |
177 |
|
178 |
diff --git a/roverlay/overlay/root.py b/roverlay/overlay/root.py |
179 |
index 1ecf4ac..32bab35 100644 |
180 |
--- a/roverlay/overlay/root.py |
181 |
+++ b/roverlay/overlay/root.py |
182 |
@@ -91,7 +91,7 @@ class Overlay ( object ): |
183 |
rsuggests_flags, |
184 |
use_desc=None, |
185 |
runtime_incremental=False, |
186 |
- keep_n_ebuilds=None |
187 |
+ keep_n_ebuilds=None, |
188 |
): |
189 |
"""Initializes an overlay. |
190 |
|
191 |
@@ -179,8 +179,6 @@ class Overlay ( object ): |
192 |
# ready) |
193 |
self.scan() |
194 |
|
195 |
- self.import_ebuilds ( overwrite=( not incremental ) ) |
196 |
- |
197 |
if __debug__: |
198 |
# verify that these config keys exist: |
199 |
roverlay.config.get_or_fail ( "EBUILD.USE_EXPAND.name" ).rstrip() |
200 |
@@ -679,7 +677,7 @@ class Overlay ( object ): |
201 |
roverlay.overlay.additionsdir.CategoryRootView ( self.additions_dir ) |
202 |
): |
203 |
self._get_category ( catview.name ).import_ebuilds ( |
204 |
- catview, overwrite=overwrite |
205 |
+ catview, overwrite=overwrite, nosync=nosync |
206 |
) |
207 |
# --- end of import_ebuilds (...) --- |