1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
# Copyright 2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
import re
import os
from portage.xml.metadata import MetaDataXML
from portage.checksum import perform_checksum
from portage.versions import catpkgsplit
from twisted.internet import defer
from twisted.python import log
from buildbot.process.buildstep import BuildStep
from buildbot.process.results import SUCCESS
from buildbot.process.results import FAILURE
from buildbot.plugins import steps
class SetupPropertys(BuildStep):
name = 'Setup propertys for CPV check'
description = 'Running'
descriptionSuffix = None
haltOnFailure = True
flunkOnFailure = True
def __init__(self, **kwargs):
# set this in config
super().__init__(**kwargs)
#@defer.inlineCallbacks
def run(self):
self.gentooci = self.master.namedServices['services'].namedServices['gentooci']
if self.gentooci.config.project['worker_config']['basedir'] is None:
worker_basedir = self.getProperty('builddir').split('/builds')[0]
else:
worker_basedir = self.gentooci.config.project['worker_config']['basedir']
self.setProperty('worker_basedir', worker_basedir, 'worker_basedir')
self.setProperty('rootworkdir', False, 'rootworkdir')
portage_repos_path = os.path.join(worker_basedir, self.gentooci.config.project['worker_config']['repository_basedir'])
self.setProperty('portage_repos_path', portage_repos_path, 'portage_repos_path')
return SUCCESS
class AddPackage(BuildStep):
def __init__(self, **kwargs):
super().__init__(**kwargs)
name = 'AddPackage'
description = 'Running'
descriptionDone = 'Ran'
descriptionSuffix = None
haltOnFailure = True
flunkOnFailure = True
@defer.inlineCallbacks
def run(self):
self.gentooci = self.master.namedServices['services'].namedServices['gentooci']
self.package_data = {}
self.package_data['name'] = self.getProperty("package")
self.package_data['repository_uuid'] = self.getProperty("repository_data")['uuid']
self.package_data['category_uuid'] = self.getProperty("category_data")['uuid']
self.package_data['uuid'] = yield self.gentooci.db.packages.addPackage(
self.package_data['name'],
self.package_data['repository_uuid'],
self.package_data['category_uuid']
)
print(self.package_data)
self.setProperty("package_data", self.package_data, 'package_data')
return SUCCESS
class CheckP(BuildStep):
def __init__(self, **kwargs):
super().__init__(**kwargs)
name = 'CheckP'
description = 'Running'
descriptionDone = 'Ran'
descriptionSuffix = None
haltOnFailure = True
flunkOnFailure = True
@defer.inlineCallbacks
def run(self):
self.gentooci = self.master.namedServices['services'].namedServices['gentooci']
self.package = self.getProperty("change_data")['cp'].split('/')[1]
print(self.package)
self.package_data = yield self.gentooci.db.packages.getPackageByName(self.package,
self.getProperty("category_data")['uuid'],
self.getProperty("repository_data")['uuid'])
print(self.package_data)
if self.package_data is None:
self.setProperty("package", self.package, 'package')
yield self.build.addStepsAfterCurrentStep([AddPackage()])
#yield self.build.addStepsAfterLastStep([AddMetadataPackage()])
return SUCCESS
self.setProperty("package_data", self.package_data, 'package_data')
#yield self.build.addStepsAfterLastStep([CheckPathPackage()])
return SUCCESS
class TriggerCheckForV(BuildStep):
def __init__(self, **kwargs):
super().__init__(**kwargs)
name = 'TriggerCheckForV'
description = 'Running'
descriptionDone = 'Ran'
descriptionSuffix = None
haltOnFailure = True
flunkOnFailure = True
@defer.inlineCallbacks
def run(self):
addStepUpdateVData = []
for cpv in self.getProperty("change_data")['cpvs']:
print(cpv)
addStepUpdateVData.append(
steps.Trigger(
schedulerNames=['update_v_data'],
waitForFinish=False,
updateSourceStamp=False,
set_properties={
'cpv' : cpv,
'package_data' : self.getProperty("package_data"),
'repository_data' : self.getProperty("repository_data"),
'category_data' : self.getProperty("category_data"),
'change_data' : self.getProperty("change_data"),
'project_data' : self.getProperty("project_data"),
'cp_worker' : self.getProperty('workername'),
}
)
)
yield self.build.addStepsAfterCurrentStep(addStepUpdateVData)
return SUCCESS
|