From f439ab238e01b7435dbfa94cc6a5912727ee0462 Mon Sep 17 00:00:00 2001 From: iamashwin99 <ashwin-kumar.karnad@mpsd.mpg.de> Date: Thu, 3 Aug 2023 16:06:29 +0200 Subject: [PATCH] update remove routine --- src/mpsd_software_manager/mpsd_software.py | 45 ++++++++++++---------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/src/mpsd_software_manager/mpsd_software.py b/src/mpsd_software_manager/mpsd_software.py index ce13d8a..3ad7890 100755 --- a/src/mpsd_software_manager/mpsd_software.py +++ b/src/mpsd_software_manager/mpsd_software.py @@ -1088,8 +1088,8 @@ def remove_environment(mpsd_release, root_dir, package_sets="NONE", force_remove logging.warning(msg) # Handle 3 situations : # 1. remove dosent specify what to remove -> warn and exit - # 1. remove all package_sets from release -> remove release folder except logs - # 2. remove specific package_sets from release + # 2. remove all package_sets from release -> remove release folder except logs + # 3. remove specific package_sets from release # -> remove spack environments via spack commands if package_sets == "NONE": @@ -1097,30 +1097,35 @@ def remove_environment(mpsd_release, root_dir, package_sets="NONE", force_remove "Please specify package_sets to remove, or 'ALL' to remove all toolchains" ) sys.exit(1) + # 2nd case: remove the entire release for microarchitecture + dir_to_remove = root_dir / mpsd_release / get_native_microarchitecture() if "ALL" in package_sets: # we need to remove the entire release folder - logging.warning(f"Removing release {mpsd_release} from {root_dir}") + logging.warning( + f"Removing release {mpsd_release}" + f"from {root_dir} for {get_native_microarchitecture()}" + ) if not force_remove: logging.warning("do you want to continue? [y/n]") - if input().lower() == "y": - force_remove = True - if force_remove: - dir_to_remove = root_dir / mpsd_release / get_native_microarchitecture() - folders_to_remove = os.listdir(dir_to_remove) - # skip logs folder - if "logs" in folders_to_remove: - folders_to_remove.remove("logs") - for folder in folders_to_remove: - shutil.rmtree(dir_to_remove / folder) - return + if input().lower() != "y": + sys.exit(50) # TODO document this code. + + folders_to_remove = os.listdir(dir_to_remove) + # skip logs folder + # if "logs" in folders_to_remove: + # folders_to_remove.remove("logs") + for folder in folders_to_remove: + shutil.rmtree(dir_to_remove / folder) + logging.warning(f"Removed release {mpsd_release} from {root_dir}") + return + # 3rd case: remove specific package_sets from release for package_set in package_sets: # we load the spack environment and remove the package_set - spack_env = "" - commands_to_execute = [ - f"source {spack_env}", - f"spack env remove -y {package_set}", - ] - run(" && ".join(commands_to_execute), shell=True, check=True) + 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 def start_new_environment(release, from_release, target_dir): -- GitLab