blob: 749f63ba1734fcdd3beefa875d29505aca5efd87 [file] [log] [blame] [edit]
#!/bin/bash
# =============================================================================
# AVM CTC Framework - Virtual Environment Setup Script
# =============================================================================
# This script creates a Python virtual environment and installs all required
# dependencies for the AVM CTC testing framework.
#
# Usage:
# ./setup_env.sh # Create venv in default location (./venv)
# ./setup_env.sh /path/to/env # Create venv in custom location
#
# After running this script, activate the environment with:
# source venv/bin/activate # Linux/macOS
# or
# source /path/to/env/bin/activate # Custom location
# =============================================================================
set -e # Exit on error
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Get script directory
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Virtual environment path (default or custom)
VENV_PATH="${1:-$SCRIPT_DIR/venv}"
# Minimum Python version required
MIN_PYTHON_VERSION="3.8"
echo -e "${GREEN}==============================================================================${NC}"
echo -e "${GREEN}AVM CTC Framework - Virtual Environment Setup${NC}"
echo -e "${GREEN}==============================================================================${NC}"
# Check if Python 3 is available
check_python() {
if command -v python3 &> /dev/null; then
PYTHON_CMD="python3"
elif command -v python &> /dev/null; then
# Check if python is Python 3
if python --version 2>&1 | grep -q "Python 3"; then
PYTHON_CMD="python"
else
echo -e "${RED}Error: Python 3 is required but not found.${NC}"
echo "Please install Python 3.8 or later."
exit 1
fi
else
echo -e "${RED}Error: Python is not installed.${NC}"
echo "Please install Python 3.8 or later."
exit 1
fi
# Check Python version
PYTHON_VERSION=$($PYTHON_CMD -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')
echo -e "Found Python: ${GREEN}$PYTHON_CMD${NC} (version $PYTHON_VERSION)"
# Compare versions
if [ "$(printf '%s\n' "$MIN_PYTHON_VERSION" "$PYTHON_VERSION" | sort -V | head -n1)" != "$MIN_PYTHON_VERSION" ]; then
echo -e "${RED}Error: Python $MIN_PYTHON_VERSION or later is required, but found $PYTHON_VERSION${NC}"
exit 1
fi
}
# Create virtual environment
create_venv() {
echo -e "\n${YELLOW}Creating virtual environment at: $VENV_PATH${NC}"
if [ -d "$VENV_PATH" ]; then
echo -e "${YELLOW}Virtual environment already exists. Removing old one...${NC}"
rm -rf "$VENV_PATH"
fi
$PYTHON_CMD -m venv "$VENV_PATH"
if [ $? -eq 0 ]; then
echo -e "${GREEN}Virtual environment created successfully.${NC}"
else
echo -e "${RED}Failed to create virtual environment.${NC}"
exit 1
fi
}
# Activate virtual environment and install dependencies
install_dependencies() {
echo -e "\n${YELLOW}Activating virtual environment...${NC}"
source "$VENV_PATH/bin/activate"
echo -e "\n${YELLOW}Installing dependencies from requirements.txt...${NC}"
REQUIREMENTS_FILE="$SCRIPT_DIR/requirements.txt"
if [ -f "$REQUIREMENTS_FILE" ]; then
pip install --require-hashes -r "$REQUIREMENTS_FILE"
if [ $? -eq 0 ]; then
echo -e "${GREEN}All dependencies installed successfully.${NC}"
else
echo -e "${RED}Failed to install some dependencies.${NC}"
exit 1
fi
else
echo -e "${RED}Error: requirements.txt not found at $REQUIREMENTS_FILE${NC}"
exit 1
fi
}
# Print summary and instructions
print_summary() {
echo -e "\n${GREEN}==============================================================================${NC}"
echo -e "${GREEN}Setup Complete!${NC}"
echo -e "${GREEN}==============================================================================${NC}"
echo -e "\nTo activate the virtual environment, run:"
echo -e " ${YELLOW}source $VENV_PATH/bin/activate${NC}"
echo -e "\nTo deactivate when done:"
echo -e " ${YELLOW}deactivate${NC}"
echo -e "\nTo run the CTC tests:"
echo -e " ${YELLOW}cd $SCRIPT_DIR/src${NC}"
echo -e " ${YELLOW}python AV2CTCTest.py -f encode ...${NC}"
echo -e " ${YELLOW}python ConvexHullTest.py -f convexhull ...${NC}"
echo -e "\n${GREEN}==============================================================================${NC}"
}
# Main execution
check_python
create_venv
install_dependencies
print_summary