aboutsummaryrefslogtreecommitdiff
blob: acafed80fbcd5b92f87c4be8d2d78e7d37e8ea3c (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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# Copyright 2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

from buildbot.plugins import steps as buildbot_steps
from buildbot.plugins import util

from buildbot_gentoo_ci.steps import update_db
from buildbot_gentoo_ci.steps import category
from buildbot_gentoo_ci.steps import package
from buildbot_gentoo_ci.steps import version
from buildbot_gentoo_ci.steps import builders
from buildbot_gentoo_ci.steps import portage

def update_db_check():
    f = util.BuildFactory()
    # FIXME: 1
    # Get base project data from db
    #   return project_repository, profile_repository,
    #       project
    f.addStep(update_db.GetDataGentooCiProject())
    # Check if base project repo is cloned
    # Check if profile repo is cloned
    # check if the profile link is there
    # check if the repository is cloned
    f.addStep(update_db.CheckPathGentooCiProject())
    # check if etc/portage has no error
    #   return config_root
    f.addStep(update_db.CheckProjectGentooCiProject())
    # Make a for loop and trigger new builders with cpv from cpv_changes
    #   return cpv, repository, project_data, config_root
    f.addStep(update_db.CheckCPVGentooCiProject())
    return f

def update_db_cp():
    f = util.BuildFactory()
    # FIXME: 2
    # if categorys in db
    #   return category_data
    #   add check category path step at end
    # else
    #   add category to db step
    #   return category_data
    f.addStep(category.CheckCGentooCiProject())
    # if package in db
    #   return package_data
    #   add check package path step at end
    # else
    #   add package to db step
    #   return package_data
    f.addStep(package.CheckPGentooCiProject())
    # Trigger new builders with v from cpv
    #   return package_data, cpv, repository_data, project_data, config_root
    f.addStep(package.TriggerCheckVGentooCiProject())
    return f

def update_db_v():
    f = util.BuildFactory()
    # FIXME: 3
    # if version in db
    #   return version_data
    f.addStep(version.GetVData())
    #   check path and hash
    f.addStep(version.CheckPathHash())
    #   if not path
    #       if not hash
    #           add deleted stage att end
    #           add version to db stage
    #           add version metadata to db
    #           add version to build check
    #   else
    #       add deleted stage att end
    #       add version to build check stage att end
    # else
    #   add version to db
    #   add version metadata to db
    #   add version to build check
    f.addStep(version.CheckV())
    return f

def build_request_check():
    f = util.BuildFactory()
    # FIXME: 4
    # get project_data
    # check what tests to do
    # triggger build request
    f.addStep(builders.GetProjectRepositoryData())
    return f

def run_build_request():
    f = util.BuildFactory()
    # FIXME: 5
    # Move the etc/portage stuff to is own file
    # set needed Propertys
    f.addStep(builders.SetupPropertys())
    # Clean and add new /etc/portage
    #NOTE: remove the symlink befor the dir
    f.addStep(buildbot_steps.ShellCommandNewStyle(
                        command=['rm', 'make.profile'],
                        workdir='/etc/portage/'
                        ))
    f.addStep(buildbot_steps.RemoveDirectory(dir="portage",
                                workdir='/etc/'))
    f.addStep(buildbot_steps.MakeDirectory(dir="portage",
                                workdir='/etc/'))
    # setup the profile
    #NOTE: pkgcheck do not support it as a dir
    #f.addStep(buildbot_steps.MakeDirectory(dir="make.profile",
    #                            workdir='/etc/portage/'))
    f.addStep(builders.SetMakeProfile())
    # setup repos.conf dir
    f.addStep(buildbot_steps.MakeDirectory(dir="repos.conf",
                                workdir='/etc/portage/'))
    f.addStep(builders.SetReposConf())
    # update the repositorys listed in project_repository
    f.addStep(builders.UpdateRepos())
    # setup make.conf
    f.addStep(builders.SetMakeConf())
    # setup env
    f.addStep(portage.SetEnvDefault())
    # setup package.*
    #f.addStep(portage.SetPackageDefault())
    # setup files in /etc if needed
    # run --regen if needed on repo
    # update packages before any tests
    # run pretend on packages update on worker
    f.addStep(builders.RunEmerge(step='pre-update'))
    #   look at the log to see if we need to do stuff
    #   run update package on worker
    f.addStep(builders.RunEmerge(step='update'))
    #   check log
    # run depclean if set
    #   depclean pretend
    f.addStep(builders.RunEmerge(step='pre-depclean'))
    #   look at the log to see if we need to do stuff
    #   depclean
    f.addStep(builders.RunEmerge(step='depclean'))
    # run @preserved-rebuild if needed
    f.addStep(builders.RunEmerge(step='preserved-libs'))
    #   check log
    #   depclean
    f.addStep(builders.RunEmerge(step='depclean'))
    #   check log
    # setup make.conf if build id has changes make.conf as dict from SetMakeConf
    # setup package.* env if build id has changes
    # setup pkgcheck.conf if needed
    #f.addStep(builders.SetPkgCheckConf())
    # run pkgcheck if wanted
    #   check log
    f.addStep(builders.RunPkgCheck())
    # check cpv match
    f.addStep(builders.RunEmerge(step='match'))
    # Add the needed steps for build
    f.addStep(builders.RunBuild())
    # clean up the worker
    f.addStep(builders.RunEmerge(step='pre-depclean'))
    #   look at the log to see if we need to do stuff
    #   run depclean and preserved-libs
    f.addStep(builders.RunEmerge(step='depclean'))
    f.addStep(builders.RunEmerge(step='preserved-libs'))
    f.addStep(builders.RunEmerge(step='depclean'))
    return f