From 421ed4fc399b5bc545bc6b75d1085c457ce3335e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lorenz=20H=C3=BCdepohl?= <lorenz.huedepohl@rzg.mpg.de>
Date: Thu, 6 Jun 2019 10:39:31 +0200
Subject: [PATCH] Support for default_python[23] attributes

---
 mpcdf_common.py | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/mpcdf_common.py b/mpcdf_common.py
index e411150..c01bb47 100644
--- a/mpcdf_common.py
+++ b/mpcdf_common.py
@@ -11,7 +11,7 @@ from xml.etree import ElementTree
 
 package_attributes = ["MPCDF:enable_repositories"]
 config_attributes = ["MPCDF:compiler_modules", "MPCDF:cuda_modules", "MPCDF:mpi_modules", "MPCDF:pgi_modules"]
-default_attributes = ["MPCDF:default_compiler", "MPCDF:default_cuda", "MPCDF:default_mpi"]
+default_attributes = ["MPCDF:default_compiler", "MPCDF:default_cuda", "MPCDF:default_mpi", "MPCDF:default_python2", "MPCDF:default_python3"]
 
 intel_parallel_studio = {
     "mpcdf_intel_parallel_studio_2017_7": {"compiler": "intel_17_0_7", "impi": "impi_2017_4", "mkl": "mkl_2017_4-module", },
@@ -139,6 +139,11 @@ def get_attribute_values(api_url, project, package, attribute, with_project=Fals
     return list(value.text for value in attribute.findall("./value"))
 
 
+def get_attribute_value(api_url, project, package, attribute, with_project=False):
+    value, = get_attribute_values(api_url, project, package, attribute, with_project=False)
+    return value
+
+
 def set_attribute(api_url, project, package, attribute):
     path = ["source", project]
     if package:
@@ -341,10 +346,12 @@ def mpcdf_setup_repositories(api_url, project, distribution=None, parent=None, p
             print("Copying attribute '{0}' from parent project".format(attribute))
             set_attribute(api_url, project, None, get_attribute(api_url, parent, None, attribute))
 
-    compilers = list(get_attribute_values(api_url, project, None, "MPCDF:compiler_modules"))
-    mpis = list(get_attribute_values(api_url, project, None, "MPCDF:mpi_modules"))
-    cudas = list(get_attribute_values(api_url, project, None, "MPCDF:cuda_modules"))
-    pgis = list(get_attribute_values(api_url, project, None, "MPCDF:pgi_modules"))
+    compilers = get_attribute_values(api_url, project, None, "MPCDF:compiler_modules")
+    mpis = get_attribute_values(api_url, project, None, "MPCDF:mpi_modules")
+    cudas = get_attribute_values(api_url, project, None, "MPCDF:cuda_modules")
+    pgis = get_attribute_values(api_url, project, None, "MPCDF:pgi_modules")
+    default_python2 = get_attribute_value(api_url, project, None, "MPCDF:default_python2")
+    default_python3 = get_attribute_value(api_url, project, None, "MPCDF:default_python3")
 
     if distribution is None:
         # Get existing value from project meta
@@ -379,6 +386,10 @@ def mpcdf_setup_repositories(api_url, project, distribution=None, parent=None, p
     prjconf_tail = "".join(prjconf[end + 1:])
     prjconf = [start_marker]
 
+    prjconf.append("Prefer: mpcdf_python2_" + default_python2)
+    prjconf.append("Prefer: mpcdf_python3_" + default_python3)
+    prjconf.append("")
+
     # Remove existing repositories
     if remove_old:
         for oldrepo in root.findall("./repository"):
-- 
GitLab