diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-02-06 09:57:29 -0500 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-02-06 09:57:29 -0500 |
commit | 901cd4d49173dfebd94fbbcd54d1cd9d6260a14f (patch) | |
tree | 06aaead65f83ec215f96dece14f8015d62b5ed1e /src | |
parent | f7b4187bd7e413d0ab90821485e403553e5f5a32 (diff) | |
download | stasis-901cd4d49173dfebd94fbbcd54d1cd9d6260a14f.tar.gz |
Add mission rule configuration to delivery context
Diffstat (limited to 'src')
-rw-r--r-- | src/deliverable.c | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/src/deliverable.c b/src/deliverable.c index 11213d7..c18d66a 100644 --- a/src/deliverable.c +++ b/src/deliverable.c @@ -138,7 +138,7 @@ void delivery_free(struct Delivery *ctx) { guard_free(ctx->storage.build_recipes_dir) guard_free(ctx->storage.build_sources_dir) guard_free(ctx->storage.build_testing_dir) - guard_free(ctx->storage.mission_dir); + guard_free(ctx->storage.mission_dir) guard_free(ctx->conda.installer_baseurl) guard_free(ctx->conda.installer_name) guard_free(ctx->conda.installer_version) @@ -401,6 +401,27 @@ int delivery_init(struct Delivery *ctx, struct INIFILE *ini, struct INIFILE *cfg getter(ini, "conda", "pip_packages", INIVAL_TYPE_STR_ARRAY) conv_strlist(ctx, conda.pip_packages, "\n") + // Delivery metadata consumed + // Now populate the rules + char missionfile[PATH_MAX] = {0}; + if (getenv("OMC_SYSCONFDIR")) { + sprintf(missionfile, "%s/%s/%s/%s.ini", + getenv("OMC_SYSCONFDIR"), "mission", ctx->meta.mission, ctx->meta.mission); + } else { + sprintf(missionfile, "%s/%s/%s/%s.ini", + globals.sysconfdir, "mission", ctx->meta.mission, ctx->meta.mission); + } + + msg(OMC_MSG_L2, "Reading mission configuration: %s\n", missionfile); + ctx->rules._handle = ini_open(missionfile); + if (!ctx->rules._handle) { + msg(OMC_MSG_ERROR | OMC_MSG_L2, "Failed to read misson configuration: %s, %s\n", missionfile, strerror(errno)); + exit(1); + } + + getter_required(ctx->rules._handle, "meta", "release_fmt", INIVAL_TYPE_STR) + conv_str(ctx, rules.release_fmt) + ctx->conda.conda_packages_defer = strlist_init(); ctx->conda.pip_packages_defer = strlist_init(); @@ -449,9 +470,10 @@ int delivery_init(struct Delivery *ctx, struct INIFILE *ini, struct INIFILE *cfg snprintf(env_name, sizeof(env_name) - 1, "%s_%s_%s_%s_py%s_rc%d", ctx->meta.name, ctx->meta.version, ctx->system.platform[DELIVERY_PLATFORM_RELEASE], ctx->system.arch, ctx->meta.python_compact, ctx->meta.rc); } - - if (strlen(env_name)) { - ctx->info.release_name = strdup(env_name); + */ + if (delivery_format_str(ctx, &ctx->info.release_name, ctx->rules.release_fmt)) { + fprintf(stderr, "Failed to generate release name. Format used: %s\n", ctx->rules.release_fmt); + return -1; } return 0; |