From 2657119c8d49da0304d2314d66dc3604269ff682 Mon Sep 17 00:00:00 2001
From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de>
Date: Mon, 7 Aug 2023 16:26:39 +0200
Subject: [PATCH] add steps to remove from global packages

---
 src/mpsd_software_manager/mpsd_software.py | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/src/mpsd_software_manager/mpsd_software.py b/src/mpsd_software_manager/mpsd_software.py
index 99ac220..de558b2 100755
--- a/src/mpsd_software_manager/mpsd_software.py
+++ b/src/mpsd_software_manager/mpsd_software.py
@@ -1148,8 +1148,25 @@ def remove_environment(mpsd_release, root_dir, package_sets="NONE", force_remove
         if package_set not in ["global_packages", "global"]:
             remove_spack_environment(dir_to_remove / "spack", package_set)
         else:
-            # TODO remove global packages by calling remove_spack_package
-            pass
+            # list all specs from the global_packages.list
+            spe_folder = root_dir / mpsd_release / "spack-environments"
+            package_list_file = (
+                spe_folder / "toolchains" / package_set / "global_packages.list"
+            )
+            with open(package_list_file, "r") as f:
+                package_dump = f.read()
+
+            # remove all content from # to the end of the line
+            package_dump = re.sub(r"#.*\n", "\n", package_dump)
+            # replace \\n with "" to remove line breaks
+            package_list = package_dump.replace("\\\n", "").split("\n")
+            # remove all empty lines
+            package_list = [line for line in package_list if line != ""]
+
+            # remove all packages in package_list
+            for package in package_list:
+                logging.info(f"Removing package {package} from installation")
+                remove_spack_package(dir_to_remove / "spack", package)
 
 
 def remove_spack_environment(spack_dir, environment_name):
-- 
GitLab