diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/deliverable.c | 26 | ||||
| -rw-r--r-- | src/main.c | 34 | 
2 files changed, 49 insertions, 11 deletions
| diff --git a/src/deliverable.c b/src/deliverable.c index b77502c..e7d47f5 100644 --- a/src/deliverable.c +++ b/src/deliverable.c @@ -137,6 +137,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->conda.installer_baseurl)      guard_free(ctx->conda.installer_name)      guard_free(ctx->conda.installer_version) @@ -189,6 +190,21 @@ void delivery_init_dirs(struct Delivery *ctx) {      ctx->storage.conda_artifact_dir = realpath("omc/output/packages/conda", NULL);      ctx->storage.wheel_artifact_dir = realpath("omc/output/packages/wheels", NULL); +    // Configure mission directory +    if (!ctx->storage.mission_dir) { +        ctx->storage.mission_dir = join( +                (char *[]) { +                        globals.sysconfdir, +                        "mission", +                        NULL +                }, +                DIR_SEP); +    } +    if (access(ctx->storage.mission_dir, F_OK)) { +        msg(OMC_MSG_L1, "%s: %s\n", ctx->storage.mission_dir, strerror(errno)); +        exit(1); +    } +      // Override installation prefix using global configuration key      if (globals.conda_install_prefix && strlen(globals.conda_install_prefix)) {          // user wants a specific path @@ -501,7 +517,17 @@ int delivery_format_str(struct Delivery *ctx, char **dest, const char *fmt) {      return 0;  } +void delivery_debug_show(struct Delivery *ctx) { +    printf("\n====DEBUG====\n"); +    printf("%-20s %-10s\n", "[DEBUG] system configuration directory:", globals.sysconfdir); +    printf("%-20s %-10s\n", "[DEBUG] mission directory:", ctx->storage.mission_dir); +} +  void delivery_meta_show(struct Delivery *ctx) { +    if (globals.verbose) { +        delivery_debug_show(ctx); +    } +      printf("\n====DELIVERY====\n");      printf("%-20s %-10s\n", "Target Python:", ctx->meta.python);      printf("%-20s %-10s\n", "Name:", ctx->meta.name); @@ -186,6 +186,24 @@ int main(int argc, char *argv[], char *arge[]) {      msg(OMC_MSG_L1, "Initializing\n"); +    // Set up PREFIX/etc directory information +    // The user may manipulate the base directory path with OMC_SYSCONFDIR +    // environment variable +    char omc_sysconfdir_tmp[PATH_MAX]; +    if (getenv("OMC_SYSCONFDIR")) { +        strncpy(omc_sysconfdir_tmp, getenv("OMC_SYSCONFDIR"), sizeof(omc_sysconfdir_tmp)); +    } else { +        strncpy(omc_sysconfdir_tmp, OMC_SYSCONFDIR, sizeof(omc_sysconfdir_tmp) - 1); +    } + +    globals.sysconfdir = realpath(omc_sysconfdir_tmp, NULL); +    if (!globals.sysconfdir) { +        msg(OMC_MSG_ERROR | OMC_MSG_L1, "Unable to resolve path to configuration directory: %s\n", omc_sysconfdir_tmp); +        exit(1); +    } else { +        memset(omc_sysconfdir_tmp, 0, sizeof(omc_sysconfdir_tmp)); +    } +      if (config_input) {          msg(OMC_MSG_L2, "Reading OMC global configuration: %s\n", config_input);          cfg = ini_open(config_input); @@ -241,19 +259,13 @@ int main(int argc, char *argv[], char *arge[]) {      tpl_register("system.platform", ctx.system.platform[DELIVERY_PLATFORM_RELEASE]);      char missionfile[PATH_MAX] = {0}; +      if (getenv("OMC_SYSCONFDIR")) { -        globals.sysconfdir = calloc(PATH_MAX, sizeof(*globals.sysconfdir)); -    } else { -        globals.sysconfdir = strdup(OMC_SYSCONFDIR); -    } -    if (!globals.sysconfdir) { -        msg(OMC_MSG_ERROR | OMC_MSG_L1, "Unable to allocate memory for system configuration directory path\n"); -        exit(1); -    } -    if (getenv("OMC_SYSCONFDIR")) { -        sprintf(missionfile, "%s/%s/%s/%s.ini", getenv("OMC_SYSCONFDIR"), "mission", ctx.meta.mission, ctx.meta.mission); +        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", OMC_SYSCONFDIR, "mission", ctx.meta.mission, ctx.meta.mission); +        sprintf(missionfile, "%s/%s/%s/%s.ini", +                globals.sysconfdir, "mission", ctx.meta.mission, ctx.meta.mission);      }      struct INIFILE *cfg_mission; | 
