Spaces:
Sleeping
Sleeping
| .PHONY: install test format lint all setup start stop restart restart-backend restart-force help docker-build docker-up docker-down docker-build-backend docker-build-frontend docker-restart-backend docker-restart-backend-fast docker-restart-backend-smart docker-restart-frontend docker-restart-all docker-check-cuda docker-use-gpu docker-use-cpu | |
| # Check for GPU flag file and set Docker Compose file accordingly | |
| ifeq ($(wildcard .gpu_selected),) | |
| # No GPU flag file found, use CPU configuration | |
| DOCKER_COMPOSE_FILE := docker-compose.yml | |
| else | |
| # GPU flag file found, use GPU configuration | |
| DOCKER_COMPOSE_FILE := docker-compose-gpu.yml | |
| endif | |
| # Detect operating system and set environment | |
| ifeq ($(OS),Windows_NT) | |
| # Set Windows variables | |
| WINDOWS := 1 | |
| # Set UTF-8 code page for Windows to display Unicode characters | |
| SET_UTF8 := $(shell chcp 65001 >nul 2>&1 || echo) | |
| # No need to check for Apple Silicon on Windows | |
| APPLE_SILICON := 0 | |
| # Define empty color codes for Windows to avoid display issues | |
| COLOR_CYAN := | |
| COLOR_RESET := | |
| COLOR_BOLD := | |
| COLOR_GRAY := | |
| COLOR_GREEN := | |
| COLOR_RED := | |
| else | |
| WINDOWS := 0 | |
| # Detect Apple Silicon on non-Windows systems | |
| ifeq ($(shell uname -s),Darwin) | |
| ifeq ($(shell uname -m),arm64) | |
| APPLE_SILICON := 1 | |
| # Set environment variables for Apple Silicon | |
| export DOCKER_BACKEND_DOCKERFILE=Dockerfile.backend.apple | |
| export PLATFORM=apple | |
| else | |
| APPLE_SILICON := 0 | |
| endif | |
| else | |
| APPLE_SILICON := 0 | |
| endif | |
| # Define ANSI color codes for Unix systems | |
| COLOR_CYAN := \033[0;36m | |
| COLOR_RESET := \033[0m | |
| COLOR_BOLD := \033[1m | |
| COLOR_GRAY := \033[0;90m | |
| COLOR_GREEN := \033[1;32m | |
| COLOR_RED := \033[1;31m | |
| endif | |
| # Default Docker Compose configuration (non-GPU) | |
| DOCKER_COMPOSE_FILE := docker-compose.yml | |
| # Show help message | |
| help: | |
| ifeq ($(WINDOWS),1) | |
| @echo. | |
| @echo ββββββββββββββββ βββββββ βββββββ ββββ ββββββββββ ββββ ββββββββββββ | |
| @echo ββββββββββββββββββββββββββββββββββββββ βββββββββββ βββββ βββββββββββββ | |
| @echo ββββββββββββββ βββ βββ βββββββββ ββββββ ββββββββββββββββββββββββββ | |
| @echo ββββββββββββββ βββ βββ ββββββββββββββββ ββββββββββββββββββββββββββ | |
| @echo ββββββββββββββββββββββββββββββββββββ ββββββββββββββ βββ βββ βββββββββββ | |
| @echo ββββββββββββββββ βββββββ βββββββ βββ ββββββββββββ βββ βββββββββββ | |
| @echo. | |
| @echo SECOND-ME MAKEFILE COMMANDS | |
| @echo ------------------------------ | |
| @echo. | |
| @echo LOCAL COMMANDS: | |
| @echo make setup - Complete installation | |
| @echo make start - Start all services | |
| @echo make stop - Stop all services | |
| @echo make restart - Restart all services | |
| @echo make restart-backend - Restart only backend service | |
| @echo make restart-force - Force restart and reset data | |
| @echo make status - Show status of all services | |
| @echo. | |
| @echo DOCKER COMMANDS: | |
| @echo make docker-build - Build all Docker images | |
| @echo make docker-up - Start all Docker containers | |
| @echo make docker-down - Stop all Docker containers | |
| @echo make docker-build-backend - Build only backend Docker image | |
| @echo make docker-build-frontend - Build only frontend Docker image | |
| @echo make docker-restart-backend - Restart only backend container | |
| @echo make docker-restart-backend-fast - Restart backend+cuda without rebuilding llama.cpp | |
| @echo make docker-restart-frontend - Restart only frontend container | |
| @echo make docker-restart-all - Restart all Docker containers | |
| @echo make docker-check-cuda - Check CUDA support in containers | |
| @echo make docker-use-gpu - Switch to GPU configuration | |
| @echo make docker-use-cpu - Switch to CPU-only configuration | |
| @echo. | |
| @echo All Available Commands: | |
| @echo make help - Show this help message | |
| @echo make install - Install project dependencies | |
| @echo make test - Run tests | |
| @echo make format - Format code | |
| @echo make lint - Check code style | |
| @echo make all - Run format, lint and test | |
| else | |
| @echo "$(COLOR_CYAN)" | |
| @echo ' ββββββββββββββββ βββββββ βββββββ ββββ ββββββββββ ββββ ββββββββββββ' | |
| @echo ' ββββββββββββββββββββββββββββββββββββββ βββββββββββ βββββ βββββββββββββ' | |
| @echo ' ββββββββββββββ βββ βββ βββββββββ ββββββ ββββββββββββββββββββββββββ ' | |
| @echo ' ββββββββββββββ βββ βββ ββββββββββββββββ ββββββββββββββββββββββββββ ' | |
| @echo ' ββββββββββββββββββββββββββββββββββββ ββββββββββββββ βββ βββ βββββββββββ' | |
| @echo ' ββββββββββββββββ βββββββ βββββββ βββ ββββββββββββ βββ βββββββββββ' | |
| @echo "$(COLOR_RESET)" | |
| @echo "$(COLOR_BOLD)Second-Me Makefile Commands$(COLOR_RESET)" | |
| @echo "$(COLOR_GRAY)$$(date)$(COLOR_RESET)\n" | |
| @echo "" | |
| @echo "$(COLOR_GREEN)βΆ LOCAL COMMANDS:$(COLOR_RESET)" | |
| @echo " make setup - Complete installation" | |
| @echo " make start - Start all services" | |
| @echo " make stop - Stop all services" | |
| @echo " make restart - Restart all services" | |
| @echo " make restart-backend - Restart only backend service" | |
| @echo " make restart-force - Force restart and reset data" | |
| @echo " make status - Show status of all services" | |
| @echo "" | |
| @echo "$(COLOR_GREEN)βΆ DOCKER COMMANDS:$(COLOR_RESET)" | |
| @echo " make docker-build - Build all Docker images" | |
| @echo " make docker-up - Start all Docker containers" | |
| @echo " make docker-down - Stop all Docker containers" | |
| @echo " make docker-build-backend - Build only backend Docker image" | |
| @echo " make docker-build-frontend - Build only frontend Docker image" | |
| @echo " make docker-restart-backend - Restart only backend container (with rebuild)" | |
| @echo " make docker-restart-backend-fast - Restart backend+cuda without rebuilding llama.cpp" | |
| @echo " make docker-restart-frontend - Restart only frontend container" | |
| @echo " make docker-restart-all - Restart all Docker containers" | |
| @echo " make docker-check-cuda - Check CUDA support in containers" | |
| @echo " make docker-use-gpu - Switch to GPU configuration" | |
| @echo " make docker-use-cpu - Switch to CPU-only configuration" | |
| @echo "" | |
| @echo "$(COLOR_BOLD)All Available Commands:$(COLOR_RESET)" | |
| @echo " make help - Show this help message" | |
| @echo " make install - Install project dependencies" | |
| @echo " make test - Run tests" | |
| @echo " make format - Format code" | |
| @echo " make lint - Check code style" | |
| @echo " make all - Run format, lint and test" | |
| @if [ "$(APPLE_SILICON)" = "1" ]; then \ | |
| echo ""; \ | |
| echo "$(COLOR_GREEN)βΆ PLATFORM INFORMATION:$(COLOR_RESET)"; \ | |
| echo " Apple Silicon detected - Docker commands will use PLATFORM=apple"; \ | |
| fi | |
| endif | |
| # Configuration switchers for Docker | |
| docker-use-gpu: | |
| @echo "Switching to GPU configuration..." | |
| ifeq ($(WINDOWS),1) | |
| @echo GPU mode enabled. Docker commands will use docker-compose-gpu.yml | |
| @echo gpu > .gpu_selected | |
| else | |
| @echo "$(COLOR_GREEN)GPU mode enabled. Docker commands will use docker-compose-gpu.yml$(COLOR_RESET)" | |
| @echo "gpu" > .gpu_selected | |
| endif | |
| docker-use-cpu: | |
| @echo "Switching to CPU-only configuration..." | |
| ifeq ($(WINDOWS),1) | |
| @echo CPU-only mode enabled. Docker commands will use docker-compose.yml | |
| @rm -f .gpu_selected | |
| else | |
| @echo "$(COLOR_GREEN)CPU-only mode enabled. Docker commands will use docker-compose.yml$(COLOR_RESET)" | |
| @rm -f .gpu_selected | |
| endif | |
| setup: | |
| ./scripts/setup.sh | |
| start: | |
| ./scripts/start.sh | |
| stop: | |
| ./scripts/stop.sh | |
| restart: | |
| ./scripts/restart.sh | |
| restart-backend: | |
| ./scripts/restart-backend.sh | |
| restart-force: | |
| ./scripts/restart-force.sh | |
| status: | |
| ./scripts/status.sh | |
| # Docker commands | |
| # Set Docker environment variable for all Docker commands | |
| docker-%: export IN_DOCKER_ENV=1 | |
| ifeq ($(OS),Windows_NT) | |
| DOCKER_COMPOSE_CMD := docker compose | |
| else | |
| DOCKER_COMPOSE_CMD := $(shell if command -v docker-compose >/dev/null 2>&1; then echo "docker-compose"; else echo "docker compose"; fi) | |
| endif | |
| docker-build: | |
| ifeq ($(WINDOWS),1) | |
| @echo "Prompting for CUDA preference..." | |
| @scripts\prompt_cuda.bat | |
| else | |
| @echo "Prompting for CUDA preference..." | |
| @chmod +x ./scripts/prompt_cuda.sh | |
| @./scripts/prompt_cuda.sh | |
| endif | |
| $(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) build | |
| docker-up: | |
| @echo "Building and starting Docker containers..." | |
| ifeq ($(WINDOWS),1) | |
| @echo "Prompting for CUDA preference..." | |
| @scripts\prompt_cuda.bat | |
| @echo "Checking CUDA preference..." | |
| @cmd /c "if exist .gpu_selected ( echo CUDA support detected, using GPU configuration... & docker compose -f docker-compose-gpu.yml build & docker compose -f docker-compose-gpu.yml up -d ) else ( echo No CUDA support selected, using CPU-only configuration... & docker compose -f docker-compose.yml build & docker compose -f docker-compose.yml up -d )" | |
| else | |
| @echo "Prompting for CUDA preference..." | |
| @chmod +x ./scripts/prompt_cuda.sh | |
| @./scripts/prompt_cuda.sh | |
| @echo "Checking CUDA preference..." | |
| @if [ -f .gpu_selected ]; then \ | |
| echo "CUDA support detected, using GPU configuration..."; \ | |
| $(DOCKER_COMPOSE_CMD) -f docker-compose-gpu.yml build; \ | |
| $(DOCKER_COMPOSE_CMD) -f docker-compose-gpu.yml up -d; \ | |
| else \ | |
| echo "No CUDA support selected, using CPU-only configuration..."; \ | |
| $(DOCKER_COMPOSE_CMD) -f docker-compose.yml build; \ | |
| $(DOCKER_COMPOSE_CMD) -f docker-compose.yml up -d; \ | |
| fi | |
| endif | |
| @echo "Container startup complete" | |
| @echo "Check CUDA support with: make docker-check-cuda" | |
| docker-down: | |
| $(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) down | |
| docker-build-backend: | |
| $(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) build backend | |
| docker-build-frontend: | |
| $(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) build frontend | |
| # Standard backend restart with complete rebuild | |
| docker-restart-backend: | |
| $(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) stop backend | |
| $(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) rm -f backend | |
| $(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) build backend || { echo "$(COLOR_RED)β Backend build failed! Aborting operation...$(COLOR_RESET)"; exit 1; } | |
| $(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) up -d backend | |
| # Fast backend restart: preserves llama.cpp build | |
| docker-restart-backend-fast: | |
| @echo "Smart restarting backend container (preserving llama.cpp build)..." | |
| @echo "Stopping backend container..." | |
| $(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) stop backend | |
| @echo "Removing backend container..." | |
| $(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) rm -f backend | |
| @echo "Building backend image with build-arg to skip llama.cpp build..." | |
| ifeq ($(wildcard .gpu_selected),) | |
| @echo "Using CPU configuration (docker-compose.yml)..." | |
| else | |
| @echo "Using GPU configuration (docker-compose-gpu.yml)..." | |
| endif | |
| $(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) build --build-arg SKIP_LLAMA_BUILD=true backend || { echo "$(COLOR_RED)β Backend build failed! Aborting operation...$(COLOR_RESET)"; exit 1; } | |
| @echo "Starting backend container..." | |
| $(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) up -d backend | |
| @echo "Backend container smart-restarted successfully" | |
| @echo "Check CUDA support with: make docker-check-cuda" | |
| docker-restart-frontend: | |
| $(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) stop frontend | |
| $(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) rm -f frontend | |
| $(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) build frontend || { echo "$(COLOR_RED)β Frontend build failed! Aborting operation...$(COLOR_RESET)"; exit 1; } | |
| $(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) up -d frontend | |
| docker-restart-all: | |
| $(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) stop | |
| $(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) rm -f | |
| $(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) build || { echo "$(COLOR_RED)β Build failed! Aborting operation...$(COLOR_RESET)"; exit 1; } | |
| $(DOCKER_COMPOSE_CMD) -f $(DOCKER_COMPOSE_FILE) up -d | |
| # New command to check CUDA support in containers | |
| docker-check-cuda: | |
| @echo "Checking CUDA support in Docker containers..." | |
| ifeq ($(WINDOWS),1) | |
| @echo Running CUDA support check in backend container | |
| @docker exec second-me-backend /app/check_gpu_support.sh || echo No GPU support detected in backend container | |
| else | |
| @echo "$(COLOR_CYAN)Running CUDA support check in backend container:$(COLOR_RESET)" | |
| @docker exec second-me-backend /app/check_gpu_support.sh || echo "$(COLOR_RED)No GPU support detected in backend container$(COLOR_RESET)" | |
| endif | |
| install: | |
| poetry install | |
| test: | |
| poetry run pytest tests | |
| format: | |
| poetry run ruff format lpm_kernel/ | |
| lint: | |
| poetry run ruff check lpm_kernel/ | |
| all: format lint test |