aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2024-05-02 00:50:06 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2024-05-02 00:50:06 -0400
commit259ea8eb64dd8e852e0b2deafeff93c073e782fe (patch)
tree8213cece0af352ba71860dd3b079f7796f62c536
parent9cbfef97af7491c42ba7a17b3805165f539b20b2 (diff)
downloadstasis-259ea8eb64dd8e852e0b2deafeff93c073e782fe.tar.gz
Add delivery_dump_metadata()
-rw-r--r--include/deliverable.h3
-rw-r--r--src/deliverable.c44
-rw-r--r--src/omc_main.c5
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();