137 lines
3.7 KiB
Bash
137 lines
3.7 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
|
REPO_ROOT="${REPO_ROOT:-$(cd "$SCRIPT_DIR/../../.." && pwd)}"
|
||
|
|
|
||
|
|
source "$REPO_ROOT/scripts/lib/retry.sh"
|
||
|
|
|
||
|
|
echo "::group::Installing macOS dependencies"
|
||
|
|
|
||
|
|
if [[ -d "/opt/homebrew/bin" ]]; then
|
||
|
|
export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:${PATH}"
|
||
|
|
echo "/opt/homebrew/bin" >>"$GITHUB_PATH"
|
||
|
|
echo "/opt/homebrew/sbin" >>"$GITHUB_PATH"
|
||
|
|
fi
|
||
|
|
if [[ -d "/usr/local/bin" ]]; then
|
||
|
|
export PATH="/usr/local/bin:/usr/local/sbin:${PATH}"
|
||
|
|
echo "/usr/local/bin" >>"$GITHUB_PATH"
|
||
|
|
echo "/usr/local/sbin" >>"$GITHUB_PATH"
|
||
|
|
fi
|
||
|
|
|
||
|
|
if ! brew list cmake &>/dev/null; then
|
||
|
|
echo "Installing CMake..."
|
||
|
|
retry_with_backoff brew install cmake || {
|
||
|
|
echo "::error::Failed to install CMake after retries"
|
||
|
|
exit 1
|
||
|
|
}
|
||
|
|
else
|
||
|
|
echo "✓ CMake already installed"
|
||
|
|
fi
|
||
|
|
|
||
|
|
if ! command -v cmake >/dev/null 2>&1; then
|
||
|
|
echo "CMake not on PATH after install; attempting brew link..."
|
||
|
|
brew link --overwrite cmake >/dev/null 2>&1 || true
|
||
|
|
fi
|
||
|
|
|
||
|
|
if ! brew list tesseract &>/dev/null; then
|
||
|
|
echo "Installing Tesseract..."
|
||
|
|
retry_with_backoff brew install tesseract || {
|
||
|
|
echo "::error::Failed to install Tesseract after retries"
|
||
|
|
exit 1
|
||
|
|
}
|
||
|
|
else
|
||
|
|
echo "✓ Tesseract already installed"
|
||
|
|
fi
|
||
|
|
|
||
|
|
if ! command -v tesseract >/dev/null 2>&1; then
|
||
|
|
echo "Tesseract not on PATH after install; attempting brew link..."
|
||
|
|
brew link --overwrite tesseract >/dev/null 2>&1 || true
|
||
|
|
fi
|
||
|
|
|
||
|
|
if ! brew list tesseract-lang &>/dev/null; then
|
||
|
|
echo "Installing Tesseract language packs..."
|
||
|
|
retry_with_backoff brew install tesseract-lang || {
|
||
|
|
echo "::warning::Failed to install tesseract-lang, some languages may be unavailable"
|
||
|
|
}
|
||
|
|
else
|
||
|
|
echo "✓ Tesseract language packs already installed"
|
||
|
|
fi
|
||
|
|
|
||
|
|
if ! brew list libmagic &>/dev/null; then
|
||
|
|
echo "Installing libmagic..."
|
||
|
|
retry_with_backoff brew install libmagic || {
|
||
|
|
echo "::warning::Failed to install libmagic after retries"
|
||
|
|
}
|
||
|
|
else
|
||
|
|
echo "✓ libmagic already installed"
|
||
|
|
fi
|
||
|
|
|
||
|
|
if ! brew list php &>/dev/null; then
|
||
|
|
echo "Installing PHP..."
|
||
|
|
retry_with_backoff brew install php || {
|
||
|
|
echo "::error::Failed to install PHP after retries"
|
||
|
|
exit 1
|
||
|
|
}
|
||
|
|
else
|
||
|
|
echo "✓ PHP already installed"
|
||
|
|
fi
|
||
|
|
|
||
|
|
if ! command -v php >/dev/null 2>&1; then
|
||
|
|
echo "PHP not on PATH after install; attempting brew link..."
|
||
|
|
brew link --overwrite php >/dev/null 2>&1 || true
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "::endgroup::"
|
||
|
|
|
||
|
|
echo "::group::Verifying macOS installations"
|
||
|
|
|
||
|
|
echo "CMake:"
|
||
|
|
if command -v cmake >/dev/null 2>&1; then
|
||
|
|
cmake --version | head -1
|
||
|
|
# Export CMAKE environment variable for immediate availability in build scripts
|
||
|
|
CMAKE_FULL_PATH="$(command -v cmake)"
|
||
|
|
if [[ -n "$GITHUB_ENV" ]]; then
|
||
|
|
echo "CMAKE=$CMAKE_FULL_PATH" >>"$GITHUB_ENV"
|
||
|
|
echo "✓ Set CMAKE=$CMAKE_FULL_PATH in GITHUB_ENV"
|
||
|
|
fi
|
||
|
|
# Also add cmake binary directory to GITHUB_PATH for subsequent steps
|
||
|
|
CMAKE_BIN="$(dirname "$CMAKE_FULL_PATH")"
|
||
|
|
if [[ -n "$GITHUB_PATH" && -d "$CMAKE_BIN" ]]; then
|
||
|
|
echo "$CMAKE_BIN" >>"$GITHUB_PATH"
|
||
|
|
echo "✓ Added cmake directory to GITHUB_PATH: $CMAKE_BIN"
|
||
|
|
fi
|
||
|
|
else
|
||
|
|
echo "::error::CMake not found on PATH after installation"
|
||
|
|
echo "PATH=$PATH"
|
||
|
|
brew --prefix cmake 2>/dev/null || true
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "Tesseract:"
|
||
|
|
if command -v tesseract >/dev/null 2>&1; then
|
||
|
|
tesseract --version | head -1
|
||
|
|
else
|
||
|
|
echo "::error::Tesseract not found on PATH after installation"
|
||
|
|
echo "PATH=$PATH"
|
||
|
|
brew --prefix tesseract 2>/dev/null || true
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "Available languages:"
|
||
|
|
tesseract --list-langs | head -5
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "PHP:"
|
||
|
|
if command -v php >/dev/null 2>&1; then
|
||
|
|
php --version | head -1
|
||
|
|
else
|
||
|
|
echo "::error::PHP not found on PATH after installation"
|
||
|
|
echo "PATH=$PATH"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "::endgroup::"
|