diff --git a/mpcdf_common.py b/mpcdf_common.py index 555daf3ae19ef991663531dd94f9cb9fc2e0483f..ce3005f37f0f1975dc268f11f3c3eddf677ff851 100644 --- a/mpcdf_common.py +++ b/mpcdf_common.py @@ -306,6 +306,12 @@ def get_microarchitecture(project): raise Exception("Unknown micro-architecture '{0}'".format(microarch)) +def package_sort_key(string): + name, version = string.split("_", 1) + version = version.split("_") + return (name,) + tuple(map(int, version)) + + def mpcdf_enable_repositories(api_url, project, package, verbose=False, filter_repos=None): from itertools import product import sys @@ -355,13 +361,8 @@ 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("_", 1) - version = version.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] + latest_intel = sorted((c for c in all_compilers if c.startswith("intel")), key=package_sort_key)[-1] + latest_gcc = sorted((c for c in all_compilers if c.startswith("gcc")), key=package_sort_key)[-1] def enable(name): if any(filtered_repo in name for filtered_repo in filter_repos): diff --git a/mpcdf_refresh_aggregates.py b/mpcdf_refresh_aggregates.py index f95dc3123c7bdee055ae3c0a30b14573d61323d1..22e2594890e57dab890555f6f86a2d4227800113 100644 --- a/mpcdf_refresh_aggregates.py +++ b/mpcdf_refresh_aggregates.py @@ -94,6 +94,12 @@ def do_mpcdf_refresh_aggregates(self, subcmd, opts, *args): values = mpcdf_common.get_attribute_values(apiurl, project, None, attribute) macros[target].append("%available_{0} {1}".format(name, ",".join(sorted(values)))) + all_compilers = mpcdf_common.get_attribute_values(apiurl, project, None, "MPCDF:compiler_modules") + latest_intel = sorted((c for c in all_compilers if c.startswith("intel")), key=mpcdf_common.package_sort_key)[-1] + latest_gcc = sorted((c for c in all_compilers if c.startswith("gcc")), key=mpcdf_common.package_sort_key)[-1] + macros[target].append("%latest_intel " + latest_intel) + macros[target].append("%latest_gcc " + latest_gcc) + for repo in osc.core.get_repositories_of_project(apiurl, project): aggregatename = "zz_aggregate_" + project.replace(":", "-") + "_" + repo refresh_aggregate(aggregatename, project, repo, target)