From 87540e0240a2834690f2191825ca4485e95a669c Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: May 22 2017 12:45:42 +0000 Subject: Merge #560 `Do not reuse components when rpm macros change` --- diff --git a/module_build_service/utils.py b/module_build_service/utils.py index 810d24f..c531fcc 100644 --- a/module_build_service/utils.py +++ b/module_build_service/utils.py @@ -944,6 +944,16 @@ def get_reusable_component(session, module, component_name): .format(previous_module_build.version, previous_module_build.name)) return None + # If the mmd.buildopts.macros.rpms changed, we cannot reuse + modulemd_macros = "" + old_modulemd_macros = "" + if mmd.buildopts and mmd.buildopts.rpms: + modulemd_macros = mmd.buildopts.rpms.macros + if old_mmd.buildopts and old_mmd.buildopts.rpms: + modulemd_macros = old_mmd.buildopts.rpms.macros + if modulemd_macros != old_modulemd_macros: + return None + # If the module buildrequires are different, then we can't reuse the # component if mmd.buildrequires.keys() != old_mmd.buildrequires.keys(): diff --git a/tests/test_utils/test_utils.py b/tests/test_utils/test_utils.py index 07126da..38b43fa 100644 --- a/tests/test_utils/test_utils.py +++ b/tests/test_utils/test_utils.py @@ -208,6 +208,23 @@ class TestUtils(unittest.TestCase): db.session, second_module_build, 'tangerine') self.assertEqual(tangerine_rv, None) + def test_get_reusable_component_different_rpm_macros(self): + test_reuse_component_init_data() + second_module_build = models.ModuleBuild.query.filter_by(id=2).one() + mmd = second_module_build.mmd() + mmd.buildopts.rpms.macros = "%my_macro 1" + second_module_build.modulemd = mmd.dumps() + db.session.commit() + + plc_rv = module_build_service.utils.get_reusable_component( + db.session, second_module_build, 'perl-List-Compare') + self.assertEqual(plc_rv, None) + + # perl-Tangerine has a different commit hash + pt_rv = module_build_service.utils.get_reusable_component( + db.session, second_module_build, 'perl-Tangerine') + self.assertEqual(pt_rv, None) + def test_get_reusable_component_different_buildrequires_hash(self): test_reuse_component_init_data() second_module_build = models.ModuleBuild.query.filter_by(id=2).one()