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; | 
