mirror of
https://github.com/CopterExpress/clover.git
synced 2026-05-26 11:43:25 +00:00
102 lines
3.5 KiB
Bash
Executable File
102 lines
3.5 KiB
Bash
Executable File
#! /usr/bin/env bash
|
|
|
|
#
|
|
# Script for building ROS packages from scratch
|
|
#
|
|
# Copyright (C) 2022 Copter Express Technologies
|
|
#
|
|
# Author: Oleg Kalachev <okalachev@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 -ex # exit on error, echo commands
|
|
|
|
# http://wiki.ros.org/Installation/Source
|
|
|
|
export ROS_DISTRO=noetic
|
|
. /etc/os-release # set $VERSION_CODENAME to Debian release code name
|
|
export ROS_OS_OVERRIDE=debian:11:$VERSION_CODENAME
|
|
|
|
echo "=== Building ROS from scratch"
|
|
|
|
#echo "--- Adding sources"
|
|
# echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list
|
|
# curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
|
|
|
|
cp /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d # https://askubuntu.com/a/1408456
|
|
apt-get update
|
|
apt-get install -y python3-distutils build-essential git # python3-vcstool
|
|
|
|
# install vcstool using pip
|
|
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && python3 get-pip.py && rm get-pip.py
|
|
pip3 install -U --break-system-packages vcstool rosdep rosinstall-generator
|
|
|
|
# sudo rosdep init
|
|
rm /etc/ros/rosdep/sources.list.d/20-default.list
|
|
rosdep init
|
|
rosdep update
|
|
|
|
# rm /etc/ros/rosdep/sources.list.d/20-default.list && rosdep init
|
|
# rosdep --os=debian:$VERSION_CODENAME update
|
|
|
|
echo "--- Create Catkin workspace to build ROS package"
|
|
mkdir ~/ros_catkin_ws
|
|
cd ~/ros_catkin_ws
|
|
|
|
echo "--- Download ROS sources"
|
|
rosinstall_generator ros_base --rosdistro $ROS_DISTRO --deps --tar > noetic.rosinstall
|
|
mkdir ./src
|
|
vcs import --input noetic.rosinstall ./src
|
|
|
|
# https://answers.ros.org/question/343367/catkin-package-dependencies-issue-when-installing-ros-melodic-on-raspberry-pi-4/
|
|
#sudo apt remove python-rospkg
|
|
#sudo apt remove python-catkin-pkg
|
|
##sudo apt --fix-broken install
|
|
#sudo apt-get autoremove
|
|
|
|
echo "--- Install catkin_pkg"
|
|
cd
|
|
git clone https://github.com/ros-infrastructure/catkin_pkg.git
|
|
cd catkin_pkg
|
|
python3 setup.py install
|
|
cd ~/ros_catkin_ws
|
|
|
|
echo "--- Resolve dependencies"
|
|
rosdep install --from-paths ./src --ignore-packages-from-source --rosdistro $ROS_DISTRO -y --os=debian:$VERSION_CODENAME --skip-keys="python3-catkin-pkg python3-catkin-pkg-modules python3-rosdep-modules"
|
|
|
|
echo "--- Build ROS"
|
|
# https://github.com/ros/catkin/issues/863#issuecomment-290392074
|
|
./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release \
|
|
-DSETUPTOOLS_DEB_LAYOUT=OFF \
|
|
--install-space=/opt/ros/$ROS_DISTRO
|
|
|
|
# source ~/ros_catkin_ws/install_isolated/setup.bash
|
|
source /opt/ros/$ROS_DISTRO/setup.bash
|
|
|
|
echo "--- List built ROS packages"
|
|
set +x
|
|
rospack list-names | while read line; do echo $line `rosversion $line`; done
|
|
set -x
|
|
|
|
echo "--- Build Debian packages"
|
|
apt-get install -y python3-bloom debhelper dpkg-dev libtinyxml-dev
|
|
|
|
# add rosdep file to help bloom-generate resolve missing bookworm dependencies
|
|
echo "yaml file:///etc/ros/rosdep/noetic-bookworm.yaml" >> /etc/ros/rosdep/sources.list.d/20-default.list
|
|
rosdep update
|
|
|
|
pip3 install setuptools==45.2.0 # https://github.com/ros/catkin/issues/863#issuecomment-1000446018
|
|
|
|
for file in `find . -name "package.xml" -not -path "*/debian/*"`; do
|
|
cd $(dirname ${file})
|
|
rm -rf debian
|
|
bloom-generate rosdebian --os-name debian --os-version $VERSION_CODENAME --ros-distro $ROS_DISTRO --debug
|
|
debian/rules binary # fakeroot is not needed as we are root
|
|
cd -
|
|
done
|
|
|
|
ls
|