Spaces:
Runtime error
Runtime error
# This script will install git and conda (if not found on the PATH variable) | |
# using micromamba (an 8mb static-linked single-file binary, conda replacement). | |
# For users who already have git and conda, this step will be skipped. | |
# This enables a user to install this project without manually installing conda and git. | |
source ./scripts/functions.sh | |
set -o pipefail | |
OS_NAME=$(uname -s) | |
case "${OS_NAME}" in | |
Linux*) OS_NAME="linux";; | |
Darwin*) OS_NAME="osx";; | |
*) echo "Unknown OS: $OS_NAME! This script runs only on Linux or Mac" && exit | |
esac | |
OS_ARCH=$(uname -m) | |
case "${OS_ARCH}" in | |
x86_64*) OS_ARCH="64";; | |
arm64*) OS_ARCH="arm64";; | |
aarch64*) OS_ARCH="arm64";; | |
*) echo "Unknown system architecture: $OS_ARCH! This script runs only on x86_64 or arm64" && exit | |
esac | |
if ! which curl; then fail "'curl' not found. Please install curl."; fi | |
if ! which tar; then fail "'tar' not found. Please install tar."; fi | |
if ! which bzip2; then fail "'bzip2' not found. Please install bzip2."; fi | |
if pwd | grep ' '; then fail "The installation directory's path contains a space character. Conda will fail to install. Please change the directory."; fi | |
# https://mamba.readthedocs.io/en/latest/installation.html | |
if [ "$OS_NAME" == "linux" ] && [ "$OS_ARCH" == "arm64" ]; then OS_ARCH="aarch64"; fi | |
# config | |
export MAMBA_ROOT_PREFIX="$(pwd)/installer_files/mamba" | |
INSTALL_ENV_DIR="$(pwd)/installer_files/env" | |
LEGACY_INSTALL_ENV_DIR="$(pwd)/installer" | |
MICROMAMBA_DOWNLOAD_URL="https://micro.mamba.pm/api/micromamba/${OS_NAME}-${OS_ARCH}/latest" | |
umamba_exists="F" | |
# figure out whether git and conda needs to be installed | |
if [ -e "$INSTALL_ENV_DIR" ]; then export PATH="$INSTALL_ENV_DIR/bin:$PATH"; fi | |
PACKAGES_TO_INSTALL="" | |
if [ ! -e "$LEGACY_INSTALL_ENV_DIR/etc/profile.d/conda.sh" ] && [ ! -e "$INSTALL_ENV_DIR/etc/profile.d/conda.sh" ]; then PACKAGES_TO_INSTALL="$PACKAGES_TO_INSTALL conda python=3.8.5"; fi | |
if ! hash "git" &>/dev/null; then PACKAGES_TO_INSTALL="$PACKAGES_TO_INSTALL git"; fi | |
if "$MAMBA_ROOT_PREFIX/micromamba" --version &>/dev/null; then umamba_exists="T"; fi | |
# (if necessary) install git and conda into a contained environment | |
if [ "$PACKAGES_TO_INSTALL" != "" ]; then | |
# download micromamba | |
if [ "$umamba_exists" == "F" ]; then | |
echo "Downloading micromamba from $MICROMAMBA_DOWNLOAD_URL to $MAMBA_ROOT_PREFIX/micromamba" | |
mkdir -p "$MAMBA_ROOT_PREFIX" | |
curl -L "$MICROMAMBA_DOWNLOAD_URL" | tar -xvj -O bin/micromamba > "$MAMBA_ROOT_PREFIX/micromamba" | |
if [ "$?" != "0" ]; then | |
echo | |
echo "EE micromamba download failed" | |
echo "EE If the lines above contain 'bzip2: Cannot exec', your system doesn't have bzip2 installed" | |
echo "EE If there are network errors, please check your internet setup" | |
fail "micromamba download failed" | |
fi | |
chmod u+x "$MAMBA_ROOT_PREFIX/micromamba" | |
# test the mamba binary | |
echo "Micromamba version:" | |
"$MAMBA_ROOT_PREFIX/micromamba" --version | |
fi | |
# create the installer env | |
if [ ! -e "$INSTALL_ENV_DIR" ]; then | |
"$MAMBA_ROOT_PREFIX/micromamba" create -y --prefix "$INSTALL_ENV_DIR" || fail "unable to create the install environment" | |
fi | |
if [ ! -e "$INSTALL_ENV_DIR" ]; then | |
fail "There was a problem while installing$PACKAGES_TO_INSTALL using micromamba. Cannot continue." | |
fi | |
echo "Packages to install:$PACKAGES_TO_INSTALL" | |
"$MAMBA_ROOT_PREFIX/micromamba" install -y --prefix "$INSTALL_ENV_DIR" -c conda-forge $PACKAGES_TO_INSTALL | |
if [ "$?" != "0" ]; then | |
fail "Installation of the packages '$PACKAGES_TO_INSTALL' failed." | |
fi | |
fi | |