diff options
-rw-r--r-- | include/omc.h | 17 | ||||
-rw-r--r-- | src/deliverable.c | 36 |
2 files changed, 36 insertions, 17 deletions
diff --git a/include/omc.h b/include/omc.h index 432d88a..d798b33 100644 --- a/include/omc.h +++ b/include/omc.h @@ -9,13 +9,6 @@ #define SYSERROR stderr, "%s:%s:%d: %s\n", path_basename(__FILE__), __FUNCTION__, __LINE__, strerror(errno) #define OMC_BUFSIZ 8192 -struct OMC_GLOBAL { - unsigned char verbose; - unsigned char always_update_base_environment; - unsigned char continue_on_error; - char *tmpdir; -}; - #include "utils.h" #include "ini.h" #include "conda.h" @@ -34,4 +27,14 @@ struct OMC_GLOBAL { exit(1); \ } \ } + +struct OMC_GLOBAL { + unsigned char verbose; + unsigned char always_update_base_environment; + unsigned char continue_on_error; + struct StrList *conda_packages; + struct StrList *pip_packages; + char *tmpdir; +}; + #endif //OMC_OMC_H 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; |