aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@users.noreply.github.com>2024-11-20 22:46:59 -0500
committerGitHub <noreply@github.com>2024-11-20 22:46:59 -0500
commitb3facf587175307ef32547d0264bf096d2fcd283 (patch)
tree6b1d7022971676fd66084661b4ff6ba2d2110662
parentef3f7feeb635e42ef107271edccc952d512ea718 (diff)
parent9dceddb15f0b113d28fc2abb01ba5fb56330842c (diff)
downloadstasis-b3facf587175307ef32547d0264bf096d2fcd283.tar.gz
Merge pull request #71 from jhunkeler/extra-spec
pip_packages now accepts name[extra1,extra2]==version strings
-rw-r--r--src/lib/core/delivery.c19
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;