From 53d7c88e6eb1561d65c41a308996db63ca31c5ab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lorenz=20H=C3=BCdepohl?= <dev@stellardeath.org>
Date: Wed, 1 Apr 2020 10:21:53 +0200
Subject: [PATCH] Make generated pkg meta more similar to existing

This often avoids making an API call to the server completely, if the
generated XML can be shown to be the same as the existing.
---
 mpcdf_common.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/mpcdf_common.py b/mpcdf_common.py
index 58e3a65..f52c325 100644
--- a/mpcdf_common.py
+++ b/mpcdf_common.py
@@ -415,6 +415,8 @@ def mpcdf_enable_repositories(api_url, project, package, verbose=False, dry_run=
     for enable in build.findall("./enable"):
         build.remove(enable)
 
+    disabled_repos = {disable.get("repository") for disable in build.findall("./disable")}
+
     try:
         enable_repos = get_attribute_values(api_url, project, package, "MPCDF:enable_repositories")
     except Exception:
@@ -443,13 +445,15 @@ def mpcdf_enable_repositories(api_url, project, package, verbose=False, dry_run=
         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]
 
+    i = len(build)
+
     def enable(name):
-        if name in ignore_repos:
+        if name in ignore_repos or name in disabled_repos:
             return
         node = ElementTree.Element("enable")
         node.set("repository", name)
         node.tail = "\n    "
-        build.insert(0, node)
+        build.insert(i, node)
         if verbose:
             print("Enabling", name)
 
-- 
GitLab