aboutsummaryrefslogtreecommitdiff
path: root/src/lib/delivery
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/delivery')
-rw-r--r--src/lib/delivery/delivery.c2
-rw-r--r--src/lib/delivery/delivery_build.c1
-rw-r--r--src/lib/delivery/delivery_install.c16
-rw-r--r--src/lib/delivery/delivery_postprocess.c2
4 files changed, 18 insertions, 3 deletions
diff --git a/src/lib/delivery/delivery.c b/src/lib/delivery/delivery.c
index 41be64c..7ae2b01 100644
--- a/src/lib/delivery/delivery.c
+++ b/src/lib/delivery/delivery.c
@@ -2,7 +2,7 @@
void delivery_free(struct Delivery *ctx) {
guard_free(ctx->system.arch);
- GENERIC_ARRAY_FREE(ctx->system.platform);
+ guard_array_free(ctx->system.platform);
guard_free(ctx->meta.name);
guard_free(ctx->meta.version);
guard_free(ctx->meta.codename);
diff --git a/src/lib/delivery/delivery_build.c b/src/lib/delivery/delivery_build.c
index 03f2d4c..2d891d2 100644
--- a/src/lib/delivery/delivery_build.c
+++ b/src/lib/delivery/delivery_build.c
@@ -141,6 +141,7 @@ struct StrList *delivery_build_wheels(struct Delivery *ctx) {
char name[100] = {0};
char *fullspec = strlist_item(ctx->conda.pip_packages_defer, p);
strncpy(name, fullspec, sizeof(name) - 1);
+ remove_extras(name);
char *spec = find_version_spec(name);
if (spec) {
*spec = '\0';
diff --git a/src/lib/delivery/delivery_install.c b/src/lib/delivery/delivery_install.c
index bb9bb48..cf6ccaa 100644
--- a/src/lib/delivery/delivery_install.c
+++ b/src/lib/delivery/delivery_install.c
@@ -9,6 +9,7 @@ static struct Test *requirement_from_test(struct Delivery *ctx, const char *name
if (spec) {
*spec = '\0';
}
+ remove_extras(package_name);
if (ctx->tests[i].name && !strcmp(package_name, ctx->tests[i].name)) {
result = &ctx->tests[i];
@@ -80,6 +81,7 @@ int delivery_overlay_packages_from_env(struct Delivery *ctx, const char *env_nam
} else {
strncpy(spec_name, spec, sizeof(spec_name) - 1);
}
+
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);
@@ -272,9 +274,21 @@ int delivery_install_packages(struct Delivery *ctx, char *conda_install_dir, cha
}
wheel_free(&whl);
}
+
+ char req[255] = {0};
+ if (!strcmp(name, info->name)) {
+ strcpy(req, info->name);
+ } else {
+ strcpy(req, name);
+ char *spec = find_version_spec(req);
+ if (spec) {
+ *spec = 0;
+ }
+ }
+
snprintf(cmd + strlen(cmd),
sizeof(cmd) - strlen(cmd) - strlen(info->name) - strlen(info->version) + 5,
- " '%s==%s'", info->name, info->version);
+ " '%s==%s'", req, info->version);
} else {
fprintf(stderr, "Deferred package '%s' is not present in the tested package list!\n", name);
return -1;
diff --git a/src/lib/delivery/delivery_postprocess.c b/src/lib/delivery/delivery_postprocess.c
index b43e247..5029e02 100644
--- a/src/lib/delivery/delivery_postprocess.c
+++ b/src/lib/delivery/delivery_postprocess.c
@@ -120,7 +120,7 @@ void delivery_rewrite_spec(struct Delivery *ctx, char *filename, unsigned stage)
}
fprintf(tp, "%s", contents[i]);
}
- GENERIC_ARRAY_FREE(contents);
+ guard_array_free(contents);
guard_free(header);
fflush(tp);
fclose(tp);