This repository has been archived by the owner on Dec 16, 2023. It is now read-only.
forked from commaai/openpilot
-
Notifications
You must be signed in to change notification settings - Fork 32
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
221 additions
and
0 deletions.
There are no files selected for viewing
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
#!/usr/bin/env bash | ||
set -e | ||
|
||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" | ||
ROOT=$DIR/../ | ||
cd $ROOT | ||
|
||
RC_FILE="${HOME}/.$(basename ${SHELL})rc" | ||
if [ "$(uname)" == "Darwin" ] && [ $SHELL == "/bin/bash" ]; then | ||
RC_FILE="$HOME/.bash_profile" | ||
fi | ||
|
||
if ! command -v "pyenv" > /dev/null 2>&1; then | ||
echo "pyenv install ..." | ||
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash | ||
PYENV_PATH_SETUP="export PATH=\$HOME/.pyenv/bin:\$HOME/.pyenv/shims:\$PATH" | ||
fi | ||
|
||
if [ -z "$PYENV_SHELL" ] || [ -n "$PYENV_PATH_SETUP" ]; then | ||
echo "pyenvrc setup ..." | ||
cat <<EOF > "${HOME}/.pyenvrc" | ||
if [ -z "\$PYENV_ROOT" ]; then | ||
$PYENV_PATH_SETUP | ||
export PYENV_ROOT="\$HOME/.pyenv" | ||
eval "\$(pyenv init -)" | ||
eval "\$(pyenv virtualenv-init -)" | ||
fi | ||
EOF | ||
|
||
SOURCE_PYENVRC="source ~/.pyenvrc" | ||
if ! grep "^$SOURCE_PYENVRC$" $RC_FILE > /dev/null; then | ||
printf "\n$SOURCE_PYENVRC\n" >> $RC_FILE | ||
fi | ||
|
||
eval "$SOURCE_PYENVRC" | ||
# $(pyenv init -) produces a function which is broken on bash 3.2 which ships on macOS | ||
if [ $(uname) == "Darwin" ]; then | ||
unset -f pyenv | ||
fi | ||
fi | ||
|
||
export MAKEFLAGS="-j$(nproc)" | ||
|
||
PYENV_PYTHON_VERSION=$(cat $ROOT/.python-version) | ||
if ! pyenv prefix ${PYENV_PYTHON_VERSION} &> /dev/null; then | ||
# no pyenv update on mac | ||
if [ "$(uname)" == "Linux" ]; then | ||
echo "pyenv update ..." | ||
pyenv update | ||
fi | ||
echo "python ${PYENV_PYTHON_VERSION} install ..." | ||
CONFIGURE_OPTS="--enable-shared" pyenv install -f ${PYENV_PYTHON_VERSION} | ||
fi | ||
eval "$(pyenv init --path)" | ||
|
||
echo "update pip" | ||
pip install pip==23.2.1 | ||
pip install poetry==1.5.1 | ||
|
||
poetry config virtualenvs.prefer-active-python true --local | ||
poetry config virtualenvs.in-project true --local | ||
|
||
echo "PYTHONPATH=${PWD}" > $ROOT/.env | ||
if [[ "$(uname)" == 'Darwin' ]]; then | ||
echo "# msgq doesn't work on mac" >> $ROOT/.env | ||
echo "export ZMQ=1" >> $ROOT/.env | ||
echo "export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES" >> $ROOT/.env | ||
fi | ||
|
||
poetry self add poetry-dotenv-plugin@^0.1.0 | ||
|
||
echo "pip packages install..." | ||
poetry install --no-cache --no-root | ||
pyenv rehash | ||
|
||
[ -n "$POETRY_VIRTUALENVS_CREATE" ] && RUN="" || RUN="poetry run" | ||
|
||
if [ "$(uname)" != "Darwin" ]; then | ||
echo "pre-commit hooks install..." | ||
shopt -s nullglob | ||
for f in .pre-commit-config.yaml */.pre-commit-config.yaml; do | ||
if [ -e "$ROOT/$(dirname $f)/.git" ]; then | ||
$RUN pre-commit install -c "$f" | ||
fi | ||
done | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
#!/usr/bin/env bash | ||
set -e | ||
|
||
SUDO="" | ||
|
||
# Use sudo if not root | ||
if [[ ! $(id -u) -eq 0 ]]; then | ||
if [[ -z $(which sudo) ]]; then | ||
echo "Please install sudo or run as root" | ||
exit 1 | ||
fi | ||
SUDO="sudo" | ||
fi | ||
|
||
# Install packages present in all supported versions of Ubuntu | ||
function install_ubuntu_common_requirements() { | ||
$SUDO apt-get update | ||
$SUDO apt-get install -y --no-install-recommends \ | ||
autoconf \ | ||
build-essential \ | ||
ca-certificates \ | ||
casync \ | ||
clang \ | ||
cmake \ | ||
make \ | ||
cppcheck \ | ||
libtool \ | ||
gcc-arm-none-eabi \ | ||
bzip2 \ | ||
liblzma-dev \ | ||
libarchive-dev \ | ||
libbz2-dev \ | ||
capnproto \ | ||
libcapnp-dev \ | ||
curl \ | ||
libcurl4-openssl-dev \ | ||
git \ | ||
git-lfs \ | ||
ffmpeg \ | ||
libavformat-dev \ | ||
libavcodec-dev \ | ||
libavdevice-dev \ | ||
libavutil-dev \ | ||
libavfilter-dev \ | ||
libeigen3-dev \ | ||
libffi-dev \ | ||
libglew-dev \ | ||
libgles2-mesa-dev \ | ||
libglfw3-dev \ | ||
libglib2.0-0 \ | ||
libncurses5-dev \ | ||
libncursesw5-dev \ | ||
libomp-dev \ | ||
libopencv-dev \ | ||
libpng16-16 \ | ||
libportaudio2 \ | ||
libssl-dev \ | ||
libsqlite3-dev \ | ||
libusb-1.0-0-dev \ | ||
libzmq3-dev \ | ||
libsystemd-dev \ | ||
locales \ | ||
opencl-headers \ | ||
ocl-icd-libopencl1 \ | ||
ocl-icd-opencl-dev \ | ||
clinfo \ | ||
portaudio19-dev \ | ||
qml-module-qtquick2 \ | ||
qtmultimedia5-dev \ | ||
qtlocation5-dev \ | ||
qtpositioning5-dev \ | ||
qttools5-dev-tools \ | ||
libqt5sql5-sqlite \ | ||
libqt5svg5-dev \ | ||
libqt5charts5-dev \ | ||
libqt5serialbus5-dev \ | ||
libqt5x11extras5-dev \ | ||
libreadline-dev \ | ||
libdw1 \ | ||
valgrind | ||
} | ||
|
||
# Install Ubuntu 22.04 LTS packages | ||
function install_ubuntu_lts_latest_requirements() { | ||
install_ubuntu_common_requirements | ||
|
||
$SUDO apt-get install -y --no-install-recommends \ | ||
g++-12 \ | ||
qtbase5-dev \ | ||
qtchooser \ | ||
qt5-qmake \ | ||
qtbase5-dev-tools \ | ||
python3-dev | ||
} | ||
|
||
# Install Ubuntu 20.04 packages | ||
function install_ubuntu_focal_requirements() { | ||
install_ubuntu_common_requirements | ||
|
||
$SUDO apt-get install -y --no-install-recommends \ | ||
libavresample-dev \ | ||
qt5-default \ | ||
python-dev | ||
} | ||
|
||
# Detect OS using /etc/os-release file | ||
if [ -f "/etc/os-release" ]; then | ||
source /etc/os-release | ||
case "$VERSION_CODENAME" in | ||
"jammy") | ||
install_ubuntu_lts_latest_requirements | ||
;; | ||
"kinetic") | ||
install_ubuntu_lts_latest_requirements | ||
;; | ||
"focal") | ||
install_ubuntu_focal_requirements | ||
;; | ||
*) | ||
echo "$ID $VERSION_ID is unsupported. This setup script is written for Ubuntu 20.04." | ||
read -p "Would you like to attempt installation anyway? " -n 1 -r | ||
echo "" | ||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then | ||
exit 1 | ||
fi | ||
if [ "$UBUNTU_CODENAME" = "jammy" ] || [ "$UBUNTU_CODENAME" = "kinetic" ]; then | ||
install_ubuntu_lts_latest_requirements | ||
else | ||
install_ubuntu_focal_requirements | ||
fi | ||
esac | ||
else | ||
echo "No /etc/os-release in the system" | ||
exit 1 | ||
fi |