mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2025-12-17 21:11:12 +00:00
140 lines
3.7 KiB
Bash
Executable File
140 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
echo "================================================"
|
|
echo "UniLabOS Environment Installation Script"
|
|
echo "================================================"
|
|
echo ""
|
|
|
|
# Get the directory where this script is located
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
# Find conda installation
|
|
echo "Searching for conda installation..."
|
|
CONDA_BASE=""
|
|
|
|
# Try to find conda in PATH
|
|
if command -v conda &> /dev/null; then
|
|
CONDA_BASE=$(conda info --base)
|
|
echo "Found conda at: $CONDA_BASE"
|
|
elif [ -d "$HOME/miniforge3" ]; then
|
|
CONDA_BASE="$HOME/miniforge3"
|
|
echo "Found conda at: $CONDA_BASE"
|
|
elif [ -d "$HOME/miniconda3" ]; then
|
|
CONDA_BASE="$HOME/miniconda3"
|
|
echo "Found conda at: $CONDA_BASE"
|
|
elif [ -d "$HOME/anaconda3" ]; then
|
|
CONDA_BASE="$HOME/anaconda3"
|
|
echo "Found conda at: $CONDA_BASE"
|
|
elif [ -d "/opt/conda" ]; then
|
|
CONDA_BASE="/opt/conda"
|
|
echo "Found conda at: $CONDA_BASE"
|
|
else
|
|
echo "ERROR: Could not find conda installation!"
|
|
echo "Please make sure conda/mamba is installed."
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
|
|
# Initialize conda for this shell
|
|
if [ -f "$CONDA_BASE/etc/profile.d/conda.sh" ]; then
|
|
source "$CONDA_BASE/etc/profile.d/conda.sh"
|
|
fi
|
|
|
|
# Set target environment path
|
|
ENV_NAME="unilab"
|
|
ENV_PATH="$CONDA_BASE/envs/$ENV_NAME"
|
|
|
|
# Check if environment already exists
|
|
if [ -d "$ENV_PATH" ]; then
|
|
echo "WARNING: Environment '$ENV_NAME' already exists at $ENV_PATH"
|
|
read -p "Do you want to overwrite it? (y/n): " OVERWRITE
|
|
if [ "$OVERWRITE" != "y" ] && [ "$OVERWRITE" != "Y" ]; then
|
|
echo "Installation cancelled."
|
|
exit 0
|
|
fi
|
|
echo "Removing existing environment..."
|
|
rm -rf "$ENV_PATH"
|
|
fi
|
|
|
|
# Find the packed environment file
|
|
PACK_FILE=$(ls unilab-env*.tar.gz 2>/dev/null | head -n 1)
|
|
|
|
if [ -z "$PACK_FILE" ]; then
|
|
echo "ERROR: Could not find unilab-env*.tar.gz file!"
|
|
echo "Please make sure the packed environment file is in the same directory as this script."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Found packed environment: $PACK_FILE"
|
|
echo ""
|
|
|
|
# Extract the packed environment
|
|
echo "Extracting environment to $ENV_PATH..."
|
|
mkdir -p "$ENV_PATH"
|
|
tar -xzf "$PACK_FILE" -C "$ENV_PATH"
|
|
|
|
echo ""
|
|
echo "Unpacking conda environment..."
|
|
echo "Changing to environment directory: $ENV_PATH"
|
|
cd "$ENV_PATH"
|
|
|
|
# Run conda-unpack from the environment directory
|
|
if [ -f "bin/conda-unpack" ]; then
|
|
echo "Running: ./bin/conda-unpack"
|
|
./bin/conda-unpack
|
|
elif [ -f "bin/activate" ]; then
|
|
echo "Running: source bin/activate followed by conda-unpack"
|
|
source bin/activate
|
|
conda-unpack
|
|
else
|
|
echo "ERROR: Could not find bin/conda-unpack or bin/activate!"
|
|
echo "Current directory: $(pwd)"
|
|
echo "Expected location: $ENV_PATH/bin/"
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo "Checking UniLabOS entry point..."
|
|
# Check if unilab script exists in bin directory
|
|
UNILAB_SCRIPT="$ENV_PATH/bin/unilab"
|
|
if [ ! -f "$UNILAB_SCRIPT" ]; then
|
|
echo "WARNING: unilab script not found, creating it..."
|
|
cat > "$UNILAB_SCRIPT" << 'EOF'
|
|
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
import re
|
|
import sys
|
|
|
|
from unilabos.app.main import main
|
|
|
|
if __name__ == '__main__':
|
|
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
|
|
sys.exit(main())
|
|
EOF
|
|
chmod +x "$UNILAB_SCRIPT"
|
|
echo "Created: $UNILAB_SCRIPT"
|
|
else
|
|
echo "Found: $UNILAB_SCRIPT"
|
|
fi
|
|
|
|
echo ""
|
|
echo "================================================"
|
|
echo "Installation completed successfully!"
|
|
echo "================================================"
|
|
echo ""
|
|
echo "To activate the environment, run:"
|
|
echo " conda activate $ENV_NAME"
|
|
echo ""
|
|
echo "or"
|
|
echo ""
|
|
echo " source $ENV_PATH/bin/activate"
|
|
echo ""
|
|
echo "You can verify the installation by running:"
|
|
echo " cd $SCRIPT_DIR"
|
|
echo " python verify_installation.py"
|
|
echo ""
|
|
|