From: "Magnus Granberg" <zorry@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/tinderbox-cluster:master commit in: buildbot_gentoo_ci/steps/
Date: Sat, 20 Mar 2021 13:42:20 +0000 (UTC) [thread overview]
Message-ID: <1616247243.ee9e8401620340982d6e922ca982f50fee1ec6fa.zorry@gentoo> (raw)
commit: ee9e8401620340982d6e922ca982f50fee1ec6fa
Author: Magnus Granberg <zorry <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 20 13:34:03 2021 +0000
Commit: Magnus Granberg <zorry <AT> gentoo <DOT> org>
CommitDate: Sat Mar 20 13:34:03 2021 +0000
URL: https://gitweb.gentoo.org/proj/tinderbox-cluster.git/commit/?id=ee9e8401
Change GetCommitdata to use revision_data. Use SetEnvForEbuildSH to get auxdb data.
Signed-off-by: Magnus Granberg <zorry <AT> gentoo.org>
buildbot_gentoo_ci/steps/master.py | 235 ++++++++++++++++++++++++++++++++++++
buildbot_gentoo_ci/steps/portage.py | 130 +++++++++++++++++++-
buildbot_gentoo_ci/steps/version.py | 66 +++-------
3 files changed, 380 insertions(+), 51 deletions(-)
diff --git a/buildbot_gentoo_ci/steps/master.py b/buildbot_gentoo_ci/steps/master.py
new file mode 100644
index 0000000..dac3830
--- /dev/null
+++ b/buildbot_gentoo_ci/steps/master.py
@@ -0,0 +1,235 @@
+# This file has parts from Buildbot and is modifyed by Gentoo Authors.
+# Buildbot is free software: you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation, version 2.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 51
+# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Copyright Buildbot Team Members
+# Origins: buildbot.steps.master.py
+# buildbot.steps.shell.py
+# Modifyed by Gentoo Authors.
+# Copyright 2021 Gentoo Authors
+
+import os
+import pprint
+import re
+
+from twisted.internet import defer
+from twisted.internet import error
+from twisted.internet import reactor
+from twisted.internet.protocol import ProcessProtocol
+from twisted.python import runtime
+from twisted.python.versions import Version
+
+from buildbot.process import buildstep
+from buildbot.process import logobserver
+from buildbot.process.results import FAILURE
+from buildbot.process.results import SUCCESS
+from buildbot.util import deferwaiter
+
+
+class MasterSetPropertyFromCommand(buildstep.ShellMixin, buildstep.BuildStep):
+
+ """
+ Run a shell command locally - on the buildmaster. The shell command
+ COMMAND is specified just as for a RemoteShellCommand. Note that extra
+ logfiles are not supported.
+ """
+ name = "Mastersetproperty"
+ description = 'Running'
+ descriptionDone = 'Ran'
+ descriptionSuffix = None
+ renderables = ['command', 'env', 'property']
+ haltOnFailure = True
+ flunkOnFailure = True
+
+ def __init__(self, command, property=None, extract_fn=None, strip=True,
+ includeStdout=True, includeStderr=False, **kwargs):
+ self.env = kwargs.pop('env', None)
+ self.usePTY = kwargs.pop('usePTY', 0)
+ self.interruptSignal = kwargs.pop('interruptSignal', 'KILL')
+ self.logEnviron = kwargs.pop('logEnviron', True)
+
+ self.property = property
+ self.extract_fn = extract_fn
+ self.strip = strip
+ self.includeStdout = includeStdout
+ self.includeStderr = includeStderr
+
+ if not ((property is not None) ^ (extract_fn is not None)):
+ config.error(
+ "Exactly one of property and extract_fn must be set")
+
+ super().__init__(**kwargs)
+
+ self.command = command
+ self.masterWorkdir = self.workdir
+ self._deferwaiter = deferwaiter.DeferWaiter()
+ self._status_object = None
+ self.success = True
+
+ if self.extract_fn:
+ self.includeStderr = True
+
+ self.observer = logobserver.BufferLogObserver(
+ wantStdout=self.includeStdout,
+ wantStderr=self.includeStderr)
+ self.addLogObserver('stdio', self.observer)
+
+ class LocalPP(ProcessProtocol):
+
+ def __init__(self, step):
+ self.step = step
+ self._finish_d = defer.Deferred()
+ self.step._deferwaiter.add(self._finish_d)
+
+ def outReceived(self, data):
+ self.step._deferwaiter.add(self.step.stdio_log.addStdout(data))
+
+ def errReceived(self, data):
+ self.step._deferwaiter.add(self.step.stdio_log.addStderr(data))
+
+ def processEnded(self, status_object):
+ if status_object.value.exitCode is not None:
+ msg = "exit status {}\n".format(status_object.value.exitCode)
+ self.step._deferwaiter.add(self.step.stdio_log.addHeader(msg))
+
+ if status_object.value.signal is not None:
+ msg = "signal {}\n".format(status_object.value.signal)
+ self.step._deferwaiter.add(self.step.stdio_log.addHeader(msg))
+
+ self.step._status_object = status_object
+ self._finish_d.callback(None)
+
+ @defer.inlineCallbacks
+ def run(self):
+ # render properties
+ command = self.command
+ # set up argv
+ if isinstance(command, (str, bytes)):
+ if runtime.platformType == 'win32':
+ # allow %COMSPEC% to have args
+ argv = os.environ['COMSPEC'].split()
+ if '/c' not in argv:
+ argv += ['/c']
+ argv += [command]
+ else:
+ # for posix, use /bin/sh. for other non-posix, well, doesn't
+ # hurt to try
+ argv = ['/bin/sh', '-c', command]
+ else:
+ if runtime.platformType == 'win32':
+ # allow %COMSPEC% to have args
+ argv = os.environ['COMSPEC'].split()
+ if '/c' not in argv:
+ argv += ['/c']
+ argv += list(command)
+ else:
+ argv = command
+
+ self.stdio_log = yield self.addLog("stdio")
+
+ if isinstance(command, (str, bytes)):
+ yield self.stdio_log.addHeader(command.strip() + "\n\n")
+ else:
+ yield self.stdio_log.addHeader(" ".join(command) + "\n\n")
+ yield self.stdio_log.addHeader("** RUNNING ON BUILDMASTER **\n")
+ yield self.stdio_log.addHeader(" in dir {}\n".format(os.getcwd()))
+ yield self.stdio_log.addHeader(" argv: {}\n".format(argv))
+
+ if self.env is None:
+ env = os.environ
+ else:
+ assert isinstance(self.env, dict)
+ env = self.env
+ for key, v in self.env.items():
+ if isinstance(v, list):
+ # Need to do os.pathsep translation. We could either do that
+ # by replacing all incoming ':'s with os.pathsep, or by
+ # accepting lists. I like lists better.
+ # If it's not a string, treat it as a sequence to be
+ # turned in to a string.
+ self.env[key] = os.pathsep.join(self.env[key])
+
+ # do substitution on variable values matching pattern: ${name}
+ p = re.compile(r'\${([0-9a-zA-Z_]*)}')
+
+ def subst(match):
+ return os.environ.get(match.group(1), "")
+ newenv = {}
+ for key, v in env.items():
+ if v is not None:
+ if not isinstance(v, (str, bytes)):
+ raise RuntimeError(("'env' values must be strings or "
+ "lists; key '{}' is incorrect").format(key))
+ newenv[key] = p.sub(subst, env[key])
+ env = newenv
+
+ if self.logEnviron:
+ yield self.stdio_log.addHeader(" env: %r\n" % (env,))
+
+ # TODO add a timeout?
+ self.process = reactor.spawnProcess(self.LocalPP(self), argv[0], argv,
+ path=self.masterWorkdir, usePTY=self.usePTY, env=env)
+
+ # self._deferwaiter will yield only after LocalPP finishes
+
+ yield self._deferwaiter.wait()
+ status_value = self._status_object.value
+ if status_value.signal is not None:
+ self.descriptionDone = ["killed ({})".format(status_value.signal)]
+ self.success = False
+ elif status_value.exitCode != 0:
+ self.descriptionDone = ["failed ({})".format(status_value.exitCode)]
+ self.success = False
+
+
+ yield self.stdio_log.finish()
+
+ property_changes = {}
+
+ if self.property:
+ if not self.success:
+ return FAILURE
+ result = self.observer.getStdout()
+ if self.strip:
+ result = result.strip()
+ propname = self.property
+ self.setProperty(propname, result, "MastertSetPropertyFromCommand Step")
+ property_changes[propname] = result
+ else:
+ new_props = self.extract_fn(self._status_object.value.exitCode,
+ self.observer.getStdout(),
+ self.observer.getStderr())
+ for k, v in new_props.items():
+ self.setProperty(k, v, "MasterSetPropertyFromCommand Step")
+ property_changes = new_props
+
+ props_set = ["{}: {}".format(k, repr(v))
+ for k, v in sorted(property_changes.items())]
+ yield self.addCompleteLog('property changes', "\n".join(props_set))
+
+ if len(property_changes) > 1:
+ self.descriptionDone = '{} properties set'.format(len(property_changes))
+ elif len(property_changes) == 1:
+ self.descriptionDone = 'property \'{}\' set'.format(list(property_changes)[0])
+ if not self.success:
+ return FAILURE
+ return SUCCESS
+
+ def interrupt(self, reason):
+ try:
+ self.process.signalProcess(self.interruptSignal)
+ except KeyError: # Process not started yet
+ pass
+ except error.ProcessExitedAlready:
+ pass
+ super().interrupt(reason)
diff --git a/buildbot_gentoo_ci/steps/portage.py b/buildbot_gentoo_ci/steps/portage.py
index 4fbe141..6d8388a 100644
--- a/buildbot_gentoo_ci/steps/portage.py
+++ b/buildbot_gentoo_ci/steps/portage.py
@@ -2,6 +2,14 @@
# Distributed under the terms of the GNU General Public License v2
import os
+import io
+
+from portage import config as portage_config
+from portage import auxdbkeys
+from portage import _encodings
+from portage import _unicode_encode
+from portage import _parse_eapi_ebuild_head, eapi_is_supported
+from portage.versions import cpv_getversion, pkgsplit, catpkgsplit
from twisted.internet import defer
from twisted.python import log
@@ -11,6 +19,8 @@ from buildbot.process.results import SUCCESS
from buildbot.process.results import FAILURE
from buildbot.plugins import steps
+from buildbot_gentoo_ci.steps import master as master_steps
+
@defer.inlineCallbacks
def WriteTextToFile(path, text_list):
separator = '\n'
@@ -20,6 +30,33 @@ def WriteTextToFile(path, text_list):
yield f.write(separator)
yield f.close
+def PersOutputOfEbuildSH(rc, stdout, stderr):
+ metadata = None
+ metadata_lines = stdout.splitlines()
+ metadata_valid = True
+ NoSplit = []
+ NoSplit.append('DESCRIPTION')
+ if len(auxdbkeys) != len(metadata_lines):
+ # Don't trust bash's returncode if the
+ # number of lines is incorrect.
+ return {
+ 'auxdb' : metadata
+ }
+ else:
+ metadata_tmp = dict(zip(auxdbkeys, metadata_lines))
+ metadata = {}
+ for k, v in metadata_tmp.items():
+ if v == '':
+ metadata[k] = None
+ else:
+ if ' ' in v and k not in NoSplit:
+ metadata[k] = v.split(' ')
+ else:
+ metadata[k] = v
+ return {
+ 'auxdb' : metadata
+ }
+
class SetMakeProfile(BuildStep):
name = 'SetMakeProfile'
@@ -316,7 +353,7 @@ class SetMakeProfileLocal(BuildStep):
@defer.inlineCallbacks
def run(self):
- parent_path = yield os.path.join('portage', 'make.profile', 'parent')
+ parent_path = yield os.path.join('etc','portage', 'make.profile', 'parent')
if os.path.isfile(parent_path):
return SUCCESS
self.gentooci = self.master.namedServices['services'].namedServices['gentooci']
@@ -325,7 +362,7 @@ class SetMakeProfileLocal(BuildStep):
makeprofiles_data = yield self.gentooci.db.projects.getAllProjectPortageByUuidAndDirectory(self.getProperty('project_data')['uuid'], 'make.profile')
for makeprofile in makeprofiles_data:
makeprofile_path = yield os.path.join(self.repository_basedir, self.getProperty("profile_repository_data")['name'], 'profiles', makeprofile['value'], '')
- makeprofiles_paths.append('../../' + makeprofile_path)
+ makeprofiles_paths.append('../../../' + makeprofile_path)
yield WriteTextToFile(parent_path, makeprofiles_paths)
return SUCCESS
@@ -343,7 +380,7 @@ class SetReposConfLocal(BuildStep):
@defer.inlineCallbacks
def run(self):
- repos_conf_path = yield os.path.join('portage', 'repos.conf')
+ repos_conf_path = yield os.path.join('etc', 'portage', 'repos.conf')
repos_conf_default_path = yield os.path.join(repos_conf_path, 'default.conf')
self.gentooci = self.master.namedServices['services'].namedServices['gentooci']
self.repository_basedir = self.gentooci.config.project['repository_basedir']
@@ -360,7 +397,7 @@ class SetReposConfLocal(BuildStep):
yield WriteTextToFile(repos_conf_default_path, default_conf)
repos_conf_repository_path = yield os.path.join(repos_conf_path, self.getProperty("repository_data")['name'] + '.conf')
if not os.path.isfile(repos_conf_repository_path):
- repository_path = yield os.path.join(self.repository_basedir, self.getProperty("repository_data")['name'])
+ repository_path = yield os.path.join(self.getProperty("builddir"), self.repository_basedir, self.getProperty("repository_data")['name'])
repository_conf = []
repository_conf.append('[' + self.getProperty("repository_data")['name'] + ']')
repository_conf.append('location = ' + repository_path)
@@ -384,7 +421,7 @@ class SetMakeConfLocal(BuildStep):
@defer.inlineCallbacks
def run(self):
- make_conf_path = yield os.path.join('portage', 'make.conf')
+ make_conf_path = yield os.path.join('etc', 'portage', 'make.conf')
if os.path.isfile(make_conf_path):
return SUCCESS
makeconf_list = []
@@ -398,3 +435,86 @@ class SetMakeConfLocal(BuildStep):
makeconf_list.append('FEATURES=""')
yield WriteTextToFile(make_conf_path, makeconf_list)
return SUCCESS
+
+class SetEnvForEbuildSH(BuildStep):
+
+ name = 'SetEnvForEbuildSH'
+ description = 'Running'
+ descriptionDone = 'Ran'
+ descriptionSuffix = None
+ haltOnFailure = True
+ flunkOnFailure = True
+
+ def __init__(self, **kwargs):
+ super().__init__(**kwargs)
+
+ def getEapiFromFile(self):
+ with io.open(_unicode_encode(self.getProperty("ebuild_file"),
+ encoding=_encodings['fs'], errors='strict'),
+ mode='r', encoding=_encodings['repo.content'],
+ errors='replace') as f:
+ _eapi, _eapi_lineno = _parse_eapi_ebuild_head(f)
+
+ return _eapi
+
+ @defer.inlineCallbacks
+ def run(self):
+ addStepEbuildSH = []
+ ebuild_commands = []
+ ebuild_env = {}
+ config_root = yield os.path.join(self.getProperty("builddir"), '')
+ mysettings = yield portage_config(config_root = config_root)
+
+ #Get EAPI from file and add it to env
+ eapi = yield self.getEapiFromFile()
+ print(eapi)
+ if eapi is None or not eapi_is_supported(eapi):
+ print('invalid eapi')
+ eapi = '0'
+ print(eapi_is_supported(eapi))
+ ebuild_env['EAPI'] = eapi
+
+ #FIXME: check manifest on ebuild_file
+
+ #Setup ENV
+ category = yield catpkgsplit(self.getProperty("cpv"))[0]
+ package = yield catpkgsplit(self.getProperty("cpv"))[1]
+ version = yield catpkgsplit(self.getProperty("cpv"))[2]
+ revision = yield catpkgsplit(self.getProperty("cpv"))[3]
+ portage_bin_path = mysettings["PORTAGE_BIN_PATH"]
+ ebuild_sh_path = yield os.path.join(portage_bin_path, 'ebuild.sh')
+ #ebuild_env['PORTAGE_DEBUG'] = '1'
+ ebuild_env['EBUILD_PHASE'] = 'depend'
+ ebuild_env['CATEGORY'] = category
+ ebuild_env['P'] = package + '-' + version
+ ebuild_env['PN'] = package
+ ebuild_env['PR'] = revision
+ ebuild_env['PV'] = version
+ if revision == 'r0':
+ ebuild_env['PF'] = ebuild_env['P']
+ ebuild_env['PVR'] = version
+ else:
+ ebuild_env['PF'] = ebuild_env['P'] + '-' + revision
+ ebuild_env['PVR'] = version + '-' + revision
+ ebuild_env['PORTAGE_BIN_PATH'] = portage_bin_path
+ ebuild_env['EBUILD'] = self.getProperty("ebuild_file")
+ ebuild_env['PORTAGE_PIPE_FD'] = '1'
+ ebuild_env['WORKDIR'] = yield os.path.join(mysettings["PORTAGE_TMPDIR"], 'portage', category, ebuild_env['PF'], 'work')
+ ebuild_env['PORTAGE_ECLASS_LOCATIONS'] = self.getProperty("repository_path")
+
+ #FIXME: use sandbox if in FEATURES
+ ebuild_commands.append(ebuild_sh_path)
+ ebuild_commands.append('depend')
+
+ addStepEbuildSH.append(master_steps.MasterSetPropertyFromCommand(
+ name = 'RunEbuildSH',
+ haltOnFailure = True,
+ flunkOnFailure = True,
+ command=ebuild_commands,
+ env=ebuild_env,
+ workdir=self.getProperty("builddir"),
+ strip=True,
+ extract_fn=PersOutputOfEbuildSH
+ ))
+ yield self.build.addStepsAfterCurrentStep(addStepEbuildSH)
+ return SUCCESS
diff --git a/buildbot_gentoo_ci/steps/version.py b/buildbot_gentoo_ci/steps/version.py
index d47a253..143a758 100644
--- a/buildbot_gentoo_ci/steps/version.py
+++ b/buildbot_gentoo_ci/steps/version.py
@@ -7,10 +7,7 @@ import git
from portage.xml.metadata import MetaDataXML
from portage.checksum import perform_checksum
-from portage.versions import cpv_getversion, pkgsplit
-from portage import auxdbkeys
-from portage import config as portage_config
-from portage import portdbapi
+from portage.versions import cpv_getversion, pkgsplit, catpkgsplit
from twisted.internet import defer
from twisted.python import log
@@ -20,6 +17,8 @@ from buildbot.process.results import SUCCESS
from buildbot.process.results import FAILURE
from buildbot.plugins import steps
+from buildbot_gentoo_ci.steps import portage as portage_steps
+
class GetVData(BuildStep):
name = 'GetVData'
@@ -34,6 +33,8 @@ class GetVData(BuildStep):
@defer.inlineCallbacks
def run(self):
+ # set cwd to builddir
+ yield os.chdir(self.getProperty("builddir"))
self.gentooci = self.master.namedServices['services'].namedServices['gentooci']
self.version = yield cpv_getversion(self.getProperty("cpv"))
print(self.version)
@@ -73,33 +74,7 @@ class AddVersion(BuildStep):
self.setProperty("version_data", self.version_data, 'version_data')
return SUCCESS
-class GetAuxMetadata(BuildStep):
-
- name = 'GetAuxMetadata'
- description = 'Running'
- descriptionDone = 'Ran'
- descriptionSuffix = None
- haltOnFailure = True
- flunkOnFailure = True
- def __init__(self, **kwargs):
- super().__init__(**kwargs)
-
- @defer.inlineCallbacks
- def run(self):
- self.mysettings = yield portage_config(config_root = self.getProperty("config_root"))
- self.myportdb = yield portdbapi(mysettings=self.mysettings)
- try:
- auxdb_list = yield self.myportdb.aux_get(self.getProperty("cpv"), auxdbkeys, myrepo=self.getProperty("repository_data")['name'])
- except:
- print("Failed to get aux data for %s" % self.getProperty("cpv"))
- yield self.myportdb.close_caches()
- yield portdbapi.portdbapi_instances.remove(self.myportdb)
- return FAILURE
- self.setProperty('aux_metadata', auxdb_list, 'aux_metadata')
- yield self.myportdb.close_caches()
- yield portdbapi.portdbapi_instances.remove(self.myportdb)
- return SUCCESS
class GetCommitdata(BuildStep):
@@ -113,19 +88,10 @@ class GetCommitdata(BuildStep):
def __init__(self, **kwargs):
super().__init__(**kwargs)
- @defer.inlineCallbacks
+ #@defer.inlineCallbacks
def run(self):
- #FIXME: Could be a better way to get the log
- git_log_ebuild = ''
- g = git.Git(self.getProperty("repository_path"))
- index = 1
- git_log_dict = {}
- git_log = yield g.log('-n 1', self.getProperty("ebuild_file"))
- print(git_log)
- for line in git_log.splitlines():
- git_log_dict[index] = line
- index = index + 1
- self.setProperty('commit_id', re.sub('commit ', '', git_log_dict[1]), 'commit_id')
+ print(self.getProperty("revision_data"))
+ self.setProperty('commit_id', self.getProperty("revision_data")['revision'], 'commit_id')
return SUCCESS
class AddVersionKeyword(BuildStep):
@@ -158,7 +124,10 @@ class AddVersionKeyword(BuildStep):
def run(self):
self.gentooci = self.master.namedServices['services'].namedServices['gentooci']
self.version_keyword_dict = {}
- for keyword in self.getProperty("aux_metadata")[8].split():
+ auxdb = self.getProperty("auxdb")['KEYWORDS']
+ if auxdb is None:
+ auxdb = []
+ for keyword in auxdb:
status = 'stable'
if keyword[0] in ["~"]:
keyword = keyword[1:]
@@ -178,6 +147,8 @@ class AddVersionKeyword(BuildStep):
version_keyword_data['keyword_id'],
version_keyword_data['status'])
self.version_keyword_dict[keyword] = version_keyword_data
+ if self.version_keyword_dict == {}:
+ self.version_keyword_dict = None
self.setProperty('version_keyword_dict', self.version_keyword_dict, 'version_keyword_dict')
return SUCCESS
@@ -197,7 +168,7 @@ class CheckPathHash(BuildStep):
def run(self):
self.gentooci = self.master.namedServices['services'].namedServices['gentooci']
self.repository_basedir = self.gentooci.config.project['repository_basedir']
- self.repository_path = yield os.path.join(self.repository_basedir, self.getProperty("repository_data")['name'] + '.git')
+ self.repository_path = yield os.path.join(self.repository_basedir, self.getProperty("repository_data")['name'])
self.cp_path = yield pkgsplit(self.getProperty("cpv"))[0]
self.file_name = yield self.getProperty("package_data")['name'] + '-' + self.getProperty("version") + '.ebuild'
self.ebuild_file = yield os.path.join(self.repository_path, self.cp_path, self.file_name)
@@ -274,14 +245,17 @@ class CheckV(BuildStep):
self.old_version_data = self.getProperty("old_version_data")
self.ebuild_file = self.getProperty("ebuild_file")
addStepVData = []
+ print(self.ebuild_file)
+ print(self.old_version_data)
+ print(self.getProperty("ebuild_file_hash"))
if self.getProperty("ebuild_file") is None and self.getProperty("old_version_data") is not None:
addStepVData.append(TriggerBuildCheck())
addStepVData.append(DeleteOldVersion())
if self.getProperty("ebuild_file") is not None and self.getProperty("old_version_data") is not None:
if self.getProperty("ebuild_file_hash") != self.getProperty("old_version_data")['file_hash']:
addStepVData.append(GetCommitdata())
+ addStepVData.append(portage_steps.SetEnvForEbuildSH())
addStepVData.append(AddVersion())
- addStepVData.append(GetAuxMetadata())
addStepVData.append(AddVersionKeyword())
addStepVData.append(TriggerBuildCheck())
addStepVData.append(DeleteOldVersion())
@@ -289,8 +263,8 @@ class CheckV(BuildStep):
return SUCCESS
if self.getProperty("ebuild_file") is not None and self.getProperty("old_version_data") is None:
addStepVData.append(GetCommitdata())
+ addStepVData.append(portage_steps.SetEnvForEbuildSH())
addStepVData.append(AddVersion())
- addStepVData.append(GetAuxMetadata())
addStepVData.append(AddVersionKeyword())
addStepVData.append(TriggerBuildCheck())
yield self.build.addStepsAfterCurrentStep(addStepVData)
next reply other threads:[~2021-03-20 13:42 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-20 13:42 Magnus Granberg [this message]
-- strict thread matches above, loose matches on Subject: below --
2024-10-16 20:50 [gentoo-commits] proj/tinderbox-cluster:master commit in: buildbot_gentoo_ci/steps/ Magnus Granberg
2024-03-31 19:40 Magnus Granberg
2024-03-31 19:40 Magnus Granberg
2024-03-23 14:13 Magnus Granberg
2024-03-21 16:56 Magnus Granberg
2024-03-19 17:19 Magnus Granberg
2024-03-17 20:40 Magnus Granberg
2024-03-16 8:49 Magnus Granberg
2024-02-05 18:54 Magnus Granberg
2024-02-04 11:32 Magnus Granberg
2024-02-04 9:49 Magnus Granberg
2024-02-03 10:02 Magnus Granberg
2023-07-26 9:23 Magnus Granberg
2023-06-10 10:08 Magnus Granberg
2023-06-05 8:09 Magnus Granberg
2023-06-05 8:09 Magnus Granberg
2023-05-08 20:19 Magnus Granberg
2023-03-10 22:36 Magnus Granberg
2023-03-10 22:36 Magnus Granberg
2023-03-10 1:47 Magnus Granberg
2023-02-28 21:41 Magnus Granberg
2023-02-28 21:41 Magnus Granberg
2022-09-25 11:46 Magnus Granberg
2022-08-10 21:51 Magnus Granberg
2022-08-05 18:32 Magnus Granberg
2022-07-30 22:40 Magnus Granberg
2022-07-27 11:02 Magnus Granberg
2022-07-27 11:02 Magnus Granberg
2022-07-27 11:02 Magnus Granberg
2022-07-27 11:02 Magnus Granberg
2022-07-26 11:54 Magnus Granberg
2022-07-13 20:01 Magnus Granberg
2022-07-08 21:54 Magnus Granberg
2022-07-06 18:44 Magnus Granberg
2022-07-04 17:44 Magnus Granberg
2022-06-28 23:26 Magnus Granberg
2022-06-01 0:19 Magnus Granberg
2022-04-22 12:34 Magnus Granberg
2022-01-28 10:09 Magnus Granberg
2022-01-24 8:41 Magnus Granberg
2022-01-24 0:42 Magnus Granberg
2022-01-22 20:50 Magnus Granberg
2022-01-18 20:20 Magnus Granberg
2022-01-18 19:38 Magnus Granberg
2022-01-18 19:16 Magnus Granberg
2022-01-08 17:25 Magnus Granberg
2021-11-01 2:22 Magnus Granberg
2021-10-23 22:26 Magnus Granberg
2021-10-23 22:24 Magnus Granberg
2021-10-06 1:35 Magnus Granberg
2021-10-02 20:52 Magnus Granberg
2021-09-28 22:16 Magnus Granberg
2021-09-22 0:04 Magnus Granberg
2021-09-21 1:29 Magnus Granberg
2021-09-20 23:28 Magnus Granberg
2021-09-07 0:46 Magnus Granberg
2021-07-17 8:14 Magnus Granberg
2021-05-18 8:55 Magnus Granberg
2021-04-26 20:26 Magnus Granberg
2021-04-20 7:05 Magnus Granberg
2021-04-13 19:03 Magnus Granberg
2021-04-02 22:12 Magnus Granberg
2021-04-02 22:12 Magnus Granberg
2021-04-02 22:12 Magnus Granberg
2021-04-02 22:12 Magnus Granberg
2021-03-29 0:34 Magnus Granberg
2021-03-29 0:34 Magnus Granberg
2021-03-20 13:42 Magnus Granberg
2021-03-20 13:42 Magnus Granberg
2021-02-28 18:48 Magnus Granberg
2021-02-24 21:27 Magnus Granberg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1616247243.ee9e8401620340982d6e922ca982f50fee1ec6fa.zorry@gentoo \
--to=zorry@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox