From 6aecd74e27c38f1315e0111e7c85e4d73a6bc207 Mon Sep 17 00:00:00 2001 From: kalomaze <66376113+kalomaze@users.noreply.github.com> Date: Tue, 25 Jul 2023 19:27:17 -0500 Subject: [PATCH] Auto install MacOS dependencies (Homebrew, Python 3.8, ffmpeg) --- run.sh | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 90 insertions(+), 1 deletion(-) diff --git a/run.sh b/run.sh index 9f7186e..0ebec6b 100644 --- a/run.sh +++ b/run.sh @@ -1,5 +1,11 @@ #!/bin/bash +# Define common paths for Homebrew +BREW_PATHS=( + "/usr/local/bin" + "/opt/homebrew/bin" +) + if [[ "$(uname)" == "Darwin" ]]; then # macOS specific env: export PYTORCH_ENABLE_MPS_FALLBACK=1 @@ -11,6 +17,89 @@ fi requirements_file="requirements.txt" +# Function to add a path to PATH +add_to_path() { + echo "Homebrew found in $1, which is not in your PATH." + read -p "Do you want to add this path to your PATH? (y/n) " -n 1 -r + echo + if [[ $REPLY =~ ^[Yy]$ ]]; then + echo "Adding $1 to PATH..." + + # Detect the shell and choose the right profile file + local shell_profile + if [[ $SHELL == *"/bash"* ]]; then + shell_profile="$HOME/.bashrc" + [[ ! -f "$shell_profile" ]] && shell_profile="$HOME/.bash_profile" + elif [[ $SHELL == *"/zsh"* ]]; then + shell_profile="$HOME/.zshrc" + else + echo "Unsupported shell. Please add the following line to your shell profile file manually:" + echo "export PATH=\"$PATH:$1\"" + return + fi + + # Add the export line to the shell profile file + echo "export PATH=\"$PATH:$1\"" >> "$shell_profile" + + # Source the shell profile file + source "$shell_profile" + fi +} + +# Check if Homebrew is in PATH +if ! command -v brew &> /dev/null; then + # If not, check common paths for Homebrew + echo "Homebrew not found in PATH. Checking common paths..." + for path in "${BREW_PATHS[@]}"; do + if [[ -x "$path/brew" ]]; then + add_to_path "$path" + fi + done +fi + +# Check again if Homebrew is in PATH +if ! command -v brew &> /dev/null; then + echo "Homebrew still not found. Attempting to install..." + INSTALL_OUTPUT=$(/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)") +fi + +# Verifying if Homebrew has been installed successfully +if command -v brew &> /dev/null; then + echo "Homebrew installed successfully." +else + echo "Homebrew installation failed." + exit 1 +fi + +# Extracting the commands to add Homebrew to the PATH +PATH_COMMANDS=$(echo "$INSTALL_OUTPUT" | awk '/Next steps:/,/Further documentation:/' | grep 'eval') + +echo "Extracted commands to add Homebrew to the PATH:" + +IFS=$'\n' # Set the Internal Field Separator to a new line +for cmd in $PATH_COMMANDS +do + echo "$cmd" +done + +# Asking the user if they want to execute them +echo "Do you want to automatically add Homebrew to your PATH by executing the commands above? (y/n)" +read -p "Are you sure you want to run these commands? (y/n) " -n 1 -r +echo +if [[ $REPLY =~ ^[Yy]$ ]]; then + IFS=$'\n' # Set the Internal Field Separator to a new line + for cmd in $PATH_COMMANDS + do + eval "$cmd" + done +fi + +# Installing ffmpeg with Homebrew +if [[ "$(uname)" == "Darwin" ]]; then + echo "Installing ffmpeg..." + brew install ffmpeg +fi + # Check if Python 3.8 is installed if ! command -v python3.8 &> /dev/null; then echo "Python 3.8 not found. Attempting to install..." @@ -42,4 +131,4 @@ else fi # Run the main script -python3.8 infer-web.py --pycmd python3.8 \ No newline at end of file +python3.8 infer-web.py --pycmd python3.8