#!/usr/bin/env bash # Function to display help information display_help() { cat </dev/null; then echo python3.10 -m venv "$DIR/venv" python3.10 -m venv "$DIR/venv" elif command -v python3 >/dev/null; then echo python3 -m venv "$DIR/venv" python3 -m venv "$DIR/venv" else echo "Valid python3 or python3.10 binary not found." echo "Cannot proceed with the python steps." return 1 fi # Activate the virtual environment echo "Activate the virtual environment..." source "$DIR/venv/bin/activate" fi echo "setup python dependencies..." python -m pip install --require-virtualenv --no-input -q -q setuptools case "$OSTYPE" in "lin"*) python "$SCRIPT_DIR/setup/setup_linux.py" --platform-requirements-file=requirements.txt ;; "darwin"*) if [[ "$(uname -m)" == "arm64" ]]; then python "$SCRIPT_DIR/setup/setup_linux.py" --platform-requirements-file=requirements.txt else python "$SCRIPT_DIR/setup/setup_linux.py" --platform-requirements-file=requirements.txt fi ;; esac if [ -n "$VIRTUAL_ENV" ] && ! inDocker; then if command -v deactivate >/dev/null; then echo "Exiting Python virtual environment." deactivate else echo "deactivate command not found. Could still be in the Python virtual environment." fi fi } # This must be set after the getopts loop to account for $DIR changes. PARENT_DIR="$(dirname "${DIR}")" VENV_DIR="$DIR/venv" if [ -w "$PARENT_DIR" ] && [ ! -d "$DIR" ]; then echo "Creating install folder ${DIR}." mkdir "$DIR" fi if [ ! -w "$DIR" ]; then echo "We cannot write to ${DIR}." echo "Please ensure the install directory is accurate and you have the correct permissions." exit 1 fi isContainerOrPod() { local cgroup=/proc/1/cgroup test -f $cgroup && (grep -qE ':cpuset:/(docker|kubepods)' $cgroup || grep -q ':/docker/' $cgroup) } isDockerBuildkit() { local cgroup=/proc/1/cgroup test -f $cgroup && grep -q ':cpuset:/docker/buildkit' $cgroup } isDockerContainer() { [ -e /.dockerenv ] } inDocker() { if isContainerOrPod || isDockerBuildkit || isDockerContainer; then return 0 else return 1 fi } # Start OS-specific detection and work if [[ "$OSTYPE" == "lin"* ]]; then install_python_dependencies elif [[ "$OSTYPE" == "darwin"* ]]; then # The initial setup script to prep the environment on macOS # xformers has been omitted as that is for Nvidia GPUs only if ! install_python_dependencies; then echo "You may need to install Python. The command for this is brew install python@3.10." fi echo -e "Setup finished! Run sh start.sh to start." elif [[ "$OSTYPE" == "cygwin" ]]; then # Cygwin is a standalone suite of Linux utilities on Windows echo "This hasn't been validated on cygwin yet." elif [[ "$OSTYPE" == "msys" ]]; then # MinGW has the msys environment which is a standalone suite of Linux utilities on Windows # "git bash" on Windows may also be detected as msys. echo "This hasn't been validated in msys 'mingw' on Windows yet." fi