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