diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-02-13 09:36:59 -0500 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-02-13 09:40:29 -0500 |
commit | 4959d9c251ce603b8e32e7532559ad2a7867b6ab (patch) | |
tree | 28b21dbe61b1676f3c9b73514f934a77717776d6 | |
parent | 4527a13debf7ca4c6c193bf2e82351bf3e9e3ea8 (diff) | |
download | stasis-4959d9c251ce603b8e32e7532559ad2a7867b6ab.tar.gz |
Compatibility changes
-rw-r--r-- | include/config.h.in | 8 | ||||
-rw-r--r-- | include/omc.h | 1 | ||||
-rw-r--r-- | include/os_darwin.h | 26 | ||||
-rw-r--r-- | include/os_linux.h | 10 | ||||
-rw-r--r-- | include/relocation.h | 6 | ||||
-rw-r--r-- | src/deliverable.c | 14 |
6 files changed, 61 insertions, 4 deletions
diff --git a/include/config.h.in b/include/config.h.in index 460ac04..fe6beb2 100644 --- a/include/config.h.in +++ b/include/config.h.in @@ -8,12 +8,14 @@ #elif defined(__linux__) #define OMC_OS_LINUX +#include "os_linux.h" #elif defined(unix) || defined(__unix__) || defined(__unix) #define OMC_OS_UNIX -#elif defined(__APPLE__) && defined(__MACH__) +#elif defined(__APPLE__) #define OMC_OS_DARWIN +#include "os_darwin.h" #else #define OMC_OS_UNKNOWN @@ -21,4 +23,6 @@ #endif // OS detection -#endif // OMC_CONFIG_H
\ No newline at end of file + + +#endif // OMC_CONFIG_H diff --git a/include/omc.h b/include/omc.h index bb49dd1..7eb6c6e 100644 --- a/include/omc.h +++ b/include/omc.h @@ -18,6 +18,7 @@ #include "config.h" #include "template.h" + #include "utils.h" #include "copy.h" #include "ini.h" diff --git a/include/os_darwin.h b/include/os_darwin.h new file mode 100644 index 0000000..390968c --- /dev/null +++ b/include/os_darwin.h @@ -0,0 +1,26 @@ +#ifndef OMC_OS_DARWIN_H +#define OMC_OS_DARWIN_H + +#include <sys/mount.h> + +#ifndef __DARWIN_64_BIT_INO_T +#define statvfs statfs + +#ifndef ST_RDONLY +#define ST_RDONLY MNT_RDONLY +#endif + +#define ST_NOEXEC MNT_NOEXEC +#define f_flag f_flags +#endif // __DARWIN_64_BIT_INO_T + +#include <limits.h> + +#ifndef PATH_MAX +#include <sys/syslimits.h> +#endif + +extern char **environ; +#define __environ environ + +#endif diff --git a/include/os_linux.h b/include/os_linux.h new file mode 100644 index 0000000..8c3aed7 --- /dev/null +++ b/include/os_linux.h @@ -0,0 +1,10 @@ +#ifndef OMC_OS_LINUX_H +#define OMC_OS_LINUX_H + +#include <limits.h> + +#ifndef PATH_MAX +#include <linux/limits.h> +#endif + +#endif diff --git a/include/relocation.h b/include/relocation.h index 2ccf762..ea9da9f 100644 --- a/include/relocation.h +++ b/include/relocation.h @@ -4,10 +4,16 @@ #ifndef OMC_RELOCATION_H #define OMC_RELOCATION_H +#include "config.h" + #include <stdio.h> #include <stdlib.h> #include <string.h> +#if defined(OMC_OS_DARWIN) +#include <limits.h> +# else #include <linux/limits.h> +#endif #include <unistd.h> void replace_text(char *original, const char *target, const char *replacement); diff --git a/src/deliverable.c b/src/deliverable.c index ca07286..3f0fd34 100644 --- a/src/deliverable.c +++ b/src/deliverable.c @@ -3,6 +3,10 @@ #include "omc.h" extern struct OMC_GLOBAL globals; +#if defined(OMC_OS_DARWIN) +extern char **environ; +#define __environ environ +#endif #define getter(XINI, SECTION_NAME, KEY, TYPE) \ { \ @@ -94,11 +98,13 @@ int delivery_init_tmpdir(struct Delivery *ctx) { goto l_delivery_init_tmpdir_fatal; } +#if defined(OMC_OS_LINUX) // If we can't execute programs, or write data to the file system at all, then die if ((st.f_flag & ST_NOEXEC) != 0) { msg(OMC_MSG_ERROR | OMC_MSG_L1, "%s is mounted with noexec\n", tmpdir); goto l_delivery_init_tmpdir_fatal; } +#endif if ((st.f_flag & ST_RDONLY) != 0) { msg(OMC_MSG_ERROR | OMC_MSG_L1, "%s is mounted read-only\n", tmpdir); goto l_delivery_init_tmpdir_fatal; @@ -353,6 +359,7 @@ int delivery_init(struct Delivery *ctx, struct INIFILE *ini, struct INIFILE *cfg ctx->meta.codename = NULL; } + /* if (!strcasecmp(ctx->meta.mission, "jwst")) { getter(ini, "meta", "version", INIVAL_TYPE_STR) conv_str(ctx, meta.version) @@ -360,6 +367,9 @@ int delivery_init(struct Delivery *ctx, struct INIFILE *ini, struct INIFILE *cfg } else { ctx->meta.version = NULL; } + */ + getter(ini, "meta", "version", INIVAL_TYPE_STR) + conv_str(ctx, meta.version) getter_required(ini, "meta", "name", INIVAL_TYPE_STR) conv_str(ctx, meta.name) @@ -1321,6 +1331,7 @@ void delivery_gather_tool_versions(struct Delivery *ctx) { } int delivery_init_artifactory(struct Delivery *ctx) { + int status = 0; char dest[PATH_MAX] = {0}; char filepath[PATH_MAX] = {0}; snprintf(dest, sizeof(dest) - 1, "%s/bin", ctx->storage.tools_dir); @@ -1331,7 +1342,6 @@ int delivery_init_artifactory(struct Delivery *ctx) { msg(OMC_MSG_L3, "Skipped download, %s already exists\n", filepath); goto delivery_init_artifactory_envsetup; } - int status = 0; msg(OMC_MSG_L3, "Downloading %s for %s %s\n", globals.jfrog.remote_filename, ctx->system.platform, ctx->system.arch); if ((status = artifactory_download_cli(dest, @@ -1539,4 +1549,4 @@ int delivery_mission_render_files(struct Delivery *ctx) { } return 0; -}
\ No newline at end of file +} |