diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-11-20 22:32:01 -0500 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-11-20 22:35:47 -0500 |
commit | 9dceddb15f0b113d28fc2abb01ba5fb56330842c (patch) | |
tree | 6b1d7022971676fd66084661b4ff6ba2d2110662 | |
parent | ef3f7feeb635e42ef107271edccc952d512ea718 (diff) | |
download | stasis-9dceddb15f0b113d28fc2abb01ba5fb56330842c.tar.gz |
pip_packages now accepts name[extra1,extra2]==version stringsextra-spec
-rw-r--r-- | src/lib/core/delivery.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/lib/core/delivery.c b/src/lib/core/delivery.c index 1ceb8b7..aa3e51a 100644 --- a/src/lib/core/delivery.c +++ b/src/lib/core/delivery.c @@ -207,6 +207,15 @@ void delivery_defer_packages(struct Delivery *ctx, int type) { strncpy(package_name, name, sizeof(package_name) - 1); } + char *extra_begin = strchr(package_name, '['); + char *extra_end = NULL; + if (extra_begin) { + extra_end = strchr(extra_begin, ']'); + if (extra_end) { + *extra_begin = '\0'; + } + } + msg(STASIS_MSG_L3, "package '%s': ", package_name); // When spec is present in name, set tests->version to the version detected in the name @@ -214,11 +223,7 @@ void delivery_defer_packages(struct Delivery *ctx, int type) { struct Test *test = &ctx->tests[x]; char nametmp[1024] = {0}; - if (spec_end != NULL && spec_begin != NULL) { - strncpy(nametmp, name, spec_begin - name); - } else { - strcpy(nametmp, name); - } + strncpy(nametmp, package_name, sizeof(nametmp) - 1); // Is the [test:NAME] in the package name? if (!strcmp(nametmp, test->name)) { // Override test->version when a version is provided by the (pip|conda)_package list item @@ -260,7 +265,9 @@ void delivery_defer_packages(struct Delivery *ctx, int type) { fprintf(stderr, "%s's existence command failed for '%s': %s\n", mode, name, pkg_index_provides_strerror(upstream_exists)); exit(1); - } else if (upstream_exists == PKG_NOT_FOUND) { + } + + if (upstream_exists == PKG_NOT_FOUND) { build_for_host = 1; } else { build_for_host = 0; |