diff --git a/mpcdf_common.py b/mpcdf_common.py
index 8631c59357472f2a2a6d161c5633fe09ab3a4ba8..443ef842abff910bad850d66346ffba9b7c3d40f 100644
--- a/mpcdf_common.py
+++ b/mpcdf_common.py
@@ -46,6 +46,14 @@ prjconf_start_marker = "# Autogenerated by osc mpcdf_setup_repos, do not edit ti
 prjconf_end_marker = "# End of autogenerated section\n"
 
 
+def compiler_module(compiler_repo):
+    return compiler_repo.replace("_", "/", 1).replace("_", ".")
+
+
+def mpi_module(mpi_repo):
+    return mpi_repo.replace("_", "/", 1).replace("_", ".")
+
+
 def valid_pgi_mpi(pgi, mpi):
     if "impi" not in mpi:
         return False
@@ -528,11 +536,11 @@ Macros:
 
     for compiler in compilers + pgis:
         repo(compiler, (project, "System"), compiler=True,
-             compiler_repository=compiler)
+             compiler_repository=compiler, compiler_module=compiler_module(compiler))
 
         for mpi in filter(partial(valid_mpi, compiler), mpis):
             repo(mpi + "_" + compiler, (project, compiler), mpi=True,
-                 mpi_repository=mpi, compiler_repository=compiler)
+                 mpi_repository=mpi, mpi_module=mpi_module(mpi))
 
     for cuda in cudas:
         for compiler in filter(partial(valid_cuda, cuda), compilers):