builder.py - fix dist-tag srpm creation, add option to pre-install artifact in buildroot

This commit is contained in:
Lubos Kocman
2016-07-22 19:17:04 +02:00
parent 257c305514
commit b0c4fbb11c

View File

@@ -40,6 +40,7 @@ import datetime
import time import time
import random import random
import string import string
import kobo.rpmlib
import munch import munch
from OpenSSL.SSL import SysCallError from OpenSSL.SSL import SysCallError
@@ -123,9 +124,10 @@ class GenericBuilder:
raise NotImplementedError() raise NotImplementedError()
@abstractmethod @abstractmethod
def buildroot_add_artifacts(self, artifacts): def buildroot_add_artifacts(self, artifacts, install=False):
""" """
:param artifacts: list of artifacts to be available in buildroot :param artifacts: list of artifacts to be available in buildroot
:param install=False: pre-install artifact in buildroot (otherwise "make it available for install")
add artifacts into buildroot, can be used to override buildroot macros add artifacts into buildroot, can be used to override buildroot macros
""" """
raise NotImplementedError() raise NotImplementedError()
@@ -161,13 +163,14 @@ class Builder:
def retry(callback, **kwargs): def retry(callback, **kwargs):
attempt = 0 attempt = 0
log.debug("retry() calling %r(kwargs=%r)" % (callback, kwargs))
while True: while True:
try: try:
callback(**kwargs) callback(**kwargs)
break break
except SysCallError: except SysCallError:
attempt += 1 attempt += 1
log.debug("Retry(): attempt=%d retrying callback." % attempt) log.warn("retry(attempt=%d) calling %r(kwargs=%r)" % (attempt, callback, kwargs))
class KojiModuleBuilder(GenericBuilder): class KojiModuleBuilder(GenericBuilder):
""" Koji specific builder class """ """ Koji specific builder class """
@@ -259,9 +262,9 @@ It should NEVER be installed on any system as it will really mess up
%build %build
%install %install
mkdir -p %buildroot/%_rpmconfigdir/macro.d 2>/dev/null |: mkdir -p %buildroot/%_rpmconfigdir/macros.d 2>/dev/null |:
echo %%dist %dist > %buildroot/%_rpmconfigdir/macro.modules echo %%dist %dist > %buildroot/%_rpmconfigdir/macros.d/macro.modules
chmod 644 %buildroot/%_rpmconfigdir/macro.modules chmod 644 %buildroot/%_rpmconfigdir/macros.d/macro.modules
%files %files
@@ -370,11 +373,23 @@ chmod 644 %buildroot/%_rpmconfigdir/macro.modules
log.info("%r adding deps for %r" % (self, tags)) log.info("%r adding deps for %r" % (self, tags))
self._koji_add_many_tag_inheritance(self.module_build_tag, tags) self._koji_add_many_tag_inheritance(self.module_build_tag, tags)
def buildroot_add_artifacts(self, artifacts): def buildroot_add_artifacts(self, artifacts, install=False):
"""
:param artifacts - list of artifacts to add to buildroot
:param install=False - force install artifact (if it's not dragged in as dependency)
"""
# TODO: import /usr/bin/koji's TaskWatcher() # TODO: import /usr/bin/koji's TaskWatcher()
log.info("%r adding artifacts %r" % (self, artifacts)) log.info("%r adding artifacts %r" % (self, artifacts))
dest_tag = self._get_tag(self.module_build_tag)['id']
for nvr in artifacts: for nvr in artifacts:
self.koji_session.tagBuild(self._get_tag(self.module_build_tag)['id'], nvr, force=True) self.koji_session.tagBuild(dest_tag, nvr, force=True)
if install:
# we usually want just srpm-build
for group in ('srpm-build',):
pkg_info = kobo.rpmlib.parse_nvr(nvr)
log.info("%r adding %s to group %s" % (self, pkg_info['name'], group))
self.koji_session.groupPackageListAdd(dest_tag, group, pkg_info['name'])
def wait_task(self, task_id): def wait_task(self, task_id):
""" """