From 87848f54f8a1c22d7e7b6f93ea8bdd8edf34490f Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Aug 04 2017 11:04:00 +0000 Subject: fix tagging components when all of them are reused --- diff --git a/mbs-cg-upload.patch b/mbs-cg-upload.patch index f1a4bba..6a185ac 100644 --- a/mbs-cg-upload.patch +++ b/mbs-cg-upload.patch @@ -1,7 +1,15 @@ diff --git a/module_build_service/builder/KojiContentGenerator.py b/module_build_service/builder/KojiContentGenerator.py -index 078cc1f..95d83f1 100644 +index 078cc1f..4c9ee67 100644 --- a/module_build_service/builder/KojiContentGenerator.py +++ b/module_build_service/builder/KojiContentGenerator.py +@@ -32,6 +32,7 @@ import platform + import shutil + import subprocess + import tempfile ++import time + + import koji + @@ -328,6 +328,32 @@ class KojiContentGenerator(object): return prepdir @@ -45,3 +53,84 @@ index 078cc1f..95d83f1 100644 log.debug("Content generator import done: %s", json.dumps(build_info, sort_keys=True, indent=4)) except Exception, e: + +diff --git a/module_build_service/scheduler/handlers/repos.py b/module_build_service/scheduler/handlers/repos.py +index 7a6f7d8..56c8668 100644 +--- a/module_build_service/scheduler/handlers/repos.py ++++ b/module_build_service/scheduler/handlers/repos.py +@@ -89,13 +89,6 @@ def done(config, session, msg): + tag_name=tag, components=[c.package for c in module_build.component_builds]) + builder.buildroot_connect(groups) + +- # Ok, for the subset of builds that did complete successfully, check to +- # see if they are in the buildroot. +- artifacts = [component_build.nvr for component_build in good] +- if not builder.buildroot_ready(artifacts): +- log.info("Not all of %r are in the buildroot. Waiting." % artifacts) +- return +- + # If we have reached here then we know the following things: + # + # - All components in this batch have finished (failed or succeeded) +@@ -116,6 +109,13 @@ def done(config, session, msg): + + further_work = [] + if has_unbuilt_components and not has_failed_components: ++ # Ok, for the subset of builds that did complete successfully, check to ++ # see if they are in the buildroot before starting new batch. ++ artifacts = [component_build.nvr for component_build in good] ++ if not builder.buildroot_ready(artifacts): ++ log.info("Not all of %r are in the buildroot. Waiting." % artifacts) ++ return ++ + # Try to start next batch build, because there are still unbuilt + # components in a module. + further_work += start_next_batch_build( +diff --git a/module_build_service/scheduler/handlers/tags.py b/module_build_service/scheduler/handlers/tags.py +index 493a5da..bdf7d78 100644 +--- a/module_build_service/scheduler/handlers/tags.py ++++ b/module_build_service/scheduler/handlers/tags.py +@@ -27,7 +27,7 @@ import module_build_service.builder + import module_build_service.pdc + import logging + import koji +-from module_build_service import models, log ++from module_build_service import models, log, messaging + from module_build_service.utils import start_next_batch_build + + logging.basicConfig(level=logging.DEBUG) +@@ -78,13 +78,30 @@ def tagged(config, session, msg): + if not c.tagged and c.state == koji.BUILD_STATES['COMPLETE'] + ] + ++ further_work = [] ++ + # If all components are tagged, start newRepo task. + if not untagged_components: +- log.info("All components tagged, regenerating repo for tag %s", tag) + builder = module_build_service.builder.GenericBuilder.create_from_module( + session, module_build, config) +- task_id = builder.koji_session.newRepo(tag) +- module_build.new_repo_task_id = task_id ++ ++ unbuilt_components = [ ++ c for c in module_build.component_builds ++ if c.state == koji.BUILD_STATES['BUILDING'] or not c.state ++ ] ++ if unbuilt_components: ++ log.info("All components in batch tagged, regenerating repo for tag %s", tag) ++ task_id = builder.koji_session.newRepo(tag) ++ module_build.new_repo_task_id = task_id ++ else: ++ # In case this is the last batch, we do not need to regenerate the ++ # buildroot, because we will not build anything else in it. It ++ # would be useless to wait for a repository we will not use anyway. ++ log.info("All components in module tagged and built, skipping the " ++ "last repo regeneration") ++ further_work += [messaging.KojiRepoChange( ++ 'components::_finalize: fake msg', ++ builder.module_build_tag['name'])] + session.commit() + +- return [] ++ return further_work diff --git a/module-build-service.spec b/module-build-service.spec index 77a9f21..c43519d 100644 --- a/module-build-service.spec +++ b/module-build-service.spec @@ -1,6 +1,6 @@ Name: module-build-service Version: 1.3.25 -Release: 5%{?dist} +Release: 6%{?dist} Summary: The Module Build Service for Modularity @@ -224,6 +224,9 @@ done %changelog +* Fri Aug 04 2017 Jan Kaluza - 1.3.25-6 +- fix tagging components when all of them are reused + * Fri Aug 04 2017 Jan Kaluza - 1.3.25-5 - upload content generator logs to Koji