aboutsummaryrefslogtreecommitdiff
blob: 9fc59e860a484ae3c274de3496bdfca7bbacb533 (plain)
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