aboutsummaryrefslogtreecommitdiff
path: root/include/conda.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/conda.h')
-rw-r--r--include/conda.h234
1 files changed, 0 insertions, 234 deletions
diff --git a/include/conda.h b/include/conda.h
deleted file mode 100644
index b8d0caa..0000000
--- a/include/conda.h
+++ /dev/null
@@ -1,234 +0,0 @@
-//! @file conda.h
-#ifndef STASIS_CONDA_H
-#define STASIS_CONDA_H
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/utsname.h>
-#include "core.h"
-#include "download.h"
-
-#define CONDA_INSTALL_PREFIX "conda"
-#define PYPI_INDEX_DEFAULT "https://pypi.org/simple"
-
-#define PKG_USE_PIP 0
-#define PKG_USE_CONDA 1
-
-#define PKG_NOT_FOUND 0
-#define PKG_FOUND 1
-
-#define PKG_INDEX_PROVIDES_ERROR_MESSAGE_OFFSET (-10)
-#define PKG_E_SUCCESS (PKG_INDEX_PROVIDES_ERROR_MESSAGE_OFFSET + 0)
-#define PKG_INDEX_PROVIDES_E_INTERNAL_MODE_UNKNOWN (PKG_INDEX_PROVIDES_ERROR_MESSAGE_OFFSET + 1)
-#define PKG_INDEX_PROVIDES_E_INTERNAL_LOG_HANDLE (PKG_INDEX_PROVIDES_ERROR_MESSAGE_OFFSET + 2)
-#define PKG_INDEX_PROVIDES_E_MANAGER_RUNTIME (PKG_INDEX_PROVIDES_ERROR_MESSAGE_OFFSET + 3)
-#define PKG_INDEX_PROVIDES_E_MANAGER_SIGNALED (PKG_INDEX_PROVIDES_ERROR_MESSAGE_OFFSET + 4)
-#define PKG_INDEX_PROVIDES_E_MANAGER_EXEC (PKG_INDEX_PROVIDES_ERROR_MESSAGE_OFFSET + 5)
-#define PKG_INDEX_PROVIDES_FAILED(ECODE) (ECODE <= PKG_INDEX_PROVIDES_ERROR_MESSAGE_OFFSET)
-
-struct MicromambaInfo {
- char *micromamba_prefix; //!< Path to write micromamba binary
- char *conda_prefix; //!< Path to install conda base tree
-};
-
-/**
- * Execute micromamba
- * @param info MicromambaInfo data structure (must be populated before use)
- * @param command printf-style formatter string
- * @param ... variadic arguments
- * @return exit code
- */
-int micromamba(struct MicromambaInfo *info, char *command, ...);
-
-/**
- * Execute Python
- * Python interpreter is determined by PATH
- *
- * ```c
- * if (python_exec("-c 'printf(\"Hello world\")'")) {
- * fprintf(stderr, "Hello world failed\n");
- * exit(1);
- * }
- * ```
- *
- * @param args arguments to pass to interpreter
- * @return exit code from python interpreter
- */
-int python_exec(const char *args);
-
-/**
- * Execute Pip
- * Pip is determined by PATH
- *
- * ```c
- * if (pip_exec("freeze")) {
- * fprintf(stderr, "pip freeze failed\n");
- * exit(1);
- * }
- * ```
- *
- * @param args arguments to pass to Pip
- * @return exit code from Pip
- */
-int pip_exec(const char *args);
-
-/**
- * Execute conda (or if possible, mamba)
- * Conda/Mamba is determined by PATH
- *
- * ```c
- * if (conda_exec("env list")) {
- * fprintf(stderr, "Failed to list conda environments\n");
- * exit(1);
- * }
- * ```
- *
- * @param args arguments to pass to Conda
- * @return exit code from Conda
- */
-int conda_exec(const char *args);
-
-/**
- * Configure the runtime environment to use Conda/Mamba
- *
- * ```c
- * if (conda_activate("/path/to/conda/installation", "base")) {
- * fprintf(stderr, "Failed to activate conda's base environment\n");
- * exit(1);
- * }
- * ```
- *
- * @param root directory where conda is installed
- * @param env_name the conda environment to activate
- * @return 0 on success, -1 on error
- */
-int conda_activate(const char *root, const char *env_name);
-
-/**
- * Configure the active conda installation for headless operation
- */
-int conda_setup_headless();
-
-/**
- * Creates a Conda environment from a YAML config
- *
- * ```c
- * if (conda_env_create_from_uri("myenv", "https://myserver.tld/environment.yml")) {
- * fprintf(stderr, "Environment creation failed\n");
- * exit(1);
- * }
- * ```
- *
- * @param name Name of new environment to create
- * @param uri /path/to/environment.yml
- * @param uri file:///path/to/environment.yml
- * @param uri http://myserver.tld/environment.yml
- * @param uri https://myserver.tld/environment.yml
- * @param uri ftp://myserver.tld/environment.yml
- * @return exit code from "conda"
- */
-int conda_env_create_from_uri(char *name, char *uri);
-
-/**
- * Create a Conda environment using generic package specs
- *
- * ```c
- * // Create a basic environment without any conda packages
- * if (conda_env_create("myenv", "3.11", NULL)) {
- * fprintf(stderr, "Environment creation failed\n");
- * exit(1);
- * }
- *
- * // Create a basic environment and install conda packages
- * if (conda_env_create("myenv", "3.11", "hstcal fitsverify")) {
- * fprintf(stderr, "Environment creation failed\n");
- * exit(1);
- * }
- * ```
- *
- * @param name Environment name
- * @param python_version Desired version of Python
- * @param packages Packages to install (or NULL)
- * @return exit code from "conda"
- */
-int conda_env_create(char *name, char *python_version, char *packages);
-
-/**
- * Remove a Conda environment
- *
- * ```c
- * if (conda_env_remove("myenv")) {
- * fprintf(stderr, "Unable to remove conda environment\n");
- * exit(1);
- * }
- * ```
- *
- * @param name Environment name
- * @return exit code from "conda"
- */
-int conda_env_remove(char *name);
-
-/**
- * Export a Conda environment in YAML format
- *
- * ```c
- * if (conda_env_export("myenv", "./", "myenv.yml")) {
- * fprintf(stderr, "Unable to export environment\n");
- * exit(1);
- * }
- * ```
- *
- * @param name Environment name to export
- * @param output_dir Destination directory
- * @param output_filename Destination file name
- * @return exit code from "conda"
- */
-int conda_env_export(char *name, char *output_dir, char *output_filename);
-
-/**
- * Run "conda index" on a local conda channel
- *
- * ```c
- * if (conda_index("/path/to/channel")) {
- * fprintf(stderr, "Unable to index requested path\n");
- * exit(1);
- * }
- * ```
- *
- * @param path Top-level directory of conda channel
- * @return exit code from "conda"
- */
-int conda_index(const char *path);
-
-/**
- * Determine whether a package index contains a package
- *
- * ```c
- * int result = pkg_index_provides(USE_PIP, NULL, "numpy>1.26");
- * if (PKG_INDEX_PROVIDES_FAILED(result)) {
- * fprintf(stderr, "failed: %s\n", pkg_index_provides_strerror(result));
- * exit(1);
- * } else if (result == PKG_NOT_FOUND) {
- * // package does not exist upstream
- * } else {
- * // package exists upstream
- * }
- * ```
- *
- * @param mode USE_PIP
- * @param mode USE_CONDA
- * @param index a file system path or url pointing to a simple index or conda channel
- * @param spec a pip package specification (e.g. `name==1.2.3`)
- * @param spec a conda package specification (e.g. `name=1.2.3`)
- * @return PKG_NOT_FOUND, if not found
- * @return PKG_FOUND, if found
- * @return PKG_E_INDEX_PROVIDES_{ERROR}, on error (see conda.h)
- */
-int pkg_index_provides(int mode, const char *index, const char *spec);
-const char *pkg_index_provides_strerror(int code);
-
-char *conda_get_active_environment();
-
-int conda_env_exists(const char *root, const char *name);
-
-#endif //STASIS_CONDA_H