diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2025-03-20 09:35:13 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2025-03-20 09:35:13 -0400 |
commit | 4307e297cb567d70a0369e66af2c0d7f42725574 (patch) | |
tree | ed457b99b178073328667ab30a13e0ef3ada5c7a /src | |
parent | f59c6633fe8e06007570c088aed89179de96759e (diff) | |
download | stasis-4307e297cb567d70a0369e66af2c0d7f42725574.tar.gz |
Remove extras from spec in overlay generator
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/delivery/delivery_install.c | 21 |
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); |