diff --git a/module_build_service/builder/base.py b/module_build_service/builder/base.py
index 7d474d5..4165295 100644
--- a/module_build_service/builder/base.py
+++ b/module_build_service/builder/base.py
@@ -127,7 +127,28 @@ class GenericBuilder(six.with_metaclass(ABCMeta)):
builder = GenericBuilder.create(
module.owner, module, config.system, config,
tag_name=module.koji_tag, components=components)
- groups = GenericBuilder.default_buildroot_groups(session, module)
+
+ # Getting the groups from PDC can be time consuming, because we need
+ # to get whole dependency tree from PDC, which might result in lot
+ # of calls to PDC, so just get the groups once per module build
+ # and store it in xmd. The buildroot groups of particular module
+ # build don't change during the module built, so it is OK to cache
+ # them like that.
+ mmd = module.mmd()
+ if not "buildroot_groups" in mmd.xmd["mbs"]:
+ build_groups = GenericBuilder.default_buildroot_groups(
+ session, module)
+ # Change to sets to lists, so we can store them in modulemd.
+ for key in build_groups.keys():
+ build_groups[key] = list(build_groups[key])
+ mmd.xmd["mbs"]["buildroot_groups"] = build_groups
+ module.modulemd = mmd.dumps()
+
+ groups = mmd.xmd["mbs"]["buildroot_groups"]
+ # Change to lists to sets, because buildroot_connect expects sets.
+ for key in groups.keys():
+ groups[key] = set(groups[key])
+
builder.buildroot_connect(groups)
return builder