diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2023-11-21 11:00:07 -0500 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2023-11-21 11:00:07 -0500 |
commit | 4c3594a243ca43bd3d0bfca3728d4606a6b4e980 (patch) | |
tree | cf55917ffc6233ff6464a205877a88c26d4a581c /src | |
parent | f4c3d1318dd3c62a5af4099ef7624f49b5b2a4b4 (diff) | |
download | stasis-4c3594a243ca43bd3d0bfca3728d4606a6b4e980.tar.gz |
Read base packages from global config file
* Add conv_strlist_stackvar macro (globals is not a pointer)
* Add "conda_packages" and "pip_package" to global config file
* Fix unintended use of "conda build". Use "mambabuild".
Diffstat (limited to 'src')
-rw-r--r-- | src/deliverable.c | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/src/deliverable.c b/src/deliverable.c index 7008e7e..72b2e53 100644 --- a/src/deliverable.c +++ b/src/deliverable.c @@ -37,6 +37,18 @@ extern struct OMC_GLOBAL globals; rtevnop = NULL; \ } \ } +#define conv_strlist_stackvar(X, DEST, TOK) { \ + char *rtevnop = runtime_expand_var(NULL, val.as_char_p); \ + if (!X.DEST) \ + X.DEST = strlist_init(); \ + if (rtevnop) { \ + strip(rtevnop); \ + strlist_append_tokenize(X.DEST, rtevnop, TOK); \ + free(rtevnop); \ + } else { \ + rtevnop = NULL; \ + } \ +} #define conv_bool(X, DEST) X->DEST = val.as_bool; #define guard_runtime_free(X) if (X) { runtime_free(X); X = NULL; } #define guard_strlist_free(X) if (X) { strlist_free(X); X = NULL; } @@ -117,19 +129,23 @@ int delivery_init(struct Delivery *ctx, struct INIFILE *ini, struct INIFILE *cfg ctx->info.time_info = localtime(&ctx->info.time_now); if (cfg) { - getter(cfg, "default", "conda_staging_dir", INIVAL_TYPE_STR); - conv_str(ctx, storage.conda_staging_dir); - getter(cfg, "default", "conda_staging_url", INIVAL_TYPE_STR); - conv_str(ctx, storage.conda_staging_url); - getter(cfg, "default", "wheel_staging_dir", INIVAL_TYPE_STR); - conv_str(ctx, storage.wheel_staging_dir); - getter(cfg, "default", "wheel_staging_url", INIVAL_TYPE_STR); - conv_str(ctx, storage.wheel_staging_url); + getter(cfg, "default", "conda_staging_dir", INIVAL_TYPE_STR) + conv_str(ctx, storage.conda_staging_dir) + getter(cfg, "default", "conda_staging_url", INIVAL_TYPE_STR) + conv_str(ctx, storage.conda_staging_url) + getter(cfg, "default", "wheel_staging_dir", INIVAL_TYPE_STR) + conv_str(ctx, storage.wheel_staging_dir) + getter(cfg, "default", "wheel_staging_url", INIVAL_TYPE_STR) + conv_str(ctx, storage.wheel_staging_url) // Below can also be toggled by command-line arguments getter(cfg, "default", "continue_on_error", INIVAL_TYPE_BOOL) globals.continue_on_error = val.as_bool; - getter(cfg, "default", "always_update_base_environment", INIVAL_TYPE_BOOL); + getter(cfg, "default", "always_update_base_environment", INIVAL_TYPE_BOOL) globals.always_update_base_environment = val.as_bool; + getter(cfg, "default", "conda_packages", INIVAL_TYPE_STR_ARRAY) + conv_strlist_stackvar(globals, conda_packages, "\n") + getter(cfg, "default", "pip_packages", INIVAL_TYPE_STR_ARRAY) + conv_strlist_stackvar(globals, pip_packages, "\n") } delivery_init_dirs(ctx); @@ -346,7 +362,7 @@ int delivery_build_recipes(struct Delivery *ctx) { } char command[PATH_MAX]; - sprintf(command, "build --python=%s .", ctx->meta.python); + sprintf(command, "mambabuild --python=%s .", ctx->meta.python); status = conda_exec(command); if (status) { return -1; |