aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2025-03-20 09:35:13 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2025-03-20 09:35:13 -0400
commit4307e297cb567d70a0369e66af2c0d7f42725574 (patch)
treeed457b99b178073328667ab30a13e0ef3ada5c7a /src
parentf59c6633fe8e06007570c088aed89179de96759e (diff)
downloadstasis-4307e297cb567d70a0369e66af2c0d7f42725574.tar.gz
Remove extras from spec in overlay generator
Diffstat (limited to 'src')
-rw-r--r--src/lib/delivery/delivery_install.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/lib/delivery/delivery_install.c b/src/lib/delivery/delivery_install.c
index bb9bb48..fec30ac 100644
--- a/src/lib/delivery/delivery_install.c
+++ b/src/lib/delivery/delivery_install.c
@@ -41,6 +41,25 @@ static char *have_spec_in_config(const struct Delivery *ctx, const char *name) {
return NULL;
}
+static char *remove_extras(char *s) {
+ char *extra_stop = NULL;
+ char *extra_start = strchr(s, '[');
+ size_t len = strlen(s);
+ if (extra_start) {
+ extra_stop = strchr(extra_start, ']');
+ if (extra_stop) {
+ size_t last = strlen(s);
+ if (last) {
+ extra_stop++;
+ last = strlen(extra_stop);
+ }
+ memmove(extra_start, extra_stop, last);
+ s[len - (extra_stop - extra_start)] = 0;
+ }
+ }
+ return s;
+}
+
int delivery_overlay_packages_from_env(struct Delivery *ctx, const char *env_name) {
char *current_env = conda_get_active_environment();
int need_restore = current_env && strcmp(env_name, current_env) != 0;
@@ -80,6 +99,8 @@ int delivery_overlay_packages_from_env(struct Delivery *ctx, const char *env_nam
} else {
strncpy(spec_name, spec, sizeof(spec_name) - 1);
}
+ remove_extras(spec_name);
+
struct Test *test_block = requirement_from_test(ctx, spec_name);
if (!test_block) {
msg(STASIS_MSG_L2 | STASIS_MSG_WARN, "from config without test: %s\n", spec);