mirror of
https://github.com/CopterExpress/clover.git
synced 2026-05-26 11:43:25 +00:00
* builder: Use 64-bit Raspberry Pi OS * travis: Use 64-bit builder * builder: Don't try to install Melodic packages on Noetic * clover: Use package version 3, update dependencies * travis: Enable Noetic build * standalone_install: Auto-select Python, ROS distro * builder: Use variable substitution for ROS_DISTRO * builder: Add Noetic package definitions * builder: Use variable substitution for validation * aruco_pose, clover: Allow compiling against OpenCV 3 and 4 * builder: Add proper Noetic repository * builder: Don't force Tornado version Assume rosbridge_suite depends on the right one. * builder: Install packages for Python 3 * builder/test: Use Python3 interpreter for ROS tests TODO (?): add tests for Python2? * builder: Use Python 3 syntax for Python 3 tests * builder: Install rpi_ws281x for Python3 * standalone_install: Use proper Python for pytest * builder: Install espeak for python3 * builder: Use proper path for roscore * builder: Install rosdep, etc. for python3 * builder: Run Clever/Clover test with Python3 * builder: Use Python3 for Clever compat layer * builder: Enable OpenCV 4.2 repository * builder: Force versions for ROS packages that use OpenCV Also, hold their versions so that they don't get updated for no reason. * aruco_pose/draw: Replace OpenCV projection code with a rewrite * builder: Don't try to install compressed_transport twice * clover: Fix importing urllib for Python3 * aruco_pose, clover: Expose Python scripts through CMake * clover/selfcheck: Be more python3-compatible This is basically commita01d199890from buster-python3, not sure if it aged well. * roswww_static: Add python script installation * clover_blocks: Use Python3 syntax for exec * aruco_pose: Remove unused code * Melodic => Noetic in some docs * docs: add 0.22 migration article * docs: remove unneeded comment * docs: python 3 updates * docs: python 3 update in auto_setup article * docs: add ROS Noetic transition note * aruco.launch: add placement, length and map arguments * genmap.py: add -o argument for output file name * docs: use -o argument of genmap.py * simple_offboard: correctly check manual control timeout, separate it from kill switch check * blocks: force led_leds index to int * docs: update and fix 0.22 migration articles * blocks: fix set_leds with color-typed argument * aruco_gen: Open file in binary mode for Python3 compatibility * clover: Use proper variable in aruco.launch * led: change default number of leds to 72 * aruco_pose: Make sure there are no undefined symbols Also, compile in apriltag_quad_thresh.cpp - it contains some of the functions referenced in aruco.cpp, which would otherwise be undefined. * aruco_pose: Make vendored library compatible with older OpenCVs * aruco_pose, clover: Reduce the amount of OpenCV libs requested * aruco_pose, clover: Move subscriptions to the end of init * aruco_pose: Don't expose vendored library symbols * aruco_pose: Simplify dynamic parameter callback setting * builder: Build with debug symbols * clover: Attempt to respawn dying nodelets * Change Raspberry Pi OS to latest armhf, use packages.coex.tech as a source * Add CRYPTOGRAPHY_DONT_BUILD_RUST=1 * Fix Node.js installation * image: use older CMake (3.13.4-1) Fixing https://travis-ci.org/github/CopterExpress/clover/jobs/764367665#L6984 * image: update Raspberry Pi OS to 2021-03-04 * image: bring back moving ld.so.preload out of the way while building * Fix pthreads ld error * Try to fix pthreads ld error * Another attempt to fix pthreads ld error * Yet another attempt to fix pthreads ld error * Try to fix * Be verbose * Temporarily disable rc and camera_markers building * Fix standalone-install * Revert "Temporarily disable rc and camera_markers building" This reverts commite119220e91. * Try to fix * Try to fix * Revert "image: use older CMake (3.13.4-1)" This reverts commitdf28da0060. * Revert "Revert "image: use older CMake (3.13.4-1)"" This reverts commita28c774e8f. * Verbosity * Debugging * More debugging * Display all CMake variables * Try to fix * Another try to fix * Revert "Another try to fix" This reverts commit5a4c3a0da7. * Another try to fix * And another * And yet another * Continue... * Cleanup * Sources lists cleanup * More cleanup * Restore .git directory in clover repo * Fix building documentation * Fix documentation building in image * Trigger build to update ws281x package * Test * Disable unneeded hack * Disable hack * image: add cmake-modules package * www: add viewing clover.err file from web interface * Remove hacks * Show nodelet version * docs: add packages article * image: add image-view package for recording video from topics * Minor fix * CI: add Docker authentication on image build * CI: fix Bash syntax * CI: fix authentication in Docker * CI: move Melodic build and editorconfig-lint to GitHub Actions (#331) * Create main.yml * Update main.yml * Disable native Melodic build in Travis * Run editorconfig-lint in Actions * Let wget be less verbose * Test * Test ok * Disable editorconfig-lint in Travis * docs: add links to hardware sources * CI: move image building to GitHub actions (#335) * Start working on building image in GitHub actions * Trigger GitHub on push to any branch * Fix TRAVIS_TAG * Add compress image step * Disable image build in Travis * Add upload image step * Fix compress image * Fix * Fix * Minor fix * Trigger build on tag * Show images sizes not in human format * Upload only built image * Make prerelease * Upload assets on release not on tags * readme: change build badge to GitHub Actions * readme: add support chat badge * CI: move documentation building to GitHub Actions (#337) * CI: change docs target branch to actions * CI: change docs target branch to master * CI: use gh-pages target branch for docs * CI: split up to several workflows * CI: remove .travis.yml * CI: change apt to apt-get * CI: push documentation site to the main repo * builder: less verbosity * CI: add new key for apt Fixing https://github.com/CopterExpress/clover/runs/2700356960#step:3:74 * Add Noetic building to CI * Add test for QR recognition * Fix * Move QR recognition test to a separate file * Fix QR recognition code for Python 3 * Import SetLEDs, LEDStateArray, LEDState in tests * Add more imports to tests (from documentation) * Fix permissions * Fix standalone-install for Python 2 * Fix QR recognition test * Don’t use ROS for QR recognition test * docs: remove non-working example * Make v4l2 device file an argument in main_camera.launch * Wait for v4l2 device before launching the camera driver * Use exec in waitfile * Transfer main camera nodelet manager to main_camera.launch * Update cv_camera version to 0.5.1 * docs: minor fix * Revert cv_camera to 0.5.0 * Update Raspberry Pi OS to 2021-05-07 * docs: add link to the last ROS Melodic version. Co-authored-by: Alexey Rogachevskiy <sfalexrog@gmail.com>
187 lines
5.2 KiB
Bash
Executable File
187 lines
5.2 KiB
Bash
Executable File
#! /usr/bin/env bash
|
|
|
|
#
|
|
# Script for installing software to the image.
|
|
#
|
|
# Copyright (C) 2018 Copter Express Technologies
|
|
#
|
|
# Author: Artem Smirnov <urpylka@gmail.com>
|
|
#
|
|
# Distributed under MIT License (available at https://opensource.org/licenses/MIT).
|
|
# The above copyright notice and this permission notice shall be included in all
|
|
# copies or substantial portions of the Software.
|
|
#
|
|
|
|
set -e # Exit immidiately on non-zero result
|
|
|
|
echo_stamp() {
|
|
# TEMPLATE: echo_stamp <TEXT> <TYPE>
|
|
# TYPE: SUCCESS, ERROR, INFO
|
|
|
|
# More info there https://www.shellhacks.com/ru/bash-colors/
|
|
|
|
TEXT="$(date '+[%Y-%m-%d %H:%M:%S]') $1"
|
|
TEXT="\e[1m${TEXT}\e[0m" # BOLD
|
|
|
|
case "$2" in
|
|
SUCCESS)
|
|
TEXT="\e[32m${TEXT}\e[0m";; # GREEN
|
|
ERROR)
|
|
TEXT="\e[31m${TEXT}\e[0m";; # RED
|
|
*)
|
|
TEXT="\e[34m${TEXT}\e[0m";; # BLUE
|
|
esac
|
|
echo -e ${TEXT}
|
|
}
|
|
|
|
# https://gist.github.com/letmaik/caa0f6cc4375cbfcc1ff26bd4530c2a3
|
|
# https://github.com/travis-ci/travis-build/blob/master/lib/travis/build/templates/header.sh
|
|
my_travis_retry() {
|
|
local result=0
|
|
local count=1
|
|
while [ $count -le 3 ]; do
|
|
[ $result -ne 0 ] && {
|
|
echo -e "\n${ANSI_RED}The command \"$@\" failed. Retrying, $count of 3.${ANSI_RESET}\n" >&2
|
|
}
|
|
# ! { } ignores set -e, see https://stackoverflow.com/a/4073372
|
|
! { "$@"; result=$?; }
|
|
[ $result -eq 0 ] && break
|
|
count=$(($count + 1))
|
|
sleep 1
|
|
done
|
|
|
|
[ $count -gt 3 ] && {
|
|
echo -e "\n${ANSI_RED}The command \"$@\" failed 3 times.${ANSI_RESET}\n" >&2
|
|
}
|
|
|
|
return $result
|
|
}
|
|
|
|
echo_stamp "Increase apt retries"
|
|
|
|
echo "APT::Acquire::Retries \"3\";" > /etc/apt/apt.conf.d/80-retries
|
|
|
|
echo_stamp "Install apt keys & repos"
|
|
|
|
# TODO: This STDOUT consist 'OK'
|
|
apt-get update \
|
|
&& apt-get install --no-install-recommends -y dirmngr > /dev/null \
|
|
&& apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
|
|
|
|
echo "deb http://packages.ros.org/ros/ubuntu buster main" > /etc/apt/sources.list.d/ros-latest.list
|
|
|
|
wget -O - 'http://packages.coex.tech/key.asc' | apt-key add -
|
|
echo 'deb http://packages.coex.tech buster main' >> /etc/apt/sources.list
|
|
|
|
echo_stamp "Update apt cache"
|
|
|
|
# TODO: FIX ERROR: /usr/bin/apt-key: 596: /usr/bin/apt-key: cannot create /dev/null: Permission denied
|
|
apt-get update
|
|
# && apt upgrade -y
|
|
|
|
# Let's retry fetching those packages several times, just in case
|
|
echo_stamp "Software installing"
|
|
my_travis_retry apt-get install --no-install-recommends -y cmake-data=3.13.4-1 cmake=3.13.4-1 # FIXME: using older CMake due to https://travis-ci.org/github/CopterExpress/clover/jobs/764367665#L6984
|
|
my_travis_retry apt-get install --no-install-recommends -y \
|
|
unzip \
|
|
zip \
|
|
ipython \
|
|
ipython3 \
|
|
screen \
|
|
byobu \
|
|
nmap \
|
|
lsof \
|
|
git \
|
|
dnsmasq \
|
|
tmux \
|
|
tree \
|
|
vim \
|
|
libjpeg8 \
|
|
tcpdump \
|
|
libpoco-dev \
|
|
libzbar0 \
|
|
python3-rosdep \
|
|
python3-rosinstall-generator \
|
|
python3-wstool \
|
|
python3-rosinstall \
|
|
build-essential \
|
|
libffi-dev \
|
|
monkey \
|
|
pigpio python-pigpio python3-pigpio \
|
|
i2c-tools \
|
|
espeak espeak-data python-espeak python3-espeak \
|
|
ntpdate \
|
|
python-dev \
|
|
python3-dev \
|
|
python-systemd \
|
|
mjpg-streamer \
|
|
python3-opencv
|
|
|
|
# Deny byobu to check available updates
|
|
sed -i "s/updates_available//" /usr/share/byobu/status/status
|
|
# sed -i "s/updates_available//" /home/pi/.byobu/status
|
|
|
|
echo_stamp "Installing pip"
|
|
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
|
|
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip2.py
|
|
python3 get-pip.py
|
|
python get-pip2.py
|
|
rm get-pip.py get-pip2.py
|
|
#my_travis_retry pip install --upgrade pip
|
|
#my_travis_retry pip3 install --upgrade pip
|
|
|
|
echo_stamp "Make sure both pip and pip3 are installed"
|
|
pip --version
|
|
pip3 --version
|
|
|
|
echo_stamp "Install and enable Butterfly (web terminal)"
|
|
echo_stamp "Workaround for tornado >= 6.0 breaking butterfly"
|
|
export CRYPTOGRAPHY_DONT_BUILD_RUST=1
|
|
my_travis_retry pip3 install tornado==5.1.1
|
|
my_travis_retry pip3 install butterfly
|
|
my_travis_retry pip3 install butterfly[systemd]
|
|
systemctl enable butterfly.socket
|
|
|
|
echo_stamp "Install ws281x library"
|
|
my_travis_retry pip3 install --prefer-binary rpi_ws281x
|
|
|
|
echo_stamp "Setup Monkey"
|
|
mv /etc/monkey/sites/default /etc/monkey/sites/default.orig
|
|
mv /root/monkey /etc/monkey/sites/default
|
|
sed -i 's/SymLink Off/SymLink On/' /etc/monkey/monkey.conf
|
|
systemctl enable monkey.service
|
|
|
|
echo_stamp "Install Node.js"
|
|
cd /home/pi
|
|
wget --no-verbose https://nodejs.org/dist/v10.15.0/node-v10.15.0-linux-armv6l.tar.gz
|
|
tar -xzf node-v10.15.0-linux-armv6l.tar.gz
|
|
cp -R node-v10.15.0-linux-armv6l/* /usr/local/
|
|
rm -rf node-v10.15.0-linux-armv6l/
|
|
rm node-v10.15.0-linux-armv6l.tar.gz
|
|
|
|
echo_stamp "Installing ptvsd"
|
|
my_travis_retry pip install ptvsd
|
|
my_travis_retry pip3 install ptvsd
|
|
|
|
echo_stamp "Installing pyzbar"
|
|
my_travis_retry pip install pyzbar
|
|
my_travis_retry pip3 install pyzbar
|
|
|
|
echo_stamp "Add .vimrc"
|
|
cat << EOF > /home/pi/.vimrc
|
|
set mouse-=a
|
|
syntax on
|
|
autocmd BufNewFile,BufRead *.launch set syntax=xml
|
|
EOF
|
|
|
|
echo_stamp "Change default keyboard layout to US"
|
|
sed -i 's/XKBLAYOUT="gb"/XKBLAYOUT="us"/g' /etc/default/keyboard
|
|
|
|
echo_stamp "Attempting to kill dirmngr"
|
|
gpgconf --kill dirmngr
|
|
# dirmngr is only used by apt-key, so we can safely kill it.
|
|
# We ignore pkill's exit value as well.
|
|
pkill -9 -f dirmngr || true
|
|
|
|
echo_stamp "End of software installation"
|