From 77fc0c2c2eea2b2e331a0d1d6440f6dc6077dc59 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lorenz=20H=C3=BCdepohl?= <lorenz.huedepohl@rzg.mpg.de>
Date: Wed, 23 Oct 2019 12:01:12 +0200
Subject: [PATCH] Support 'latest_gcc', 'latest_intel' meta compilers

---
 mpcdf_common.py | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/mpcdf_common.py b/mpcdf_common.py
index b1144b0..c7f2032 100644
--- a/mpcdf_common.py
+++ b/mpcdf_common.py
@@ -294,6 +294,13 @@ def mpcdf_enable_repositories(api_url, project, package, verbose=False, filter_r
     default_mpis = try_get_attribute(None, "default_mpi")
     default_cudas = try_get_attribute(None, "default_cuda")
 
+    def sort_key(string):
+        name, *version = string.split("_")
+        return (name,) + tuple(map(int, version))
+
+    latest_intel = sorted((c for c in all_compilers if c.startswith("intel")), key=sort_key)[-1]
+    latest_gcc = sorted((c for c in all_compilers if c.startswith("gcc")), key=sort_key)[-1]
+
     def enable(name):
         if any(filtered_repo in name for filtered_repo in filter_repos):
             return
@@ -305,7 +312,7 @@ def mpcdf_enable_repositories(api_url, project, package, verbose=False, filter_r
             print("Enabling", name)
 
     def actual_compilers():
-        for compiler in (c for c in compilers if c in all_compilers + ["default_compiler", "intel", "gcc"]):
+        for compiler in (c for c in compilers if c in all_compilers + ["default_compiler", "intel", "gcc", "latest_intel", "latest_gcc"]):
             if compiler == "intel":
                 for intel_compiler in [cc for cc in all_compilers if cc.startswith("intel")]:
                     yield intel_compiler
@@ -315,6 +322,10 @@ def mpcdf_enable_repositories(api_url, project, package, verbose=False, filter_r
             elif compiler == "default_compiler":
                 for default_compiler in default_compilers:
                     yield default_compiler
+            elif compiler == "latest_intel":
+                yield latest_intel
+            elif compiler == "latest_gcc":
+                yield latest_gcc
             else:
                 yield compiler
 
-- 
GitLab