diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-05-02 00:50:06 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-05-02 00:50:06 -0400 |
commit | 259ea8eb64dd8e852e0b2deafeff93c073e782fe (patch) | |
tree | 8213cece0af352ba71860dd3b079f7796f62c536 | |
parent | 9cbfef97af7491c42ba7a17b3805165f539b20b2 (diff) | |
download | stasis-259ea8eb64dd8e852e0b2deafeff93c073e782fe.tar.gz |
Add delivery_dump_metadata()
-rw-r--r-- | include/deliverable.h | 3 | ||||
-rw-r--r-- | src/deliverable.c | 44 | ||||
-rw-r--r-- | src/omc_main.c | 5 |
3 files changed, 52 insertions, 0 deletions
diff --git a/include/deliverable.h b/include/deliverable.h index c818df1..effd098 100644 --- a/include/deliverable.h +++ b/include/deliverable.h @@ -71,6 +71,7 @@ struct Delivery { char *mission_dir; ///< Mission data storage char *package_dir; ///< Base path to where all packages are stored char *results_dir; ///< Base path to where test results are stored + char *meta_dir; ///< Base path to where metadata records are stored char *conda_install_prefix; ///< Path to install Conda char *conda_artifact_dir; ///< Base path to store compiled conda packages char *conda_staging_dir; ///< Base path to copy compiled conda packages @@ -388,4 +389,6 @@ int delivery_fixup_test_results(struct Delivery *ctx); int *bootstrap_build_info(struct Delivery *ctx); +int delivery_dump_metadata(struct Delivery *ctx); + #endif //OMC_DELIVERABLE_H diff --git a/src/deliverable.c b/src/deliverable.c index 4318f53..7471489 100644 --- a/src/deliverable.c +++ b/src/deliverable.c @@ -232,6 +232,7 @@ void delivery_init_dirs_stage2(struct Delivery *ctx) { path_store(&ctx->storage.results_dir, PATH_MAX, ctx->storage.output_dir, "results"); path_store(&ctx->storage.package_dir, PATH_MAX, ctx->storage.output_dir, "packages"); path_store(&ctx->storage.cfgdump_dir, PATH_MAX, ctx->storage.output_dir, "config"); + path_store(&ctx->storage.meta_dir, PATH_MAX, ctx->storage.output_dir, "meta"); path_store(&ctx->storage.conda_artifact_dir, PATH_MAX, ctx->storage.package_dir, "conda"); path_store(&ctx->storage.wheel_artifact_dir, PATH_MAX, ctx->storage.package_dir, "wheels"); @@ -1485,6 +1486,7 @@ void delivery_defer_packages(struct Delivery *ctx, int type) { } const char *release_header = "# delivery_name: %s\n" + "# delivery_fmt: %s\n" "# creation_time: %s\n" "# conda_ident: %s\n" "# conda_build_ident: %s\n"; @@ -1495,12 +1497,54 @@ char *delivery_get_release_header(struct Delivery *ctx) { strftime(stamp, sizeof(stamp) - 1, "%c", ctx->info.time_info); sprintf(output, release_header, ctx->info.release_name, + ctx->rules.release_fmt, stamp, ctx->conda.tool_version, ctx->conda.tool_build_version); return strdup(output); } +int delivery_dump_metadata(struct Delivery *ctx) { + FILE *fp; + char filename[PATH_MAX]; + sprintf(filename, "%s/meta-%s.omc", ctx->storage.meta_dir, ctx->info.release_name); + fp = fopen(filename, "w+"); + if (!fp) { + return -1; + } + if (globals.verbose) { + printf("%s\n", filename); + } + fprintf(fp, "name %s\n", ctx->meta.name); + fprintf(fp, "version %s\n", ctx->meta.version); + fprintf(fp, "rc %d\n", ctx->meta.rc); + fprintf(fp, "python %s\n", ctx->meta.python); + fprintf(fp, "python_compact %s\n", ctx->meta.python_compact); + fprintf(fp, "mission %s\n", ctx->meta.mission); + fprintf(fp, "codename %s\n", ctx->meta.codename ? ctx->meta.codename : ""); + fprintf(fp, "platform %s %s %s %s\n", + ctx->system.platform[DELIVERY_PLATFORM], + ctx->system.platform[DELIVERY_PLATFORM_CONDA_SUBDIR], + ctx->system.platform[DELIVERY_PLATFORM_CONDA_INSTALLER], + ctx->system.platform[DELIVERY_PLATFORM_RELEASE]); + fprintf(fp, "arch %s\n", ctx->system.arch); + fprintf(fp, "time %s\n", ctx->info.time_str_epoch); + fprintf(fp, "release_fmt %s\n", ctx->rules.release_fmt); + fprintf(fp, "release_name %s\n", ctx->info.release_name); + fprintf(fp, "build_name_fmt %s\n", ctx->rules.build_name_fmt); + fprintf(fp, "build_name %s\n", ctx->info.build_name); + fprintf(fp, "build_number_fmt %s\n", ctx->rules.build_number_fmt); + fprintf(fp, "build_number %s\n", ctx->info.build_number); + fprintf(fp, "conda_installer_baseurl %s\n", ctx->conda.installer_baseurl); + fprintf(fp, "conda_installer_name %s\n", ctx->conda.installer_name); + fprintf(fp, "conda_installer_version %s\n", ctx->conda.installer_version); + fprintf(fp, "conda_installer_platform %s\n", ctx->conda.installer_platform); + fprintf(fp, "conda_installer_arch %s\n", ctx->conda.installer_arch); + + fclose(fp); + return 0; +} + void delivery_rewrite_spec(struct Delivery *ctx, char *filename, unsigned stage) { char output[PATH_MAX]; char *header = NULL; diff --git a/src/omc_main.c b/src/omc_main.c index 3ee3a00..170f925 100644 --- a/src/omc_main.c +++ b/src/omc_main.c @@ -586,6 +586,11 @@ int main(int argc, char *argv[]) { msg(OMC_MSG_L1 | OMC_MSG_WARN, "Artifact uploading is disabled. deploy:artifactory is not configured\n"); } + msg(OMC_MSG_L1, "Dumping metadata\n"); + if (delivery_dump_metadata(&ctx)) { + msg(OMC_MSG_L1 | OMC_MSG_ERROR, "Metadata dump failed\n"); + } + msg(OMC_MSG_L1, "Cleaning up\n"); delivery_free(&ctx); globals_free(); |