commit: 2fdb9d96df3c85cf79ed3189c3f71c18cf56f877
Author: Magnus Granberg <zorry <AT> gentoo <DOT> org>
AuthorDate: Thu Oct 28 14:51:08 2021 +0000
Commit: Magnus Granberg <zorry <AT> gentoo <DOT> org>
CommitDate: Thu Oct 28 14:51:08 2021 +0000
URL:
https://gitweb.gentoo.org/proj/tinderbox-cluster.git/commit/?id=2fdb9d96
Add support for use test
Signed-off-by: Magnus Granberg <zorry <AT> gentoo.org>
buildbot_gentoo_ci/db/model.py | 1 +
buildbot_gentoo_ci/db/projects.py | 3 ++-
buildbot_gentoo_ci/steps/portage.py | 33 +++++++++++++++++++++++++++++++--
buildbot_gentoo_ci/steps/version.py | 10 ----------
buildbot_gentoo_ci/utils/__init__.py | 0
buildbot_gentoo_ci/utils/use.py | 12 ++++++++++++
6 files changed, 46 insertions(+), 13 deletions(-)
diff --git a/buildbot_gentoo_ci/db/model.py b/buildbot_gentoo_ci/db/model.py
index 9e380c8..b4efcf2 100644
--- a/buildbot_gentoo_ci/db/model.py
+++ b/buildbot_gentoo_ci/db/model.py
@@ -132,6 +132,7 @@ class Model(base.DBConnectorComponent):
sa.Column('auto', sa.Boolean, default=False),
sa.Column('pkgcheck', sa.Enum('package','full','none'),
default='none'),
sa.Column('build', sa.Boolean, default=False),
+ sa.Column('test', sa.Boolean, default=False),
)
# projects etc/portage settings
diff --git a/buildbot_gentoo_ci/db/projects.py
b/buildbot_gentoo_ci/db/projects.py
index 48d4288..dc91ce1 100644
--- a/buildbot_gentoo_ci/db/projects.py
+++ b/buildbot_gentoo_ci/db/projects.py
@@ -238,7 +238,8 @@ class ProjectsConnectorComponent(base.DBConnectorComponent):
repository_uuid=row.repository_uuid,
auto=row.auto,
pkgcheck=pkgcheck,
- build=row.build
+ build=row.build,
+ test=row.test
)
def _row2dict_projects_workers(self, conn, row):
diff --git a/buildbot_gentoo_ci/steps/portage.py
b/buildbot_gentoo_ci/steps/portage.py
index dcbf599..408c1e9 100644
--- a/buildbot_gentoo_ci/steps/portage.py
+++ b/buildbot_gentoo_ci/steps/portage.py
@@ -22,6 +22,7 @@ from buildbot.process.results import SKIPPED
from buildbot.plugins import steps
from buildbot_gentoo_ci.steps import master as master_steps
+from buildbot_gentoo_ci.utils.use import getIUseValue
@defer.inlineCallbacks
def WriteTextToFile(path, text_list):
@@ -255,7 +256,9 @@ class SetPackageDefault(BuildStep):
separator1 = '\n'
separator2 = ' '
self.aftersteps_list = []
- #FIXME: accept_keywords, env
+ package_use_dir = False
+ package_env_dir = False
+ #FIXME: accept_keywords
# add the needed package.* settings from db
package_conf_use_list = []
package_settings = yield
self.gentooci.db.projects.getProjectPortagePackageByUuid(self.getProperty('project_data')['uuid'])
@@ -263,6 +266,7 @@ class SetPackageDefault(BuildStep):
if package_setting['directory'] == 'use':
package_conf_use_list.append(separator2.join(package_setting['package'],package_setting['value']))
if package_conf_use_list != []:
+ package_use_dir = True
package_conf_use_string = separator1.join(package_conf_use_list)
self.aftersteps_list.append(
steps.StringDownload(package_conf_use_string +
separator1,
@@ -270,9 +274,34 @@ class SetPackageDefault(BuildStep):
workdir='/etc/portage/package.use/'
)
)
- # create the dir
+ # for test we need to add env and use
+ #FIXME: check restrictions, test use mask and required use
+ if self.getProperty('projectrepository_data')['test']:
+ auxdb_iuses = yield
self.gentooci.db.versions.getMetadataByUuidAndMatadata(self.getProperty("version_data")['uuid'],
'iuse')
+ for auxdb_iuse in auxdb_iuses:
+ iuse, status = getIUseValue(auxdb_iuse)
+ if iuse == 'test':
+ package_use_dir = True
+ self.aftersteps_list.append(
+ steps.StringDownload(separator2.join('='+
self.getProperty("cpv"),'test') + separator1,
+ workerdest='test.conf',
+ workdir='/etc/portage/package.use/'
+ )
+ )
+ package_env_dir = True
+ self.aftersteps_list.append(
+ steps.StringDownload(separator2.join('='+
self.getProperty("cpv"),'test.conf') + separator1,
+ workerdest='test.conf',
+ workdir='/etc/portage/package.env/'
+ )
+ )
+ # add package.* dirs
+ if package_use_dir:
aftersteps_list.append(steps.MakeDirectory(dir='package.use',
workdir='/etc/portage/'))
+ if package_env_dir:
+ aftersteps_list.append(steps.MakeDirectory(dir='package.env',
+ workdir='/etc/portage/'))
yield self.build.addStepsAfterCurrentStep(self.aftersteps_list)
return SUCCESS
diff --git a/buildbot_gentoo_ci/steps/version.py
b/buildbot_gentoo_ci/steps/version.py
index bff1e57..2b0c1e1 100644
--- a/buildbot_gentoo_ci/steps/version.py
+++ b/buildbot_gentoo_ci/steps/version.py
@@ -21,16 +21,6 @@ from buildbot.plugins import steps
from buildbot_gentoo_ci.steps import portage as portage_steps
-def getIUseValue(auxdb_iuse):
- status = False
- if auxdb_iuse[0] in ['+']:
- status = True
- if auxdb_iuse[0] in ['+'] or auxdb_iuse[0] in ['-']:
- iuse = auxdb_iuse[1:]
- else:
- iuse = auxdb_iuse
- return iuse, status
-
class GetVData(BuildStep):
name = 'GetVData'
diff --git a/buildbot_gentoo_ci/utils/__init__.py
b/buildbot_gentoo_ci/utils/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/buildbot_gentoo_ci/utils/use.py b/buildbot_gentoo_ci/utils/use.py
new file mode 100644
index 0000000..b0adb1c
--- /dev/null
+++ b/buildbot_gentoo_ci/utils/use.py
@@ -0,0 +1,12 @@
+# Copyright 2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+def getIUseValue(auxdb_iuse):
+ status = False
+ if auxdb_iuse[0] in ['+']:
+ status = True
+ if auxdb_iuse[0] in ['+'] or auxdb_iuse[0] in ['-']:
+ iuse = auxdb_iuse[1:]
+ else:
+ iuse = auxdb_iuse
+ return iuse, status