1 |
commit: bfa939daa5d6aad8f4a7b129bced7e9dba796828 |
2 |
Author: Magnus Granberg <zorry <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sat Apr 17 17:24:48 2021 +0000 |
4 |
Commit: Magnus Granberg <zorry <AT> gentoo <DOT> org> |
5 |
CommitDate: Sat Apr 17 17:24:48 2021 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/tinderbox-cluster.git/commit/?id=bfa939da |
7 |
|
8 |
Add support for more LocalWorkers |
9 |
|
10 |
Signed-off-by: Magnus Granberg <zorry <AT> gentoo.org> |
11 |
|
12 |
buildbot_gentoo_ci/config/builders.py | 28 +++++++------- |
13 |
buildbot_gentoo_ci/config/buildfactorys.py | 8 ---- |
14 |
buildbot_gentoo_ci/config/schedulers.py | 10 ++--- |
15 |
buildbot_gentoo_ci/config/workers.py | 3 ++ |
16 |
buildbot_gentoo_ci/steps/category.py | 2 +- |
17 |
buildbot_gentoo_ci/steps/package.py | 32 +++++++-------- |
18 |
buildbot_gentoo_ci/steps/portage.py | 3 +- |
19 |
buildbot_gentoo_ci/steps/update_db.py | 62 ++++++++++-------------------- |
20 |
buildbot_gentoo_ci/steps/version.py | 46 +++++++++++----------- |
21 |
9 files changed, 85 insertions(+), 109 deletions(-) |
22 |
|
23 |
diff --git a/buildbot_gentoo_ci/config/builders.py b/buildbot_gentoo_ci/config/builders.py |
24 |
index d022ac7..56cdde1 100644 |
25 |
--- a/buildbot_gentoo_ci/config/builders.py |
26 |
+++ b/buildbot_gentoo_ci/config/builders.py |
27 |
@@ -4,8 +4,14 @@ |
28 |
from buildbot.plugins import util |
29 |
from buildbot_gentoo_ci.config import buildfactorys |
30 |
|
31 |
+# FIXME: get workers from db or file |
32 |
+LocalWorkers = [] |
33 |
+LocalWorkers.append('updatedb_1') |
34 |
+LocalWorkers.append('updatedb_2') |
35 |
+LocalWorkers.append('updatedb_3') |
36 |
+LocalWorkers.append('updatedb_4') |
37 |
+ |
38 |
def gentoo_builders(b=[]): |
39 |
- # FIXME: get workers from db |
40 |
b.append(util.BuilderConfig( |
41 |
name='update_db_check', |
42 |
workername='updatedb_1', |
43 |
@@ -14,47 +20,44 @@ def gentoo_builders(b=[]): |
44 |
factory=buildfactorys.update_db_check() |
45 |
) |
46 |
) |
47 |
- # FIXME: get workers from db |
48 |
b.append(util.BuilderConfig( |
49 |
name='update_repo_check', |
50 |
- workername='updatedb_1', |
51 |
+ workername='updatedb_2', |
52 |
workerbuilddir='builds', |
53 |
collapseRequests=True, |
54 |
factory=buildfactorys.update_repo_check() |
55 |
) |
56 |
) |
57 |
- # FIXME: get workers from db |
58 |
- # Use multiplay workers depend on Property(cpv) |
59 |
+ # Use multiplay workers depend on Property(cp) |
60 |
# if cp do not match next one, use diffrent worker then |
61 |
# or first cp have done its buildsteps. |
62 |
+ # first LocalWorker need to be done before we can use mulitplay workers (git pull) |
63 |
b.append(util.BuilderConfig( |
64 |
name='update_cpv_data', |
65 |
- workername='updatedb_1', |
66 |
+ workernames=LocalWorkers, |
67 |
workerbuilddir='builds', |
68 |
collapseRequests=False, |
69 |
factory=buildfactorys.update_db_cp() |
70 |
) |
71 |
) |
72 |
- # FIXME: get workers from db |
73 |
# Use multiplay workers |
74 |
b.append(util.BuilderConfig( |
75 |
name='update_v_data', |
76 |
- workername='updatedb_1', |
77 |
+ workernames=LocalWorkers, |
78 |
workerbuilddir='builds', |
79 |
collapseRequests=False, |
80 |
factory=buildfactorys.update_db_v() |
81 |
) |
82 |
) |
83 |
- # FIXME: get workers from db |
84 |
# Use multiplay workers |
85 |
b.append(util.BuilderConfig( |
86 |
name='build_request_data', |
87 |
- workername='updatedb_1', |
88 |
+ workernames=LocalWorkers, |
89 |
collapseRequests=False, |
90 |
factory=buildfactorys.build_request_check() |
91 |
) |
92 |
) |
93 |
- # FIXME: get workers from db |
94 |
+ # FIXME: get workers from db or file |
95 |
# Use multiplay workers |
96 |
b.append(util.BuilderConfig( |
97 |
name='run_build_request', |
98 |
@@ -63,11 +66,10 @@ def gentoo_builders(b=[]): |
99 |
factory=buildfactorys.run_build_request() |
100 |
) |
101 |
) |
102 |
- # FIXME: get workers from db |
103 |
# Use multiplay workers |
104 |
b.append(util.BuilderConfig( |
105 |
name='parse_build_log', |
106 |
- workername='updatedb_1', |
107 |
+ workernames=LocalWorkers, |
108 |
collapseRequests=False, |
109 |
factory=buildfactorys.parse_build_log() |
110 |
) |
111 |
|
112 |
diff --git a/buildbot_gentoo_ci/config/buildfactorys.py b/buildbot_gentoo_ci/config/buildfactorys.py |
113 |
index 962eeb0..e08127b 100644 |
114 |
--- a/buildbot_gentoo_ci/config/buildfactorys.py |
115 |
+++ b/buildbot_gentoo_ci/config/buildfactorys.py |
116 |
@@ -21,14 +21,6 @@ def update_db_check(): |
117 |
f.addStep(update_db.GetDataGentooCiProject()) |
118 |
# update the repos |
119 |
f.addStep(update_db.TriggerUpdateRepositorys()) |
120 |
- # Check if needed path is there |
121 |
- f.addStep(portage.CheckPathLocal()) |
122 |
- # setup the profile |
123 |
- f.addStep(portage.SetMakeProfileLocal()) |
124 |
- # setup repos.conf dir |
125 |
- f.addStep(portage.SetReposConfLocal()) |
126 |
- # setup make.conf |
127 |
- f.addStep(portage.SetMakeConfLocal()) |
128 |
# Make a for loop and trigger new builders with cpv from git_changes |
129 |
# return cpv, repository, project_data |
130 |
f.addStep(update_db.TriggerCheckForCPV()) |
131 |
|
132 |
diff --git a/buildbot_gentoo_ci/config/schedulers.py b/buildbot_gentoo_ci/config/schedulers.py |
133 |
index 107bb3c..e520076 100644 |
134 |
--- a/buildbot_gentoo_ci/config/schedulers.py |
135 |
+++ b/buildbot_gentoo_ci/config/schedulers.py |
136 |
@@ -12,7 +12,7 @@ def builderUpdateDbNames(props): |
137 |
return list(builders) |
138 |
|
139 |
@util.renderer |
140 |
-def gitUpdateDb(props): |
141 |
+def getGitChanges(props): |
142 |
k = props.changes[0] |
143 |
change_data = {} |
144 |
print(k) |
145 |
@@ -23,7 +23,6 @@ def gitUpdateDb(props): |
146 |
p = v.split('/')[1] |
147 |
pv = v.split('/')[2][:-7] |
148 |
cpv = c + '/' + pv |
149 |
- print(cpv) |
150 |
change_data['cp'] = c + '/' + p |
151 |
change_data['cpvs'].append(cpv) |
152 |
if k['repository'].endswith('.git'): |
153 |
@@ -35,16 +34,15 @@ def gitUpdateDb(props): |
154 |
change_data['comments'] = k['comments'] |
155 |
change_data['revision'] = k['revision'] |
156 |
change_data['timestamp'] =k['when_timestamp'] |
157 |
- print(change_data) |
158 |
return change_data |
159 |
|
160 |
def gentoo_schedulers(): |
161 |
scheduler_update_db = schedulers.SingleBranchScheduler( |
162 |
name='scheduler_update_db', |
163 |
treeStableTimer=0, |
164 |
- properties = { |
165 |
- 'git_change' : gitUpdateDb, |
166 |
- }, |
167 |
+ properties = dict( |
168 |
+ change_data = getGitChanges |
169 |
+ ), |
170 |
builderNames = builderUpdateDbNames, |
171 |
change_filter=util.ChangeFilter(branch='master'), |
172 |
) |
173 |
|
174 |
diff --git a/buildbot_gentoo_ci/config/workers.py b/buildbot_gentoo_ci/config/workers.py |
175 |
index a566b79..6141d89 100644 |
176 |
--- a/buildbot_gentoo_ci/config/workers.py |
177 |
+++ b/buildbot_gentoo_ci/config/workers.py |
178 |
@@ -6,5 +6,8 @@ from buildbot.plugins import worker |
179 |
def gentoo_workers(w=[]): |
180 |
# FIXME: Get workers from db |
181 |
w.append(worker.LocalWorker('updatedb_1')) |
182 |
+ w.append(worker.LocalWorker('updatedb_2')) |
183 |
+ w.append(worker.LocalWorker('updatedb_3')) |
184 |
+ w.append(worker.LocalWorker('updatedb_4')) |
185 |
w.append(worker.Worker('bot-test', 'test1234')) |
186 |
return w |
187 |
|
188 |
diff --git a/buildbot_gentoo_ci/steps/category.py b/buildbot_gentoo_ci/steps/category.py |
189 |
index 81061e6..946dc63 100644 |
190 |
--- a/buildbot_gentoo_ci/steps/category.py |
191 |
+++ b/buildbot_gentoo_ci/steps/category.py |
192 |
@@ -49,7 +49,7 @@ class CheckC(BuildStep): |
193 |
@defer.inlineCallbacks |
194 |
def run(self): |
195 |
self.gentooci = self.master.namedServices['services'].namedServices['gentooci'] |
196 |
- self.category = yield self.getProperty("cpv").split('/')[0] |
197 |
+ self.category = self.getProperty("change_data")['cp'].split('/')[0] |
198 |
print(self.category) |
199 |
self.category_data = yield self.gentooci.db.categorys.getCategoryByName(self.category) |
200 |
print(self.category_data) |
201 |
|
202 |
diff --git a/buildbot_gentoo_ci/steps/package.py b/buildbot_gentoo_ci/steps/package.py |
203 |
index b4e06b7..76c90cc 100644 |
204 |
--- a/buildbot_gentoo_ci/steps/package.py |
205 |
+++ b/buildbot_gentoo_ci/steps/package.py |
206 |
@@ -57,7 +57,7 @@ class CheckP(BuildStep): |
207 |
@defer.inlineCallbacks |
208 |
def run(self): |
209 |
self.gentooci = self.master.namedServices['services'].namedServices['gentooci'] |
210 |
- self.package = yield catpkgsplit(self.getProperty("cpv"))[1] |
211 |
+ self.package = self.getProperty("change_data")['cp'].split('/')[1] |
212 |
print(self.package) |
213 |
self.package_data = yield self.gentooci.db.packages.getPackageByName(self.package, |
214 |
self.getProperty("category_data")['uuid'], |
215 |
@@ -86,20 +86,22 @@ class TriggerCheckForV(BuildStep): |
216 |
@defer.inlineCallbacks |
217 |
def run(self): |
218 |
addStepUpdateVData = [] |
219 |
- addStepUpdateVData.append( |
220 |
- steps.Trigger( |
221 |
- schedulerNames=['update_v_data'], |
222 |
- waitForFinish=False, |
223 |
- updateSourceStamp=False, |
224 |
- set_properties={ |
225 |
- 'cpv' : self.getProperty("cpv"), |
226 |
- 'package_data' : self.getProperty("package_data"), |
227 |
- 'repository_data' : self.getProperty("repository_data"), |
228 |
- 'category_data' : self.getProperty("category_data"), |
229 |
- 'revision_data' : self.getProperty("revision_data"), |
230 |
- 'project_data' : self.getProperty("project_data"), |
231 |
- } |
232 |
- ) |
233 |
+ for cpv in self.getProperty("change_data")['cpvs']: |
234 |
+ print(cpv) |
235 |
+ addStepUpdateVData.append( |
236 |
+ steps.Trigger( |
237 |
+ schedulerNames=['update_v_data'], |
238 |
+ waitForFinish=False, |
239 |
+ updateSourceStamp=False, |
240 |
+ set_properties={ |
241 |
+ 'cpv' : cpv, |
242 |
+ 'package_data' : self.getProperty("package_data"), |
243 |
+ 'repository_data' : self.getProperty("repository_data"), |
244 |
+ 'category_data' : self.getProperty("category_data"), |
245 |
+ 'change_data' : self.getProperty("change_data"), |
246 |
+ 'project_data' : self.getProperty("project_data"), |
247 |
+ } |
248 |
) |
249 |
+ ) |
250 |
yield self.build.addStepsAfterCurrentStep(addStepUpdateVData) |
251 |
return SUCCESS |
252 |
|
253 |
diff --git a/buildbot_gentoo_ci/steps/portage.py b/buildbot_gentoo_ci/steps/portage.py |
254 |
index c7e82ce..37f7342 100644 |
255 |
--- a/buildbot_gentoo_ci/steps/portage.py |
256 |
+++ b/buildbot_gentoo_ci/steps/portage.py |
257 |
@@ -407,11 +407,12 @@ class SetMakeProfileLocal(BuildStep): |
258 |
if os.path.isfile(parent_path): |
259 |
return SKIPPED |
260 |
self.gentooci = self.master.namedServices['services'].namedServices['gentooci'] |
261 |
+ self.profile_repository_data = yield self.gentooci.db.repositorys.getRepositoryByUuid(self.getProperty('project_data')['profile_repository_uuid']) |
262 |
self.repository_basedir = self.gentooci.config.project['repository_basedir'] |
263 |
makeprofiles_paths = [] |
264 |
makeprofiles_data = yield self.gentooci.db.projects.getAllProjectPortageByUuidAndDirectory(self.getProperty('project_data')['uuid'], 'make.profile') |
265 |
for makeprofile in makeprofiles_data: |
266 |
- makeprofile_path = yield os.path.join(self.repository_basedir, self.getProperty("profile_repository_data")['name'], 'profiles', makeprofile['value'], '') |
267 |
+ makeprofile_path = yield os.path.join(self.repository_basedir, self.profile_repository_data['name'], 'profiles', makeprofile['value'], '') |
268 |
makeprofiles_paths.append('../../../' + makeprofile_path) |
269 |
yield WriteTextToFile(parent_path, makeprofiles_paths) |
270 |
return SUCCESS |
271 |
|
272 |
diff --git a/buildbot_gentoo_ci/steps/update_db.py b/buildbot_gentoo_ci/steps/update_db.py |
273 |
index b19d0e7..8e7f8ee 100644 |
274 |
--- a/buildbot_gentoo_ci/steps/update_db.py |
275 |
+++ b/buildbot_gentoo_ci/steps/update_db.py |
276 |
@@ -25,11 +25,13 @@ class GetDataGentooCiProject(BuildStep): |
277 |
return FAILURE |
278 |
self.profile_repository_data = yield self.gentooci.db.repositorys.getRepositoryByUuid(self.project_data['profile_repository_uuid']) |
279 |
if self.profile_repository_data is None: |
280 |
- log.err('No data for repository in the database') |
281 |
+ log.err('No data for profile repository in the database') |
282 |
+ return FAILURE |
283 |
+ if not isinstance(self.getProperty("change_data"), dict): |
284 |
return FAILURE |
285 |
print(self.project_data) |
286 |
print(self.profile_repository_data) |
287 |
- print(self.getProperty("git_change")) |
288 |
+ print(self.getProperty("change_data")) |
289 |
print(self.getProperty("repository")) |
290 |
repository = False |
291 |
self.repository_data = False |
292 |
@@ -39,6 +41,9 @@ class GetDataGentooCiProject(BuildStep): |
293 |
repository = v[:-4] |
294 |
if repository: |
295 |
self.repository_data = yield self.gentooci.db.repositorys.getRepositoryByName(repository) |
296 |
+ if self.getProperty("change_data")['repository'] != self.repository_data['name']: |
297 |
+ log.msg("%s don't match" % self.getProperty("change_data")['repository']) |
298 |
+ return FAILURE |
299 |
self.setProperty("project_data", self.project_data, 'project_data') |
300 |
self.setProperty("profile_repository_data", self.profile_repository_data, 'profile_repository_data') |
301 |
self.setProperty("repository_data", self.repository_data, 'repository_data') |
302 |
@@ -65,7 +70,7 @@ class TriggerUpdateRepositorys(BuildStep): |
303 |
set_properties={ |
304 |
'profile_repository_uuid' : self.getProperty("profile_repository_data")['uuid'], |
305 |
'repository_uuid' : self.getProperty("repository_data")['uuid'], |
306 |
- 'commit_time' : self.getProperty("git_change")['timestamp'], |
307 |
+ 'commit_time' : self.getProperty("change_data")['timestamp'], |
308 |
} |
309 |
) |
310 |
]) |
311 |
@@ -84,43 +89,16 @@ class TriggerCheckForCPV(BuildStep): |
312 |
|
313 |
@defer.inlineCallbacks |
314 |
def run(self): |
315 |
- change_data = self.getProperty("git_change") |
316 |
- # check if git_change is a dict |
317 |
- if not isinstance(change_data, dict): |
318 |
- return FAILURE |
319 |
- addStepUpdateCPVData = [] |
320 |
- # make a trigger for all cpv in the list |
321 |
- for cpv in change_data['cpvs']: |
322 |
- self.success = True |
323 |
- if change_data['repository'] != self.getProperty("repository_data")['name']: |
324 |
- log.msg("%s don't match" % change_data['repository']) |
325 |
- self.success = False |
326 |
- # Trigger cpv builds and update db if we are working with ebuilds |
327 |
- # check that cpv is valied |
328 |
- if catpkgsplit(cpv) is None: |
329 |
- log.msg("%s is not vaild package name" % cpv) |
330 |
- self.success = False |
331 |
- if self.success: |
332 |
- revision_data = {} |
333 |
- revision_data['author'] = change_data['author'] |
334 |
- revision_data['committer'] = change_data['committer'] |
335 |
- revision_data['comments'] = change_data['comments'] |
336 |
- revision_data['revision'] = change_data['revision'] |
337 |
- addStepUpdateCPVData.append( |
338 |
- steps.Trigger( |
339 |
- schedulerNames=['update_cpv_data'], |
340 |
- waitForFinish=False, |
341 |
- updateSourceStamp=False, |
342 |
- set_properties={ |
343 |
- 'cpv' : cpv, |
344 |
- 'project_data' : self.getProperty("project_data"), |
345 |
- 'repository_data' : self.getProperty("repository_data"), |
346 |
- 'revision_data' : revision_data, |
347 |
- } |
348 |
- ) |
349 |
- ) |
350 |
- print(addStepUpdateCPVData) |
351 |
- yield self.build.addStepsAfterCurrentStep(addStepUpdateCPVData) |
352 |
- if self.success is False: |
353 |
- return FAILURE |
354 |
+ yield self.build.addStepsAfterCurrentStep([ |
355 |
+ steps.Trigger( |
356 |
+ schedulerNames=['update_cpv_data'], |
357 |
+ waitForFinish=False, |
358 |
+ updateSourceStamp=False, |
359 |
+ set_properties={ |
360 |
+ 'project_data' : self.getProperty("project_data"), |
361 |
+ 'repository_data' : self.getProperty("repository_data"), |
362 |
+ 'change_data' : self.getProperty("change_data"), |
363 |
+ } |
364 |
+ ) |
365 |
+ ]) |
366 |
return SUCCESS |
367 |
|
368 |
diff --git a/buildbot_gentoo_ci/steps/version.py b/buildbot_gentoo_ci/steps/version.py |
369 |
index e6a927a..df97536 100644 |
370 |
--- a/buildbot_gentoo_ci/steps/version.py |
371 |
+++ b/buildbot_gentoo_ci/steps/version.py |
372 |
@@ -15,6 +15,7 @@ from twisted.python import log |
373 |
from buildbot.process.buildstep import BuildStep |
374 |
from buildbot.process.results import SUCCESS |
375 |
from buildbot.process.results import FAILURE |
376 |
+from buildbot.process.results import WARNINGS |
377 |
from buildbot.plugins import steps |
378 |
|
379 |
from buildbot_gentoo_ci.steps import portage as portage_steps |
380 |
@@ -36,6 +37,7 @@ class GetVData(BuildStep): |
381 |
# set cwd to builddir |
382 |
yield os.chdir(self.getProperty("builddir")) |
383 |
self.gentooci = self.master.namedServices['services'].namedServices['gentooci'] |
384 |
+ print(self.getProperty("cpv")) |
385 |
self.version = yield cpv_getversion(self.getProperty("cpv")) |
386 |
print(self.version) |
387 |
self.old_version_data = yield self.gentooci.db.versions.getVersionByName(self.version, self.getProperty("package_data")['uuid']) |
388 |
@@ -90,8 +92,8 @@ class GetCommitdata(BuildStep): |
389 |
|
390 |
#@defer.inlineCallbacks |
391 |
def run(self): |
392 |
- print(self.getProperty("revision_data")) |
393 |
- self.setProperty('commit_id', self.getProperty("revision_data")['revision'], 'commit_id') |
394 |
+ print(self.getProperty("change_data")) |
395 |
+ self.setProperty('commit_id', self.getProperty("change_data")['revision'], 'commit_id') |
396 |
return SUCCESS |
397 |
|
398 |
class AddVersionKeyword(BuildStep): |
399 |
@@ -243,32 +245,30 @@ class CheckV(BuildStep): |
400 |
|
401 |
@defer.inlineCallbacks |
402 |
def run(self): |
403 |
- self.gentooci = self.master.namedServices['services'].namedServices['gentooci'] |
404 |
- self.old_version_data = self.getProperty("old_version_data") |
405 |
- self.ebuild_file = self.getProperty("ebuild_file") |
406 |
addStepVData = [] |
407 |
- print(self.ebuild_file) |
408 |
- print(self.old_version_data) |
409 |
+ print(self.getProperty("ebuild_file")) |
410 |
+ print(self.getProperty("old_version_data")) |
411 |
print(self.getProperty("ebuild_file_hash")) |
412 |
- if self.getProperty("ebuild_file") is None and self.getProperty("old_version_data") is not None: |
413 |
- addStepVData.append(TriggerBuildCheck()) |
414 |
- addStepVData.append(DeleteOldVersion()) |
415 |
- if self.getProperty("ebuild_file") is not None and self.getProperty("old_version_data") is not None: |
416 |
- if self.getProperty("ebuild_file_hash") != self.getProperty("old_version_data")['file_hash']: |
417 |
- addStepVData.append(GetCommitdata()) |
418 |
- #FIXME: use GetAuxMetadata insted of bugy SetEnvForEbuildSH |
419 |
- #addStepVData.append(portage_steps.SetEnvForEbuildSH()) |
420 |
- addStepVData.append(portage_steps.GetAuxMetadata()) |
421 |
- addStepVData.append(AddVersion()) |
422 |
- addStepVData.append(AddVersionKeyword()) |
423 |
+ if self.getProperty("ebuild_file") is None: |
424 |
+ if self.getProperty("old_version_data") is None: |
425 |
+ return WARNINGS |
426 |
+ else: |
427 |
addStepVData.append(TriggerBuildCheck()) |
428 |
addStepVData.append(DeleteOldVersion()) |
429 |
- else: |
430 |
- return SUCCESS |
431 |
- if self.getProperty("ebuild_file") is not None and self.getProperty("old_version_data") is None: |
432 |
+ else: |
433 |
+ if self.getProperty("old_version_data") is not None: |
434 |
+ if self.getProperty("ebuild_file_hash") == self.getProperty("old_version_data")['file_hash']: |
435 |
+ return WARNINGS |
436 |
+ else: |
437 |
+ addStepVData.append(DeleteOldVersion()) |
438 |
+ # setup /etc/portage |
439 |
+ addStepVData.append(portage_steps.CheckPathLocal()) |
440 |
+ addStepVData.append(portage_steps.SetMakeProfileLocal()) |
441 |
+ addStepVData.append(portage_steps.SetReposConfLocal()) |
442 |
+ addStepVData.append(portage_steps.SetMakeConfLocal()) |
443 |
+ # get commit data |
444 |
addStepVData.append(GetCommitdata()) |
445 |
- #FIXME: use GetAuxMetadata insted of bugy SetEnvForEbuildSH |
446 |
- #addStepVData.append(portage_steps.SetEnvForEbuildSH()) |
447 |
+ # get ebuild aux metadata |
448 |
addStepVData.append(portage_steps.GetAuxMetadata()) |
449 |
addStepVData.append(AddVersion()) |
450 |
addStepVData.append(AddVersionKeyword()) |