|
|
|
@ -1,5 +1,20 @@
@@ -1,5 +1,20 @@
|
|
|
|
|
#! /usr/bin/env bash |
|
|
|
|
|
|
|
|
|
INSTALL_NUTTX="true" |
|
|
|
|
INSTALL_SIM="true" |
|
|
|
|
|
|
|
|
|
# Parse arguments |
|
|
|
|
for arg in "$@" |
|
|
|
|
do |
|
|
|
|
if [[ $arg == "--no-nuttx" ]]; then |
|
|
|
|
INSTALL_NUTTX="false" |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
if [[ $arg == "--no-sim-tools" ]]; then |
|
|
|
|
INSTALL_SIM="false" |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
done |
|
|
|
|
|
|
|
|
|
# detect if running in docker |
|
|
|
|
if [ -f /.dockerenv ]; then |
|
|
|
@ -34,11 +49,15 @@ fi
@@ -34,11 +49,15 @@ fi
|
|
|
|
|
|
|
|
|
|
export DEBIAN_FRONTEND=noninteractive |
|
|
|
|
|
|
|
|
|
echo "Installing PX4 general dependencies" |
|
|
|
|
|
|
|
|
|
sudo apt-get update -yy --quiet |
|
|
|
|
sudo apt-get -yy --quiet --no-install-recommends install \ |
|
|
|
|
astyle \ |
|
|
|
|
bzip2 \ |
|
|
|
|
build-essential \ |
|
|
|
|
ccache \ |
|
|
|
|
clang \ |
|
|
|
|
clang-tidy \ |
|
|
|
|
cmake \ |
|
|
|
|
cppcheck \ |
|
|
|
|
doxygen \ |
|
|
|
@ -50,33 +69,94 @@ sudo apt-get -yy --quiet --no-install-recommends install \
@@ -50,33 +69,94 @@ sudo apt-get -yy --quiet --no-install-recommends install \
|
|
|
|
|
lcov \ |
|
|
|
|
make \ |
|
|
|
|
ninja-build \ |
|
|
|
|
python-pip \ |
|
|
|
|
python-pygments \ |
|
|
|
|
python-setuptools \ |
|
|
|
|
python3-pip \ |
|
|
|
|
python3-pygments \ |
|
|
|
|
python3-setuptools \ |
|
|
|
|
rsync \ |
|
|
|
|
shellcheck \ |
|
|
|
|
unzip \ |
|
|
|
|
wget \ |
|
|
|
|
xsltproc \ |
|
|
|
|
zip |
|
|
|
|
zip \ |
|
|
|
|
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# python dependencies |
|
|
|
|
if [ -f /.dockerenv ]; then |
|
|
|
|
# in docker install requirements system wide |
|
|
|
|
sudo python -m pip install --upgrade pip setuptools wheel |
|
|
|
|
sudo python -m pip install -r ${DIR}/requirements.txt |
|
|
|
|
else |
|
|
|
|
# otherwise only install for the user |
|
|
|
|
python -m pip install --user --upgrade pip setuptools wheel |
|
|
|
|
python -m pip install --user -r ${DIR}/requirements.txt |
|
|
|
|
echo "Installing PX4 Python dependencies" |
|
|
|
|
|
|
|
|
|
# TODO: deprecate python 2 |
|
|
|
|
sudo python -m pip install --upgrade pip setuptools wheel |
|
|
|
|
sudo python -m pip install -r ${DIR}/requirements.txt |
|
|
|
|
|
|
|
|
|
sudo python3 -m pip install --upgrade pip setuptools wheel |
|
|
|
|
sudo python3 -m pip install -r ${DIR}/requirements.txt |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# NuttX toolchain (arm-none-eabi-gcc) |
|
|
|
|
if [[ $INSTALL_NUTTX == "true" ]]; then |
|
|
|
|
|
|
|
|
|
echo "Installing NuttX dependencies" |
|
|
|
|
|
|
|
|
|
sudo apt-get -yy --quiet --no-install-recommends install \ |
|
|
|
|
autoconf \ |
|
|
|
|
automake \ |
|
|
|
|
bison \ |
|
|
|
|
bzip2 \ |
|
|
|
|
flex \ |
|
|
|
|
gdb-multiarch \ |
|
|
|
|
gperf \ |
|
|
|
|
libncurses-dev \ |
|
|
|
|
libtool \ |
|
|
|
|
pkg-config \ |
|
|
|
|
vim-common \ |
|
|
|
|
; |
|
|
|
|
|
|
|
|
|
# add user to dialout group (serial port access) |
|
|
|
|
sudo usermod -a -G dialout $USER |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# arm-none-eabi-gcc |
|
|
|
|
NUTTX_GCC_VERSION="7-2017-q4-major" |
|
|
|
|
|
|
|
|
|
GCC_VER_STR=$(arm-none-eabi-gcc --version) |
|
|
|
|
STATUSRETVAL=$(echo $GCC_VER_STR | grep -c "${NUTTX_GCC_VERSION}") |
|
|
|
|
|
|
|
|
|
if [ $STATUSRETVAL -eq "1" ]; then |
|
|
|
|
echo "arm-none-eabi-gcc-${NUTTX_GCC_VERSION} found, skipping installation" |
|
|
|
|
|
|
|
|
|
else |
|
|
|
|
echo "Installing arm-none-eabi-gcc-${NUTTX_GCC_VERSION}"; |
|
|
|
|
wget -O /tmp/gcc-arm-none-eabi-${NUTTX_GCC_VERSION}-linux.tar.bz2 https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/7-2017q4/gcc-arm-none-eabi-${NUTTX_GCC_VERSION}-linux.tar.bz2 && \ |
|
|
|
|
sudo tar -jxf /tmp/gcc-arm-none-eabi-${NUTTX_GCC_VERSION}-linux.tar.bz2 -C /opt/; |
|
|
|
|
|
|
|
|
|
# add arm-none-eabi-gcc to user's PATH |
|
|
|
|
exportline="export PATH=/opt/gcc-arm-none-eabi-${NUTTX_GCC_VERSION}/bin:\$PATH" |
|
|
|
|
|
|
|
|
|
if grep -Fxq "$exportline" $HOME/.profile; |
|
|
|
|
then |
|
|
|
|
echo "${NUTTX_GCC_VERSION} path already set."; |
|
|
|
|
else |
|
|
|
|
echo $exportline >> $HOME/.profile; |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# java (jmavsim or fastrtps) |
|
|
|
|
# TODO: only install when necessary |
|
|
|
|
sudo apt-get -y --quiet --no-install-recommends install \ |
|
|
|
|
default-jre-headless \ |
|
|
|
|
default-jdk-headless |
|
|
|
|
# Simulation tools |
|
|
|
|
if [[ $INSTALL_SIM == "true" ]]; then |
|
|
|
|
|
|
|
|
|
echo "Installing PX4 simulation dependencies" |
|
|
|
|
|
|
|
|
|
# TODO: nuttx, raspberrypi, armhf generic |
|
|
|
|
# java (jmavsim or fastrtps) |
|
|
|
|
sudo apt-get -yy --quiet --no-install-recommends install \ |
|
|
|
|
ant \ |
|
|
|
|
default-jre-headless \ |
|
|
|
|
default-jdk-headless \ |
|
|
|
|
; |
|
|
|
|
|
|
|
|
|
# Gazebo |
|
|
|
|
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list' |
|
|
|
|
sudo apt-get update -yy --quiet |
|
|
|
|
sudo apt-get -yy --quiet --no-install-recommends install gazebo9 |
|
|
|
|
|
|
|
|
|
# TODO: gazebo or ROS optional |
|
|
|
|
fi |
|
|
|
|