From 836cc753ea22fd8a3d152f2b00dae971ee3dc943 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Wed, 13 Nov 2024 12:13:34 -0500 Subject: Attempt conda environment removal only when its present on-disk --- src/cli/stasis/stasis_main.c | 4 ++-- src/lib/core/conda.c | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/cli/stasis/stasis_main.c b/src/cli/stasis/stasis_main.c index 2a2ed3b..093e32e 100644 --- a/src/cli/stasis/stasis_main.c +++ b/src/cli/stasis/stasis_main.c @@ -310,7 +310,7 @@ int main(int argc, char *argv[]) { } if (!isempty(ctx.meta.based_on)) { - if (conda_env_remove(env_name)) { + if (conda_env_exists(ctx.storage.conda_install_prefix, env_name) && conda_env_remove(env_name)) { msg(STASIS_MSG_ERROR | STASIS_MSG_L2, "failed to remove release environment: %s\n", env_name); exit(1); } @@ -321,7 +321,7 @@ int main(int argc, char *argv[]) { exit(1); } - if (conda_env_remove(env_name_testing)) { + if (conda_env_exists(ctx.storage.conda_install_prefix, env_name_testing) && conda_env_remove(env_name_testing)) { msg(STASIS_MSG_ERROR | STASIS_MSG_L2, "failed to remove testing environment %s\n", env_name_testing); exit(1); } diff --git a/src/lib/core/conda.c b/src/lib/core/conda.c index c98be1c..b2caa63f 100644 --- a/src/lib/core/conda.c +++ b/src/lib/core/conda.c @@ -542,3 +542,9 @@ int conda_index(const char *path) { sprintf(command, "index %s", path); return conda_exec(command); } + +int conda_env_exists(const char *root, const char *name) { + char path[PATH_MAX] = {0}; + snprintf(path, sizeof(path) - 1 - 6, "%s/envs/%s", root, name); + return access(path, F_OK) == 0; +} -- cgit