#!/bin/bash # Check build dependencies and provide installation instructions set -e echo "🔍 Checking build dependencies..." echo "" MISSING_DEPS=0 # Check Rust if command -v rustc >/dev/null 2>&1; then echo "✅ Rust: $(rustc --version)" else echo "❌ Rust: Not found" echo " Install: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh" MISSING_DEPS=$((MISSING_DEPS + 1)) fi # Check Node.js if command -v node >/dev/null 2>&1; then NODE_VERSION=$(node --version) NODE_MAJOR=$(echo "$NODE_VERSION" | cut -d. -f1 | tr -d 'v') if [ "$NODE_MAJOR" -ge 18 ]; then echo "✅ Node.js: $NODE_VERSION" else echo "⚠️ Node.js: $NODE_VERSION (need 18+)" MISSING_DEPS=$((MISSING_DEPS + 1)) fi else echo "❌ Node.js: Not found" echo " Install: https://nodejs.org/" MISSING_DEPS=$((MISSING_DEPS + 1)) fi # Check Docker (for macOS or non-Alpine Linux) if [[ "$OSTYPE" == "darwin"* ]] || [[ "$OSTYPE" == "linux-gnu"* ]]; then if command -v docker >/dev/null 2>&1; then if docker info >/dev/null 2>&1; then echo "✅ Docker: $(docker --version)" else echo "⚠️ Docker: Installed but daemon not running" echo " Start Docker Desktop or: sudo systemctl start docker" fi else echo "❌ Docker: Not found (required for macOS, optional for Linux)" if [[ "$OSTYPE" == "darwin"* ]]; then echo " Install: https://www.docker.com/products/docker-desktop" MISSING_DEPS=$((MISSING_DEPS + 1)) else echo " Install: https://docs.docker.com/get-docker/" fi fi fi # Check Alpine tools (for native Alpine Linux) if [ -f /etc/alpine-release ]; then echo "" echo "🏔️ Alpine Linux detected - checking native tools..." for tool in abuild alpine-conf syslinux xorriso; do if command -v $tool >/dev/null 2>&1; then echo "✅ $tool: Installed" else echo "❌ $tool: Not found" echo " Install: apk add alpine-sdk abuild alpine-conf syslinux xorriso" MISSING_DEPS=$((MISSING_DEPS + 1)) fi done fi echo "" if [ $MISSING_DEPS -eq 0 ]; then echo "✅ All dependencies satisfied!" exit 0 else echo "❌ Missing $MISSING_DEPS dependency/dependencies" echo " Please install missing dependencies before building" exit 1 fi