#!/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 # Check if stdin is open if [ -t 0 ]; then INTERACTIVE=1 fi # Install common packages function install_ubuntu_common_requirements() { $SUDO apt-get update $SUDO apt-get install -y --no-install-recommends \ ca-certificates \ clang \ cppcheck \ build-essential \ gcc-arm-none-eabi \ liblzma-dev \ capnproto \ libcapnp-dev \ curl \ libcurl4-openssl-dev \ git \ git-lfs \ ffmpeg \ libavformat-dev \ libavcodec-dev \ libavdevice-dev \ libavutil-dev \ libavfilter-dev \ libbz2-dev \ libeigen3-dev \ libffi-dev \ libglew-dev \ libgles2-mesa-dev \ libglfw3-dev \ libglib2.0-0 \ libqt5charts5-dev \ libncurses5-dev \ libssl-dev \ libusb-1.0-0-dev \ libzmq3-dev \ libzstd-dev \ libsqlite3-dev \ libsystemd-dev \ locales \ opencl-headers \ ocl-icd-libopencl1 \ ocl-icd-opencl-dev \ portaudio19-dev \ qttools5-dev-tools \ libqt5svg5-dev \ libqt5serialbus5-dev \ libqt5x11extras5-dev \ libqt5opengl5-dev } # Install Ubuntu 24.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 \ python3-venv } # 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" | "kinetic" | "noble") 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" = "focal" ]; then install_ubuntu_focal_requirements else install_ubuntu_lts_latest_requirements fi esac if [[ -d "/etc/udev/rules.d/" ]]; then # Setup panda udev rules $SUDO tee /etc/udev/rules.d/12-panda_jungle.rules > /dev/null < /dev/null <