Co-authored-by: Jan Pazdziora <jpx-edgetx@adelton.com> Co-authored-by: Peter Feerick <5500713+pfeerick@users.noreply.github.com>
169 lines
5.3 KiB
Bash
Executable File
169 lines
5.3 KiB
Bash
Executable File
#! /usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
## Bash script to setup EdgeTX development environment on Ubuntu 24.04 running on bare-metal or in a virtual machine.
|
|
## Let it run as normal user and when asked, give sudo credentials
|
|
|
|
PAUSEAFTEREACHLINE="false"
|
|
STEP=1
|
|
# Parse argument(s)
|
|
for arg in "$@"
|
|
do
|
|
if [[ $arg == "--pause" ]]; then
|
|
PAUSEAFTEREACHLINE="true"
|
|
fi
|
|
done
|
|
|
|
if [[ $(lsb_release -rs) != "24.04" ]]; then
|
|
echo "ERROR: Not running on Ubuntu 24.04!"
|
|
echo "Terminating the script now."
|
|
exit 1
|
|
fi
|
|
|
|
echo "=== Step $((STEP++)): Updating Ubuntu package lists. Please provide sudo credentials, when asked ==="
|
|
sudo apt-get -y update
|
|
if [[ $PAUSEAFTEREACHLINE == "true" ]]; then
|
|
echo "Step finished. Please check the output above and press Enter to continue or Ctrl+C to stop."
|
|
read
|
|
fi
|
|
|
|
echo "=== Step $((STEP++)): Installing packages ==="
|
|
sudo apt-get -y install \
|
|
build-essential \
|
|
cmake \
|
|
gcc \
|
|
git \
|
|
lib32ncurses-dev \
|
|
lib32z1 \
|
|
libfox-1.6-dev \
|
|
libsdl2-dev \
|
|
software-properties-common \
|
|
wget \
|
|
zip \
|
|
python3-pip-whl \
|
|
python3-pil \
|
|
libgtest-dev \
|
|
python3-pip \
|
|
python3-tk \
|
|
python3-setuptools \
|
|
clang \
|
|
python3-clang \
|
|
libusb-1.0-0-dev \
|
|
stlink-tools \
|
|
openocd \
|
|
npm \
|
|
pv \
|
|
libclang-dev \
|
|
python-is-python3 \
|
|
openssl
|
|
if [[ $PAUSEAFTEREACHLINE == "true" ]]; then
|
|
echo "Step finished. Please check the output above and press Enter to continue or Ctrl+C to stop."
|
|
read
|
|
fi
|
|
|
|
echo "=== Step $((STEP++)): Installing Python packages ==="
|
|
# Python 3.11 introduced the managed environment breakage aka PEP 668.
|
|
# since we are building a self-contained environment the simple fix is to add --break-system-packages to all pip installs
|
|
python3 -m pip install --break-system-package -U setuptools && \
|
|
python3 -m pip install --break-system-package \
|
|
filelock \
|
|
asciitree \
|
|
jinja2 \
|
|
pillow \
|
|
clang==14.0.0 \
|
|
future \
|
|
lxml \
|
|
lz4 \
|
|
aqtinstall \
|
|
pyelftools
|
|
if [[ $PAUSEAFTEREACHLINE == "true" ]]; then
|
|
echo "Step finished. Please check the output above and press Enter to continue or Ctrl+C to stop."
|
|
read
|
|
fi
|
|
|
|
echo "=== Step $((STEP++)): Installing Qt ==="
|
|
/usr/local/bin/aqt install-qt --outputdir qt linux desktop 6.9.0 linux_gcc_64 -m qtmultimedia qtserialport
|
|
if [[ $PAUSEAFTEREACHLINE == "true" ]]; then
|
|
echo "Step finished. Please press Enter to continue or Ctrl+C to stop."
|
|
read
|
|
fi
|
|
|
|
echo "=== Step $((STEP++)): Fetching GNU Arm Embedded Toolchains ==="
|
|
# EdgeTX uses GNU Arm Embedded Toolchain version 14.2.rel1
|
|
wget -q --show-progress --progress=bar:force:noscroll https://developer.arm.com/-/media/Files/downloads/gnu/14.2.rel1/binrel/arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-eabi.tar.xz
|
|
if [[ $PAUSEAFTEREACHLINE == "true" ]]; then
|
|
echo "Step finished. Please press Enter to continue or Ctrl+C to stop."
|
|
read
|
|
fi
|
|
|
|
echo "=== Step $((STEP++)): Unpacking GNU Arm Embedded Toolchains ==="
|
|
pv arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-eabi.tar.xz | tar xJf -
|
|
if [[ $PAUSEAFTEREACHLINE == "true" ]]; then
|
|
echo "Step finished. Please press Enter to continue or Ctrl+C to stop."
|
|
read
|
|
fi
|
|
|
|
echo "=== Step $((STEP++)): Removing the downloaded archives ==="
|
|
rm arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-eabi.tar.xz
|
|
if [[ $PAUSEAFTEREACHLINE == "true" ]]; then
|
|
echo "Step finished. Please press Enter to continue or Ctrl+C to stop."
|
|
read
|
|
fi
|
|
|
|
echo "=== Step $((STEP++)): Moving GNU Arm Embedded Toolchains to /opt ==="
|
|
sudo mv arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-eabi /opt/gcc-arm-none-eabi
|
|
if [[ $PAUSEAFTEREACHLINE == "true" ]]; then
|
|
echo "Step finished. Please press Enter to continue or Ctrl+C to stop."
|
|
read
|
|
fi
|
|
|
|
echo "=== Step $((STEP++)): Adding GNU Arm Embedded Toolchain to PATH of current user ==="
|
|
echo 'export PATH="/opt/gcc-arm-none-eabi/bin:$PATH"' >> ~/.bashrc
|
|
if [[ $PAUSEAFTEREACHLINE == "true" ]]; then
|
|
echo "Step finished. Please press Enter to continue or Ctrl+C to stop."
|
|
read
|
|
fi
|
|
|
|
echo "=== Step $((STEP++)): Removing modemmanager (conflicts with DFU) ==="
|
|
sudo apt-get -y remove modemmanager
|
|
if [[ $PAUSEAFTEREACHLINE == "true" ]]; then
|
|
echo "Step finished. Please check the output above and press Enter to continue or Ctrl+C to stop."
|
|
read
|
|
fi
|
|
|
|
echo "=== Step $((STEP++)): Fetching USB DFU host utility ==="
|
|
wget -q --show-progress --progress=bar:force:noscroll http://dfu-util.sourceforge.net/releases/dfu-util-0.11.tar.gz
|
|
if [[ $PAUSEAFTEREACHLINE == "true" ]]; then
|
|
echo "Step finished. Please check the output above and press Enter to continue or Ctrl+C to stop."
|
|
read
|
|
fi
|
|
|
|
echo "=== Step $((STEP++)): Unpacking USB DFU host utility ==="
|
|
pv dfu-util-0.11.tar.gz | tar xzf -
|
|
if [[ $PAUSEAFTEREACHLINE == "true" ]]; then
|
|
echo "Step finished. Please check the output above and press Enter to continue or Ctrl+C to stop."
|
|
read
|
|
fi
|
|
|
|
echo "=== Step $((STEP++)): Building and Installing USB DFU host utility ==="
|
|
cd dfu-util-0.11/
|
|
./configure
|
|
make
|
|
sudo make install
|
|
cd ..
|
|
if [[ $PAUSEAFTEREACHLINE == "true" ]]; then
|
|
echo "Step finished. Please check the output above and press Enter to continue or Ctrl+C to stop."
|
|
read
|
|
fi
|
|
|
|
echo "=== Step $((STEP++)): Removing the downloaded archive and build folder of USB DFU host utility ==="
|
|
rm dfu-util-0.11.tar.gz
|
|
rm -rf dfu-util-0.11
|
|
if [[ $PAUSEAFTEREACHLINE == "true" ]]; then
|
|
echo "Step finished."
|
|
fi
|
|
|
|
echo "Finished setting up EdgeTX development environment."
|
|
echo "Please execute: source ~/.bashrc"
|