Skip to content
Snippets Groups Projects
Commit 14bc5045 authored by Ashwin Kumar Karnad's avatar Ashwin Kumar Karnad
Browse files

update remove routine

parent 1eb99e7b
No related branches found
No related tags found
No related merge requests found
This commit is part of merge request !82. Comments created here will be created in the context of that merge request.
......@@ -1080,8 +1080,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":
......@@ -1089,30 +1089,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):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment