diff options
Diffstat (limited to 'include/deliverable.h')
-rw-r--r-- | include/deliverable.h | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/include/deliverable.h b/include/deliverable.h new file mode 100644 index 0000000..1487ace --- /dev/null +++ b/include/deliverable.h @@ -0,0 +1,117 @@ +// +// Created by jhunk on 10/5/23. +// + +#ifndef OHMYCAL_DELIVERABLE_H +#define OHMYCAL_DELIVERABLE_H + +#include <string.h> +#include <stdbool.h> +#include <unistd.h> +#include <sys/utsname.h> +#include "str.h" +#include "ini.h" +#include "environment.h" + +#define DELIVERY_DIR "delivery" +#define DELIVERY_PLATFORM_MAX 4 +#define DELIVERY_PLATFORM_MAXLEN 65 +#define DELIVERY_PLATFORM 0 +#define DELIVERY_PLATFORM_CONDA_SUBDIR 1 +#define DELIVERY_PLATFORM_CONDA_INSTALLER 2 +#define DELIVERY_PLATFORM_RELEASE 3 + +#define INSTALL_PKG_CONDA 1 << 1 +#define INSTALL_PKG_CONDA_DEFERRED 1 << 2 +#define INSTALL_PKG_PIP 1 << 3 +#define INSTALL_PKG_PIP_DEFERRED 1 << 4 + +struct Delivery { + struct System { + char *arch; + char platform[DELIVERY_PLATFORM_MAX][DELIVERY_PLATFORM_MAXLEN]; + } system; + struct Storage { + char *delivery_dir; + char *conda_install_prefix; + char *conda_artifact_dir; + char *conda_staging_dir; + char *conda_staging_url; + char *wheel_artifact_dir; + char *wheel_staging_dir; + char *wheel_staging_url; + char *build_dir; + char *build_recipes_dir; + char *build_sources_dir; + char *build_testing_dir; + } storage; + struct Meta { + // delivery name + char *name; + // delivery version + char *version; + // build iteration + int rc; + // version of python to use + char *python; + // URL to previous final configuration + char *based_on; + // hst, jwst, roman + char *mission; + // HST uses codenames + char *codename; + // is this a final release? + bool final; + // keep going, or don't + bool continue_on_error; + } meta; + + struct Conda { + char *installer_baseurl; + char *installer_name; + char *installer_version; + char *installer_platform; + char *installer_arch; + // packages to install + struct StrList *conda_packages; + // conda recipes to be built + struct StrList *conda_packages_defer; + // packages to install + struct StrList *pip_packages; + // packages to be built + struct StrList *pip_packages_defer; + } conda; + + // global runtime variables + struct Runtime { + RuntimeEnv *environ; + } runtime; + + struct Test { + char *name; + char *version; + char *repository; + char *script; + char *build_recipe; + // test-specific runtime variables + struct Runtime runtime; + } tests[1000]; +}; + +int delivery_init(struct Delivery *ctx, struct INIFILE *ini, struct INIFILE *cfg); +void delivery_meta_show(struct Delivery *ctx); +void delivery_conda_show(struct Delivery *ctx); +void delivery_tests_show(struct Delivery *ctx); +int delivery_build_recipes(struct Delivery *ctx); +struct StrList *delivery_build_wheels(struct Delivery *ctx); +int delivery_index_wheel_artifacts(struct Delivery *ctx); +void delivery_rewrite_spec(struct Delivery *ctx, char *filename); +int delivery_copy_wheel_artifacts(struct Delivery *ctx); +int delivery_copy_conda_artifacts(struct Delivery *ctx); +void delivery_get_installer(char *installer_url); +void delivery_get_installer_url(struct Delivery *delivery, char *result); +void delivery_install_packages(struct Delivery *ctx, char *conda_install_dir, char *env_name, int type, struct StrList *manifest[]); +int delivery_index_conda_artifacts(struct Delivery *ctx); +void delivery_tests_run(struct Delivery *ctx); + +#endif //OHMYCAL_DELIVERABLE_H |