2023-08-29 16:01:04 -07:00
|
|
|
#!/usr/bin/env bash
|
2022-01-07 15:15:18 -08:00
|
|
|
set -e
|
2020-08-10 00:44:24 -07:00
|
|
|
|
2021-12-31 19:29:38 -08:00
|
|
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
|
|
|
|
ROOT="$(cd $DIR/../ && pwd)"
|
2022-02-23 04:04:50 -08:00
|
|
|
ARCH=$(uname -m)
|
|
|
|
|
|
2024-12-14 23:10:04 -08:00
|
|
|
# homebrew update is slow
|
|
|
|
|
export HOMEBREW_NO_AUTO_UPDATE=1
|
|
|
|
|
|
2022-02-23 04:04:50 -08:00
|
|
|
if [[ $SHELL == "/bin/zsh" ]]; then
|
|
|
|
|
RC_FILE="$HOME/.zshrc"
|
|
|
|
|
elif [[ $SHELL == "/bin/bash" ]]; then
|
2023-07-27 00:31:42 -07:00
|
|
|
RC_FILE="$HOME/.bash_profile"
|
2022-02-23 04:04:50 -08:00
|
|
|
fi
|
2021-10-11 01:03:56 +02:00
|
|
|
|
2021-01-18 17:28:30 -08:00
|
|
|
# Install brew if required
|
2020-10-16 20:12:44 +02:00
|
|
|
if [[ $(command -v brew) == "" ]]; then
|
2024-06-10 17:19:01 -07:00
|
|
|
echo "Installing Homebrew"
|
2024-07-29 23:46:13 +03:00
|
|
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
2022-01-07 15:15:18 -08:00
|
|
|
echo "[ ] installed brew t=$SECONDS"
|
2022-02-23 04:04:50 -08:00
|
|
|
|
|
|
|
|
# make brew available now
|
|
|
|
|
if [[ $ARCH == "x86_64" ]]; then
|
2024-07-29 23:46:13 +03:00
|
|
|
echo 'eval "$(/usr/local/bin/brew shellenv)"' >> $RC_FILE
|
|
|
|
|
eval "$(/usr/local/bin/brew shellenv)"
|
2022-02-23 04:04:50 -08:00
|
|
|
else
|
2024-07-29 23:46:13 +03:00
|
|
|
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> $RC_FILE
|
|
|
|
|
eval "$(/opt/homebrew/bin/brew shellenv)"
|
2022-02-23 04:04:50 -08:00
|
|
|
fi
|
2025-03-20 20:45:41 -07:00
|
|
|
else
|
|
|
|
|
brew up
|
2020-10-16 20:12:44 +02:00
|
|
|
fi
|
2020-08-10 00:44:24 -07:00
|
|
|
|
2021-01-18 17:28:30 -08:00
|
|
|
brew bundle --file=- <<-EOS
|
2021-12-31 10:08:34 -08:00
|
|
|
brew "git-lfs"
|
2021-01-18 17:28:30 -08:00
|
|
|
brew "capnp"
|
|
|
|
|
brew "coreutils"
|
|
|
|
|
brew "eigen"
|
2025-09-16 14:25:18 -07:00
|
|
|
brew "ffmpeg"
|
2021-01-18 17:28:30 -08:00
|
|
|
brew "glfw"
|
|
|
|
|
brew "libusb"
|
|
|
|
|
brew "libtool"
|
2025-07-12 00:52:18 -07:00
|
|
|
brew "llvm"
|
2023-04-19 22:31:19 +02:00
|
|
|
brew "openssl@3.0"
|
2021-03-09 19:37:17 -08:00
|
|
|
brew "qt@5"
|
2021-01-18 17:28:30 -08:00
|
|
|
brew "zeromq"
|
2024-11-19 10:40:21 -08:00
|
|
|
cask "gcc-arm-embedded"
|
2023-07-26 23:08:23 -07:00
|
|
|
brew "portaudio"
|
2024-07-08 19:42:26 -04:00
|
|
|
brew "gcc@13"
|
2021-01-18 17:28:30 -08:00
|
|
|
EOS
|
2021-01-18 16:17:23 +01:00
|
|
|
|
2022-01-07 15:15:18 -08:00
|
|
|
echo "[ ] finished brew install t=$SECONDS"
|
|
|
|
|
|
2022-02-23 04:04:50 -08:00
|
|
|
BREW_PREFIX=$(brew --prefix)
|
|
|
|
|
|
|
|
|
|
# archive backend tools for pip dependencies
|
|
|
|
|
export LDFLAGS="$LDFLAGS -L${BREW_PREFIX}/opt/zlib/lib"
|
|
|
|
|
export LDFLAGS="$LDFLAGS -L${BREW_PREFIX}/opt/bzip2/lib"
|
|
|
|
|
export CPPFLAGS="$CPPFLAGS -I${BREW_PREFIX}/opt/zlib/include"
|
|
|
|
|
export CPPFLAGS="$CPPFLAGS -I${BREW_PREFIX}/opt/bzip2/include"
|
2020-08-15 11:03:55 +10:00
|
|
|
|
2022-02-23 04:04:50 -08:00
|
|
|
# pycurl curl/openssl backend dependencies
|
|
|
|
|
export LDFLAGS="$LDFLAGS -L${BREW_PREFIX}/opt/openssl@3/lib"
|
|
|
|
|
export CPPFLAGS="$CPPFLAGS -I${BREW_PREFIX}/opt/openssl@3/include"
|
2023-06-21 22:14:20 +02:00
|
|
|
export PYCURL_CURL_CONFIG=/usr/bin/curl-config
|
2022-02-23 04:04:50 -08:00
|
|
|
export PYCURL_SSL_LIBRARY=openssl
|
2021-03-31 00:45:28 +02:00
|
|
|
|
2022-01-02 14:47:16 -08:00
|
|
|
# install python dependencies
|
2023-08-11 20:05:44 -07:00
|
|
|
$DIR/install_python_dependencies.sh
|
2022-01-07 15:15:18 -08:00
|
|
|
echo "[ ] installed python dependencies t=$SECONDS"
|
|
|
|
|
|
2023-09-11 17:00:08 -07:00
|
|
|
# brew does not link qt5 by default
|
|
|
|
|
# check if qt5 can be linked, if not, prompt the user to link it
|
|
|
|
|
QT_BIN_LOCATION="$(command -v lupdate || :)"
|
|
|
|
|
if [ -n "$QT_BIN_LOCATION" ]; then
|
|
|
|
|
# if qt6 is linked, prompt the user to unlink it and link the right version
|
|
|
|
|
QT_BIN_VERSION="$(lupdate -version | awk '{print $NF}')"
|
|
|
|
|
if [[ ! "$QT_BIN_VERSION" =~ 5\.[0-9]+\.[0-9]+ ]]; then
|
|
|
|
|
echo
|
|
|
|
|
echo "lupdate/lrelease available at PATH is $QT_BIN_VERSION"
|
|
|
|
|
if [[ "$QT_BIN_LOCATION" == "$(brew --prefix)/"* ]]; then
|
|
|
|
|
echo "Run the following command to link qt5:"
|
|
|
|
|
echo "brew unlink qt@6 && brew link qt@5"
|
|
|
|
|
else
|
|
|
|
|
echo "Remove conflicting qt entries from PATH and run the following command to link qt5:"
|
|
|
|
|
echo "brew link qt@5"
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
else
|
|
|
|
|
brew link qt@5
|
|
|
|
|
fi
|
|
|
|
|
|
2021-04-20 19:28:10 -05:00
|
|
|
echo
|
2022-01-07 15:15:18 -08:00
|
|
|
echo "---- OPENPILOT SETUP DONE ----"
|
|
|
|
|
echo "Open a new shell or configure your active shell env by running:"
|
2021-10-31 15:37:07 +00:00
|
|
|
echo "source $RC_FILE"
|