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/, roverlay/overlay/pkgdir/, roverlay/overlay/
Date: Fri, 02 Aug 2013 10:34:52
Message-Id: 1375438950.0a2b1b41cfbe8ef4683ee392ed92e425343f235d.dywi@gentoo
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 (...) ---