diff --git a/module_build_service/builder/KojiModuleBuilder.py b/module_build_service/builder/KojiModuleBuilder.py
index c64f16c..ec4f989 100644
--- a/module_build_service/builder/KojiModuleBuilder.py
+++ b/module_build_service/builder/KojiModuleBuilder.py
@@ -389,6 +389,8 @@ chmod 644 %buildroot/%_sysconfdir/rpm/macros.zz-modules
def buildroot_connect(self, groups):
log.info("%r connecting buildroot." % self)
+ build_tag = self.koji_session.getTag(self.tag_name + "-build")
+
# Create or update individual tags
# the main tag needs arches so pungi can dump it
self.module_tag = self._koji_create_tag(
@@ -398,6 +400,11 @@ chmod 644 %buildroot/%_sysconfdir/rpm/macros.zz-modules
self._koji_whitelist_packages(self.components)
+ if not build_tag:
+ xmd = self.mmd.get_xmd()
+ if "mbs_options" in xmd.keys() and "blocked_packages" in xmd["mbs_options"].keys():
+ self._koji_block_packages(xmd["mbs_options"]["blocked_packages"])
+
@module_build_service.utils.retry(wait_on=SysCallError, interval=5)
def add_groups():
return self._koji_add_groups_to_tag(
@@ -436,6 +443,14 @@ chmod 644 %buildroot/%_sysconfdir/rpm/macros.zz-modules
log.info("%r adding artifacts %r" % (self, artifacts))
build_tag = self._get_tag(self.module_build_tag)['id']
+ xmd = self.mmd.get_xmd()
+ if "mbs_options" in xmd.keys() and "blocked_packages" in xmd["mbs_options"].keys():
+ packages = [kobo.rpmlib.parse_nvr(nvr)["name"] for nvr in artifacts]
+ packages = [package for package in packages
+ if package in xmd["mbs_options"]["blocked_packages"]]
+ if packages:
+ self._koji_unblock_packages(packages)
+
tagged_nvrs = self._get_tagged_nvrs(self.module_build_tag['name'])
self.koji_session.multicall = True
@@ -836,6 +851,22 @@ chmod 644 %buildroot/%_sysconfdir/rpm/macros.zz-modules
self.koji_session.packageListAdd(tag['name'], package, self.owner)
self.koji_session.multiCall(strict=True)
+ def _koji_block_packages(self, packages):
+ """
+ Blocks the `packages` for the module_build_tag.
+ """
+ log.info("Blocking packages in tag %s: %r", self.module_build_tag["name"], packages)
+ args = [[self.module_build_tag["name"], package] for package in packages]
+ koji_multicall_map(self.koji_session, self.koji_session.packageListBlock, args)
+
+ def _koji_unblock_packages(self, packages):
+ """
+ Unblocks the `packages` for the module_build_tag.
+ """
+ log.info("Unblocking packages in tag %s: %r", self.module_build_tag["name"], packages)
+ args = [[self.module_build_tag["name"], package] for package in packages]
+ koji_multicall_map(self.koji_session, self.koji_session.packageListUnblock, args)
+
@module_build_service.utils.validate_koji_tag(['build_tag', 'dest_tag'])
def _koji_add_target(self, name, build_tag, dest_tag):
"""