diff --git a/.github/workflows/ubuntu_22_04.yml b/.github/workflows/ubuntu_22_04.yml index 0da4386..2675d1e 100644 --- a/.github/workflows/ubuntu_22_04.yml +++ b/.github/workflows/ubuntu_22_04.yml @@ -14,6 +14,7 @@ jobs: fail-fast: false matrix: build_type: [install, devel] + build_all: [minimal, full] runs-on: ubuntu-22.04 # env: @@ -50,6 +51,7 @@ jobs: sudo apt-get install -o Debug::pkgProblemResolver=true -yqq libunwind-dev dpkg -l | grep libunwind sudo apt-get install -o Debug::pkgProblemResolver=true -yqq libceres-dev + sudo apt-get install -yqq devscripts dh-make - name: apt library installs 2 run: | @@ -63,9 +65,16 @@ jobs: sudo apt-get install -yqq libspnav-dev liburdfdom-dev sudo apt-get install -yqq libyaml-cpp-dev sudo apt-get install -yqq cython3 + sudo apt-get install -yqq freeglut3-dev sudo apt-get install -yqq libapriltag-dev + sudo apt-get install -yqq libcgal-dev sudo apt-get install -yqq libfmt-dev + sudo apt-get install -yqq libgsl-dev + sudo apt-get install -yqq libhdf5-dev + sudo apt-get install -yqq libturbojpeg0-dev sudo apt-get install -yqq libzmq3-dev + sudo apt-get install -yqq ocl-icd-opencl-dev opencl-headers + sudo apt-get install -yqq libopenvdb-dev - name: apt sdl installs run: | @@ -108,6 +117,7 @@ jobs: run: | echo "PATH=$PATH:$DEST/bin" >> $GITHUB_ENV echo "PYTHONPATH=$DEST/lib/python$PYTHON_MAJOR_VERSION.$PYTHON_MINOR_VERSION/site-packages/" >> $GITHUB_ENV + echo "CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$DEST/lib/cmake" >> $GITHUB_ENV - name: check setup run: | @@ -165,41 +175,103 @@ jobs: sed -i 's/git@github.com:/https:\/\/github.com\//' base_repos.yaml ls -l vcs import --shallow < base_repos.yaml + # show which versions were imported + vcs export --exact # ignore repos that aren't yet building in 22.04 ../../other/src/ros_from_src/ubuntu_2204/ignore.sh + # the newer openvdb that doesn't have tbb error that the apt install version has + - name: install build openvdb + if: ${{ matrix.build_all == 'full' }} + run: | + mkdir -p other/build/openvdb + cd other/build/openvdb + cmake ../../../${{ matrix.build_type }}_base_catkin_ws/src/other/vdb/openvdb/ -DCMAKE_INSTALL_PREFIX=$DEST + make -j3 # it's a slow build + make install + + # TODO(lucasw) later have an entirely separately layer for the larger slow building packages + - name: ignore large slow packages + if: ${{ matrix.build_all == 'minimal' }} + run: | + cd ${{ matrix.build_type }}_base_catkin_ws/src + + touch other/PlotJuggler/CATKIN_IGNORE + touch other/plotjuggler_msgs/CATKIN_IGNORE + touch other/plotjuggler-ros-plugins/CATKIN_IGNORE + + touch other/jsk_common/CATKIN_IGNORE + touch other/jsk_common_msgs/CATKIN_IGNORE + touch other/jsk_recognition/CATKIN_IGNORE + touch other/jsk_roseus/CATKIN_IGNORE + touch other/jsk_visualization/CATKIN_IGNORE + + touch other/fiducials/CATKIN_IGNORE + + touch other/fuse/CATKIN_IGNORE + + touch other/lvr2/CATKIN_IGNORE + touch other/mesh_tools/CATKIN_IGNORE + + touch other/rtabmap/CATKIN_IGNORE + touch other/rtabmap_ros/CATKIN_IGNORE + + touch ros/grid_map/CATKIN_IGNORE + + touch other/anybotics/CATKIN_IGNORE + touch other/octomap_mapping/CATKIN_IGNORE + touch other/octomap_ros/CATKIN_IGNORE + + touch other/vdb/CATKIN_IGNORE + - name: devel setup if: ${{ matrix.build_type == 'devel' }} run: | cd ${{ matrix.build_type }}_base_catkin_ws - catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release -Wno-deprecated + catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release -Wno-deprecated -Wno-dev -DCMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES=$DEST/include -DCMAKE_LIBRARY_PATH=$DEST/lib + + # TODO(lucasw) lvr2 not building in devel, but could build it + # outside of catkin entirely and install to DEST + touch src/other/lvr2/CATKIN_IGNORE + touch src/other/mesh_tools/CATKIN_IGNORE - name: install setup if: ${{ matrix.build_type == 'install' }} run: | cd ${{ matrix.build_type }}_base_catkin_ws - catkin config --install --cmake-args -DCMAKE_BUILD_TYPE=Release -Wno-deprecated + catkin config --install --cmake-args -DCMAKE_BUILD_TYPE=Release -Wno-deprecated -Wno-dev -DCMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES=$DEST/include -DCMAKE_LIBRARY_PATH=$DEST/lib - # back to devel build - - name: build fiducials + # individual packages or sets of packages built separately + # this first one sources last because nothing has been built yet + - name: build qt_gui_core run: | cd ${{ matrix.build_type }}_base_catkin_ws - catkin build --no-status fiducials + catkin build --no-status qt_gui_core source ${{ matrix.build_type }}/setup.bash - - name: build grid_map + - name: build vdb mapping + if: ${{ matrix.build_all == 'full' }} run: | cd ${{ matrix.build_type }}_base_catkin_ws source ${{ matrix.build_type }}/setup.bash - catkin build --no-status grid_map* + catkin build --no-status vdb_mapping* --verbose - - name: build qt_gui_core + - name: build fiducials + if: ${{ matrix.build_all == 'full' }} run: | cd ${{ matrix.build_type }}_base_catkin_ws source ${{ matrix.build_type }}/setup.bash - catkin build --no-status qt_gui_core + catkin build --no-status fiducials + + - name: build grid_map + if: ${{ matrix.build_all == 'full' }} + run: | + cd ${{ matrix.build_type }}_base_catkin_ws + source ${{ matrix.build_type }}/setup.bash + catkin build --no-status grid_map* - name: build rtabmap_ros + if: ${{ matrix.build_all == 'full' }} run: | cd ${{ matrix.build_type }}_base_catkin_ws source ${{ matrix.build_type }}/setup.bash @@ -212,7 +284,8 @@ jobs: catkin build --no-status joint_trajectory_controller - name: test joint_trajectory_controller - if: ${{ matrix.build_type == 'devel' }} + # TODO(lucasw) this test is slow, maybe don't do it at all + if: ${{ (matrix.build_type == 'devel' && matrix.build_all == 'full') }} run: | cd ${{ matrix.build_type }}_base_catkin_ws source ${{ matrix.build_type }}/setup.bash @@ -221,13 +294,14 @@ jobs: # catkin test --no-status joint_trajectory_controller - name: test install joint_trajectory_controller - if: ${{ matrix.build_type == 'install' }} + if: ${{ (matrix.build_type == 'devel' && matrix.build_all == 'full') }} run: | cd ${{ matrix.build_type }}_base_catkin_ws source ${{ matrix.build_type }}/setup.bash catkin test --no-status joint_trajectory_controller - name: build plotjuggler + if: ${{ matrix.build_all == 'full' }} run: | cd ${{ matrix.build_type }}_base_catkin_ws source ${{ matrix.build_type }}/setup.bash @@ -243,13 +317,22 @@ jobs: catkin build --no-status rviz source ${{ matrix.build_type }}/setup.bash + - name: build rviz_map_plugin + if: ${{ matrix.build_all == 'full' && matrix.build_type == 'install' }} + run: | + cd ${{ matrix.build_type }}_base_catkin_ws + source ${{ matrix.build_type }}/setup.bash + catkin build --no-status rviz_map_plugin + - name: build jsk + if: ${{ matrix.build_all == 'full' }} run: | cd ${{ matrix.build_type }}_base_catkin_ws source ${{ matrix.build_type }}/setup.bash catkin build --no-status jsk* - name: build fuse + if: ${{ matrix.build_all == 'full' }} run: | cd ${{ matrix.build_type }}_base_catkin_ws source ${{ matrix.build_type }}/setup.bash @@ -264,12 +347,35 @@ jobs: - name: tar up install_catkin_ws if: ${{ matrix.build_type == 'install' }} run: | - tar cvzf install_catkin_ws_2204.tgz ${{ matrix.build_type }}_base_catkin_ws/install + tar cvzf install_catkin_ws_2204.tgz install_base_catkin_ws/install + tar cvzf install_dest_2204.tgz $DEST ls -l - - name: update install_catkin_ws_2204.tgz + - name: upload install_catkin_ws_2204.tgz + if: ${{ matrix.build_type == 'install' }} + uses: actions/upload-artifact@v4 + with: + name: install_dest_2204_${{ matrix.build_all }} + path: install_dest_2204.tgz + + - name: upload install_catkin_ws_2204.tgz if: ${{ matrix.build_type == 'install' }} - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: - name: install_catkin_ws_2204 + name: install_catkin_ws_2204__${{ matrix.build_all }} path: install_catkin_ws_2204.tgz + + - name: make a deb from the entirety of install_catkin_ws/install + if: ${{ matrix.build_type == 'install' }} + run: | + cd other/src/ros_from_src/debian + ln -s ../../../../install_base_catkin_ws/install + dpkg-buildpackage -A -uc + + - name: upload .deb + if: ${{ matrix.build_type == 'install' }} + uses: actions/upload-artifact@v4 + with: + name: install_catkin_ws_2204_${{ matrix.build_all }}.deb + # TODO(lucasw) extract name from debian files, VERSION? + path: other/src/ros_from_src/rosone_0.0.6-1_all.deb diff --git a/Dockerfile b/Dockerfile index b1aa1ad..c69f55d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,6 +15,7 @@ RUN apt-get install -y apt-utils # TODO(lucasw) used to do these on separate layers but github actions has a layer limit? # it was failing later with 'ERROR: failed to solve: failed to prepare...max depth exceeded' RUN apt-get install -y build-essential bzip2 libbz2-dev cmake git libboost-dev libboost-filesystem-dev libboost-program-options-dev libboost-regex-dev libboost-thread-dev libfmt-dev libgpgme-dev libgtest-dev liblog4cxx-dev liblz4-dev lz4 libpoco-dev libtinyxml2-dev mawk coreutils python-is-python3 python3 python3-dev python3-empy python3-setuptools python3-yaml +RUN apt-get update && apt-get install -yqq libgsl-dev wget libspnav-dev liburdfdom-dev libyaml-cpp-dev cython3 freeglut3-dev libapriltag-dev libcgal-dev libhdf5-dev libturbojpeg0-dev libzmq3-dev ocl-icd-opencl-dev opencl-headers ENV SRC=/src RUN mkdir $SRC -p @@ -178,7 +179,7 @@ RUN rosdep update || true WORKDIR $WS/.. RUN source $DEST/setup.bash RUN catkin init -RUN source $DEST/setup.bash && catkin config +RUN source $DEST/setup.bash && catkin config --install --cmake-args -DCMAKE_BUILD_TYPE=Release -Wno-deprecated # rospack list won't work by itself RUN source $DEST/setup.bash && rospack list @@ -191,7 +192,7 @@ RUN echo $CMAKE_PREFIX_PATH RUN echo $ROS_PACKAGE_PATH RUN catkin build # rospack list won't work by itself -RUN source devel/setup.bash && rospack list +RUN source install/setup.bash && rospack list RUN apt-get install python3-netifaces diff --git a/debian/Dockerfile b/debian/Dockerfile index 0d86b19..d56bd24 100644 --- a/debian/Dockerfile +++ b/debian/Dockerfile @@ -1,4 +1,6 @@ -# install all ros packages from debian +# install all ros packages from debian, then install custom debian built from ros_from_src +# cd ros_from_src # be one directory up from debian/ +# docker build debian -t ros_from_src_ubuntu_2204 ARG IMAGE=ubuntu:22.04 FROM ${IMAGE} ARG IMAGE @@ -9,48 +11,74 @@ ENV DEBIAN_FRONTEND="noninteractive" # be able to source files RUN rm /bin/sh && ln -s /bin/bash /bin/sh -RUN apt-get update +RUN apt-get update -y +RUN apt-get upgrade -y RUN apt-get install -y apt-utils # apt installs -RUN apt-get update -RUN apt-get install -y build-essential -RUN apt-get install -y bzip2 libbz2-dev -RUN apt-get install -y cmake -RUN apt-get install -y coreutils -RUN apt-get install -y git -RUN apt-get install -y libboost-dev -RUN apt-get install -y libboost-filesystem-dev -RUN apt-get install -y libboost-program-options-dev -RUN apt-get install -y libboost-regex-dev -RUN apt-get install -y libboost-thread-dev -RUN apt-get install -y libgpgme-dev -RUN apt-get install -y libgtest-dev -RUN apt-get install -y liblog4cxx-dev -RUN apt-get install -y liblz4-dev lz4 -RUN apt-get install -y libpoco-dev -RUN apt-get install -y libtinyxml2-dev -RUN apt-get install -y mawk - -RUN apt-get update -RUN apt-get install -y python-is-python3 -RUN apt-get install -y python3 -RUN apt-get install -y python3-dateutil -RUN apt-get install -y python3-defusedxml -RUN apt-get install -y python3-dev -RUN apt-get install -y python3-distro -RUN apt-get install -y python3-docutils -RUN apt-get install -y python3-empy -RUN apt-get install -y python3-netifaces -RUN apt-get install -y python3-pyparsing -RUN apt-get install -y python3-setuptools -RUN apt-get install -y python3-yaml - -RUN apt-get update -# ros debian installs -# https://wiki.debian.org/DebianScience/Robotics/ROS/Packages -# RUN apt-get install -y ros-robot-state-publisher -RUN apt-get install -y rviz -RUN apt-get install -y ros-robot -RUN apt-get install -y ros-robot-dev -RUN apt-get install -y python3-vcstools +RUN apt-get update && apt-get install -y git +RUN apt-get install -y ros-* +RUN apt-get install -y catkin-lint cython3 libapriltag-dev libceres-dev libfmt-dev libfrei0r-ocaml-dev libgmock-dev libgoogle-glog-dev libgst-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libimage-view-dev liborocos-bfl-dev libpcl-ros-dev libqt5svg5-dev libqt5websockets5-dev libqt5x11extras5-dev libqwt-qt5-dev libsdl-image1.2-dev libspnav-dev liburdfdom-dev libuvc-dev libv4l-dev libyaml-cpp-dev python-is-python3 python3-tf2-geometry-msgs python3-venv vim curl jq --fix-missing +# not depended on by anything in the rosone deb but useful to already have for building other packages from src +RUN apt-get install -y google-mock libdiagnostic-updater-dev libmuparser-dev libopenvdb-dev python3-geopy python3-open3d python3-pip python3-scipy +# RUN apt-get install -y libgeographic-dev + +################################################################################ +# catkin and related setup +# TODO(lucasw) there needs to be a deb made for just these packages, they aren't in the deb installed below +ENV DEST=/opt/ros/base +RUN mkdir $DEST -p +ENV SRC=/opt/src +RUN mkdir $SRC -p + +WORKDIR $SRC +RUN python --version | awk '{print $2}' | cut -d'.' -f1 +RUN python --version | awk '{print $2}' | cut -d'.' -f2 +# TODO(lucasw) these aren't working +# RUN export PYTHON_MAJOR_VERSION=`python --version | awk '{print $2}' | cut -d'.' -f1` +# RUN export PYTHON_MINOR_VERSION=`python --version | awk '{print $2}' | cut -d'.' -f2` +# RUN PYTHON_MINOR_VERSION=`python --version | awk '{print $2}' | cut -d'.' -f2` +ARG PYTHON_MAJOR_VERSION=3 +ARG PYTHON_MINOR_VERSION=10 +ENV OPT_PYTHONPATH=$DEST/lib/python$PYTHON_MAJOR_VERSION.$PYTHON_MINOR_VERSION/site-packages/ +RUN echo $PYTHONPATH +ENV PYTHONPATH=$OPT_PYTHONPATH +RUN echo $PYTHONPATH +ENV PATH=$DEST/bin:$PATH +################################################################################ + +# this deb isn't working right, env vars aren't set properly and rosrun doesn't work +# for packages inside it +# ARG DEB=rosone_0.0.6-1_all.deb +# RUN echo ${DEB} +# COPY rosone_0.0.6-1_all.deb . +# COPY ${DEB} . +# RUN dpkg -i ${DEB} +# TODO(lucasw) this setup isn't doing much, have to set this manually +# ENV ROS_PACKAGE_PATH=/opt/ros/one/share:/usr/share + +WORKDIR /opt/ros +RUN apt-get install -yqq zip + +COPY install_dest_2204_full.zip . +RUN unzip install_dest_2204_full.zip +RUN tar xvf install_dest_2204.tgz +# TODO(lucasw) zip up the install in a way that exclude the full path +RUN mv home/runner/other/install/* $DEST +RUN rm -rf home +RUN rm install_dest_2204* + +RUN which catkin && catkin --help + +COPY install_catkin_ws_2204__full.zip . +RUN unzip install_catkin_ws_2204__full.zip +RUN tar xvf install_catkin_ws_2204.tgz +RUN mv install_base_catkin_ws/install one +RUN rmdir install_base_catkin_ws +RUN rm install_catkin_ws* + +RUN du -sh /opt/ros +RUN find /opt/ros | head -n 30 +RUN ls -l /usr/lib/x86_64-linux-gnu/libpython* +RUN source /opt/ros/one/setup.bash && echo $ROS_PACKAGE_PATH && echo $PATH +RUN source /opt/ros/one/setup.bash && rospack find pcl_ros diff --git a/debian/README.md b/debian/README.md index 0e1edd6..969508c 100644 --- a/debian/README.md +++ b/debian/README.md @@ -1,29 +1,82 @@ # Ubuntu 22.04 setup ``` -sudo apt install ros-robot-dev rviz +sudo apt install devscripts dh-make ``` +``` +cd ~/install_base_catkin_ws +catkin config -DCMAKE_BUILD_TYPE=Release -Wno-deprecated +catkin build +``` + +https://stackoverflow.com/questions/10999948/how-to-include-a-directory-in-the-package-debuild +-> "Edit: Example without using Makefile (if you are not going to build anything)" -Need to install catkin from source and have it in catkin_ws/src +Create the debian folder: + +``` +cd ros_from_src/debian +ln -s ~/install_base_catkin_ws/install +dh_make -p rosone_0.0.6 -i --createorig +``` -Need to install catkin_tools from source (adapted from ../build.sh) +Had to make a bunch of manual edits after that, like set debian/rosone-dev.install to `install/*` -In .bashrc: +touch debian/rosone.install +``` +test/ /opt/ros/one +``` + +Build the .deb + +``` +cd ros_from_src/debian +dpkg-buildpackage -A -uc ``` -export DEST=$HOME/other/install -export PATH=$PATH:$DEST/bin -PYTHON_MAJOR_VERSION=`python --version | awk '{print $2}' | cut -d'.' -f1` -PYTHON_MINOR_VERSION=`python --version | awk '{print $2}' | cut -d'.' -f2` -OPT_PYTHONPATH=$DEST/lib/python$PYTHON_MAJOR_VERSION.$PYTHON_MINOR_VERSION/site-packages/ -export PYTHONPATH=$PYTHONPATH:$OPT_PYTHONPATH +It creates a deb one directory up: + +``` +dpkg-deb -c ../rosone_0.0.6-1_all.deb +drwxr-xr-x root/root 0 2023-09-03 15:30 ./ +drwxr-xr-x root/root 0 2023-09-03 15:30 ./opt/ +drwxr-xr-x root/root 0 2023-09-03 15:30 ./opt/ros/ +drwxr-xr-x root/root 0 2023-09-03 15:30 ./opt/ros/one/ +... all the install/ files +drwxr-xr-x root/root 0 2023-09-03 15:30 ./usr/ +drwxr-xr-x root/root 0 2023-09-03 15:30 ./usr/share/ +drwxr-xr-x root/root 0 2023-09-03 15:30 ./usr/share/doc/ +drwxr-xr-x root/root 0 2023-09-03 15:30 ./usr/share/doc/rosone/ +-rw-r--r-- root/root 167 2023-09-03 15:30 ./usr/share/doc/rosone/README.Debian +-rw-r--r-- root/root 174 2023-09-03 15:30 ./usr/share/doc/rosone/changelog.Debian.gz +-rw-r--r-- root/root 1898 2023-09-03 15:30 ./usr/share/doc/rosone/copyright +drwxr-xr-x root/root 0 2023-09-03 15:30 ./usr/share/doc-base/ +-rw-r--r-- root/root 504 2023-09-03 15:30 ./usr/share/doc-base/rosone.rosone ``` + +Is a recursive search and replace on /home/lucasw/install_base_catkin_ws/install to /opt/ros/oone needed? + + +# Docker + +Test inside a docker container, having built the deb on the outside- but only works if using same ubuntu on the outside: + ``` -git clone https://github.com/catkin/catkin_tools -cd catkin_tools -python3 setup.py install --prefix=$DEST --record install_manifest.txt --single-version-externally-managed +cd ros_from_src/debian +# docker won't use this file if not in current directory +cp ../rosone_0.0.6-1_all.deb . +docker build . -t ros_from_src_ubuntu_2204 --build-arg IMAGE=ubuntu:22.04 +docker run -it --net host ros_from_src_ubuntu_2204 +roslaunch nodelet_tutorial_math plus.launch # or something else installed by the .deb ``` +# Dockerhub + +https://hub.docker.com/r/lucasw0/ros_from_src_ubuntu_2204 + +``` +FROM lucasw0/ros_from_src_ubuntu_2204:latest +``` diff --git a/debian/VERSION b/debian/VERSION new file mode 100644 index 0000000..1750564 --- /dev/null +++ b/debian/VERSION @@ -0,0 +1 @@ +0.0.6 diff --git a/debian/debian/README.Debian b/debian/debian/README.Debian new file mode 100644 index 0000000..d7998db --- /dev/null +++ b/debian/debian/README.Debian @@ -0,0 +1,6 @@ +rosone for Debian +---------------- + + + + -- lucasw Tue, 05 Sep 2023 12:31:11 -0700 diff --git a/debian/debian/README.source b/debian/debian/README.source new file mode 100644 index 0000000..1b6d18d --- /dev/null +++ b/debian/debian/README.source @@ -0,0 +1,10 @@ +rosone for Debian +---------------- + + + + + + -- lucasw Tue, 05 Sep 2023 12:31:11 -0700 + diff --git a/debian/debian/changelog b/debian/debian/changelog new file mode 100644 index 0000000..233ae82 --- /dev/null +++ b/debian/debian/changelog @@ -0,0 +1,13 @@ +rosone (0.0.6-1) UNRELEASED; urgency=medium + + * Updated ros packages, now have perception_pcl + * hand-edited this changelog, this file needs to be updated to build this + version + + -- lucasw Wed, 06 Mar 2024 7:00:00 -0700 + +rosone (0.0.5-1) UNRELEASED; urgency=medium + + * Initial release. (Closes: #nnnn) + + -- lucasw Tue, 05 Sep 2023 12:31:11 -0700 diff --git a/debian/debian/control b/debian/debian/control new file mode 100644 index 0000000..db74c92 --- /dev/null +++ b/debian/debian/control @@ -0,0 +1,18 @@ +Source: rosone +Section: unknown +Priority: optional +Maintainer: Lucas Walter +Rules-Requires-Root: no +Build-Depends: + debhelper-compat (= 13), +Standards-Version: 4.6.2 +Homepage: +#Vcs-Browser: https://salsa.debian.org/debian/rosone +#Vcs-Git: https://salsa.debian.org/debian/rosone.git + +Package: rosone +Architecture: all +Depends: + ${misc:Depends}, +Description: + diff --git a/debian/debian/copyright b/debian/debian/copyright new file mode 100644 index 0000000..d48f5bd --- /dev/null +++ b/debian/debian/copyright @@ -0,0 +1,47 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Source: +Upstream-Name: rosone +Upstream-Contact: + +Files: + * +Copyright: + + +License: + + + . + + +# If you want to use GPL v2 or later for the /debian/* files use +# the following clauses, or change it to suit. Delete these two lines +Files: + debian/* +Copyright: + 2023 lucasw +License: GPL-2+ + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see +Comment: + On Debian systems, the complete text of the GNU General + Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". + +# Please also look if there are files or directories which have a +# different copyright/license attached and list them here. +# Please avoid picking licenses with terms that are more restrictive than the +# packaged work, as it may make Debian's contributions unacceptable upstream. +# +# If you need, there are some extra license texts available in two places: +# /usr/share/debhelper/dh_make/licenses/ +# /usr/share/common-licenses/ diff --git a/debian/debian/manpage.1.ex b/debian/debian/manpage.1.ex new file mode 100644 index 0000000..61d08c3 --- /dev/null +++ b/debian/debian/manpage.1.ex @@ -0,0 +1,56 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" (C) Copyright 2023 lucasw , +.\" +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH Rosone SECTION "September 5 2023" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +rosone \- program to do something +.SH SYNOPSIS +.B rosone +.RI [ options ] " files" ... +.br +.B bar +.RI [ options ] " files" ... +.SH DESCRIPTION +This manual page documents briefly the +.B rosone +and +.B bar +commands. +.PP +.\" TeX users may be more comfortable with the \fB\fP and +.\" \fI\fP escape sequences to invode bold face and italics, +.\" respectively. +\fBrosone\fP is a program that... +.SH OPTIONS +These programs follow the usual GNU command line syntax, with long +options starting with two dashes ('\-'). +A summary of options is included below. +For a complete description, see the Info files. +.TP +.B \-h, \-\-help +Show summary of options. +.TP +.B \-v, \-\-version +Show version of program. +.SH SEE ALSO +.BR bar (1), +.BR baz (1). +.br +The programs are documented fully by +.IR "The Rise and Fall of a Fooish Bar" , +available via the Info system. diff --git a/debian/debian/manpage.md.ex b/debian/debian/manpage.md.ex new file mode 100644 index 0000000..5844143 --- /dev/null +++ b/debian/debian/manpage.md.ex @@ -0,0 +1,126 @@ +% rosone(SECTION) | User Commands +% +% "September 5 2023" + +[comment]: # The lines above form a Pandoc metadata block. They must be +[comment]: # the first ones in the file. +[comment]: # See https://pandoc.org/MANUAL.html#metadata-blocks for details. + +[comment]: # pandoc -s -f markdown -t man package.md -o package.1 +[comment]: # +[comment]: # A manual page package.1 will be generated. You may view the +[comment]: # manual page with: nroff -man package.1 | less. A typical entry +[comment]: # in a Makefile or Makefile.am is: +[comment]: # +[comment]: # package.1: package.md +[comment]: # pandoc --standalone --from=markdown --to=man $< --output=$@ +[comment]: # +[comment]: # The pandoc binary is found in the pandoc package. Please remember +[comment]: # that if you create the nroff version in one of the debian/rules +[comment]: # file targets, such as build, you will need to include pandoc in +[comment]: # your Build-Depends control field. + +[comment]: # Remove the lines starting with '[comment]:' in this file in order +[comment]: # to avoid warning messages from pandoc. + +# NAME + +rosone - program to do something + +# SYNOPSIS + +**rosone** **-e** _this_ [**\-\-example=that**] [{**-e** | **\-\-example**} _this_] + [{**-e** | **\-\-example**} {_this_ | _that_}] + +**rosone** [{**-h** | *\-\-help**} | {**-v** | **\-\-version**}] + +# DESCRIPTION + +This manual page documents briefly the **rosone** and **bar** commands. + +This manual page was written for the Debian distribution because the +original program does not have a manual page. Instead, it has documentation +in the GNU info(1) format; see below. + +**rosone** is a program that... + +# OPTIONS + +The program follows the usual GNU command line syntax, with long options +starting with two dashes ('-'). A summary of options is included below. For +a complete description, see the **info**(1) files. + +**-e** _this_, **\-\-example=**_that_ +: Does this and that. + +**-h**, **\-\-help** +: Show summary of options. + +**-v**, **\-\-version** +: Show version of program. + +# FILES + +/etc/foo.conf +: The system-wide configuration file to control the behaviour of + rosone. See **foo.conf**(5) for further details. + +${HOME}/.foo.conf +: The per-user configuration file to control the behaviour of + rosone. See **foo.conf**(5) for further details. + +# ENVIRONMENT + +**FOO_CONF** +: If used, the defined file is used as configuration file (see also + the section called “FILES”). + +# DIAGNOSTICS + +The following diagnostics may be issued on stderr: + +Bad configuration file. Exiting. +: The configuration file seems to contain a broken configuration + line. Use the **\-\-verbose** option, to get more info. + +**rosone** provides some return codes, that can be used in scripts: + + Code Diagnostic + 0 Program exited successfully. + 1 The configuration file seems to be broken. + +# BUGS + +The program is currently limited to only work with the foobar library. + +The upstream BTS can be found at http://bugzilla.foo.tld. + +# SEE ALSO + +**bar**(1), **baz**(1), **foo.conf**(5) + +The programs are documented fully by The Rise and Fall of a Fooish Bar +available via the **info**(1) system. + +# AUTHOR + +lucasw +: Wrote this manpage for the Debian system. + +# COPYRIGHT + +Copyright © 2007 lucasw + +This manual page was written for the Debian system (and may be used by +others). + +Permission is granted to copy, distribute and/or modify this document under +the terms of the GNU General Public License, Version 2 or (at your option) +any later version published by the Free Software Foundation. + +On Debian systems, the complete text of the GNU General Public License +can be found in /usr/share/common-licenses/GPL. + +[comment]: # Local Variables: +[comment]: # mode: markdown +[comment]: # End: diff --git a/debian/debian/manpage.sgml.ex b/debian/debian/manpage.sgml.ex new file mode 100644 index 0000000..3361668 --- /dev/null +++ b/debian/debian/manpage.sgml.ex @@ -0,0 +1,154 @@ + manpage.1'. You may view + the manual page with: 'docbook-to-man manpage.sgml | nroff -man | + less'. A typical entry in a Makefile or Makefile.am is: + +manpage.1: manpage.sgml + docbook-to-man $< > $@ + + + The docbook-to-man binary is found in the docbook-to-man package. + Please remember that if you create the nroff version in one of the + debian/rules file targets (such as build), you will need to include + docbook-to-man in your Build-Depends control field. + + --> + + + FIRSTNAME"> + SURNAME"> + + September 5 2023"> + + SECTION"> + lucasw@unknown"> + + Rosone"> + + + Debian"> + GNU"> + GPL"> +]> + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2003 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + program to do something + + + + &dhpackage; + + + + + + + + DESCRIPTION + + This manual page documents briefly the + &dhpackage; and bar + commands. + + This manual page was written for the &debian; distribution + because the original program does not have a manual page. + Instead, it has documentation in the &gnu; + Info format; see below. + + &dhpackage; is a program that... + + + + OPTIONS + + These programs follow the usual &gnu; command line syntax, + with long options starting with two dashes ('-'). A summary of + options is included below. For a complete description, see the + Info files. + + + + + + + + Show summary of options. + + + + + + + + Show version of program. + + + + + + SEE ALSO + + bar (1), baz (1). + + The programs are documented fully by The Rise and + Fall of a Fooish Bar available via the + Info system. + + + AUTHOR + + This manual page was written by &dhusername; &dhemail; for + the &debian; system (and may be used by others). Permission is + granted to copy, distribute and/or modify this document under + the terms of the &gnu; General Public License, Version 2 any + later version published by the Free Software Foundation. + + + On Debian systems, the complete text of the GNU General Public + License can be found in /usr/share/common-licenses/GPL. + + + +
+ + diff --git a/debian/debian/manpage.xml.ex b/debian/debian/manpage.xml.ex new file mode 100644 index 0000000..b930228 --- /dev/null +++ b/debian/debian/manpage.xml.ex @@ -0,0 +1,291 @@ + +.
will be generated. You may view the +manual page with: nroff -man .
| less'. A typical entry +in a Makefile or Makefile.am is: + +DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/docbook-xsl/manpages/docbook.xsl +XP = xsltproc -''-nonet -''-param man.charmap.use.subset "0" + +manpage.1: manpage.xml + $(XP) $(DB2MAN) $< + +The xsltproc binary is found in the xsltproc package. The XSL files are in +docbook-xsl. A description of the parameters you can use can be found in the +docbook-xsl-doc-* packages. Please remember that if you create the nroff +version in one of the debian/rules file targets (such as build), you will need +to include xsltproc and docbook-xsl in your Build-Depends control field. +Alternatively use the xmlto command/package. That will also automatically +pull in xsltproc and docbook-xsl. + +Notes for using docbook2x: docbook2x-man does not automatically create the +AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as + ... . + +To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections +read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be +found in the docbook-xsl-doc-html package. + +Validation can be done using: `xmllint -''-noout -''-valid manpage.xml` + +General documentation about man-pages and man-page-formatting: +man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/ + +--> + + + + + + + + + + + + + +]> + + + + &dhtitle; + &dhpackage; + + + &dhfirstname; + &dhsurname; + Wrote this manpage for the Debian system. +
+ &dhemail; +
+
+
+ + 2007 + &dhusername; + + + This manual page was written for the Debian system + (and may be used by others). + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU General Public License, + Version 2 or (at your option) any later version published by + the Free Software Foundation. + On Debian systems, the complete text of the GNU General Public + License can be found in + /usr/share/common-licenses/GPL. + +
+ + &dhucpackage; + &dhsection; + + + &dhpackage; + program to do something + + + + &dhpackage; + + + + + + + + + this + + + + + + + + this + that + + + + + &dhpackage; + + + + + + + + + + + + + + + + + + + DESCRIPTION + This manual page documents briefly the + &dhpackage; and bar + commands. + This manual page was written for the Debian distribution + because the original program does not have a manual page. + Instead, it has documentation in the GNU + info + 1 + format; see below. + &dhpackage; is a program that... + + + OPTIONS + The program follows the usual GNU command line syntax, + with long options starting with two dashes ('-'). A summary of + options is included below. For a complete description, see the + + info + 1 + files. + + + + + + + Does this and that. + + + + + + + Show summary of options. + + + + + + + Show version of program. + + + + + + FILES + + + /etc/foo.conf + + The system-wide configuration file to control the + behaviour of &dhpackage;. See + + foo.conf + 5 + for further details. + + + + ${HOME}/.foo.conf + + The per-user configuration file to control the + behaviour of &dhpackage;. See + + foo.conf + 5 + for further details. + + + + + + ENVIRONMENT + + + FOO_CONF + + If used, the defined file is used as configuration + file (see also ). + + + + + + DIAGNOSTICS + The following diagnostics may be issued + on stderr: + + + Bad configuration file. Exiting. + + The configuration file seems to contain a broken configuration + line. Use the option, to get more info. + + + + + &dhpackage; provides some return codes, that can + be used in scripts: + + Code + Diagnostic + + 0 + Program exited successfully. + + + 1 + The configuration file seems to be broken. + + + + + + BUGS + The program is currently limited to only work + with the foobar library. + The upstreams BTS can be found + at . + + + SEE ALSO + + + bar + 1 + , + baz + 1 + , + foo.conf + 5 + + The programs are documented fully by The Rise and + Fall of a Fooish Bar available via the + info + 1 + system. + +
+ diff --git a/debian/debian/postinst.ex b/debian/debian/postinst.ex new file mode 100644 index 0000000..a789571 --- /dev/null +++ b/debian/debian/postinst.ex @@ -0,0 +1,39 @@ +#!/bin/sh +# postinst script for rosone. +# +# See: dh_installdeb(1). + +set -e + +# Summary of how this script can be called: +# * 'configure' +# * 'abort-upgrade' +# * 'abort-remove' 'in-favour' +# +# * 'abort-remove' +# * 'abort-deconfigure' 'in-favour' +# 'removing' +# +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package. + + +case "$1" in + configure) + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument '$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/debian/postrm.ex b/debian/debian/postrm.ex new file mode 100644 index 0000000..872e115 --- /dev/null +++ b/debian/debian/postrm.ex @@ -0,0 +1,37 @@ +#!/bin/sh +# postrm script for rosone. +# +# See: dh_installdeb(1). + +set -e + +# Summary of how this script can be called: +# * 'remove' +# * 'purge' +# * 'upgrade' +# * 'failed-upgrade' +# * 'abort-install' +# * 'abort-install' +# * 'abort-upgrade' +# * 'disappear' +# +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package. + + +case "$1" in + purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + ;; + + *) + echo "postrm called with unknown argument '$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/debian/preinst.ex b/debian/debian/preinst.ex new file mode 100644 index 0000000..5d607c9 --- /dev/null +++ b/debian/debian/preinst.ex @@ -0,0 +1,35 @@ +#!/bin/sh +# preinst script for rosone. +# +# See: dh_installdeb(1). + +set -e + +# Summary of how this script can be called: +# * 'install' +# * 'install' +# * 'upgrade' +# * 'abort-upgrade' +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package. + + +case "$1" in + install|upgrade) + ;; + + abort-upgrade) + ;; + + *) + echo "preinst called with unknown argument '$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/debian/prerm.ex b/debian/debian/prerm.ex new file mode 100644 index 0000000..0f59711 --- /dev/null +++ b/debian/debian/prerm.ex @@ -0,0 +1,38 @@ +#!/bin/sh +# prerm script for rosone. +# +# See: dh_installdeb(1). + +set -e + +# Summary of how this script can be called: +# * 'remove' +# * 'upgrade' +# * 'failed-upgrade' +# * 'remove' 'in-favour' +# * 'deconfigure' 'in-favour' +# 'removing' +# +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package. + + +case "$1" in + remove|upgrade|deconfigure) + ;; + + failed-upgrade) + ;; + + *) + echo "prerm called with unknown argument '$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/debian/rosone-docs.docs b/debian/debian/rosone-docs.docs new file mode 100644 index 0000000..efea0a6 --- /dev/null +++ b/debian/debian/rosone-docs.docs @@ -0,0 +1,2 @@ +README.Debian +README.source diff --git a/debian/debian/rosone.cron.d.ex b/debian/debian/rosone.cron.d.ex new file mode 100644 index 0000000..788166f --- /dev/null +++ b/debian/debian/rosone.cron.d.ex @@ -0,0 +1,4 @@ +# +# Regular cron jobs for the rosone package. +# +0 4 * * * root [ -x /usr/bin/rosone_maintenance ] && /usr/bin/rosone_maintenance diff --git a/debian/debian/rosone.doc-base.ex b/debian/debian/rosone.doc-base.ex new file mode 100644 index 0000000..fe389f5 --- /dev/null +++ b/debian/debian/rosone.doc-base.ex @@ -0,0 +1,20 @@ +Document: rosone +Title: Debian rosone Manual +Author: +Abstract: This manual describes what rosone is + and how it can be used to + manage online manuals on Debian systems. +Section: unknown + +Format: debiandoc-sgml +Files: /usr/share/doc/rosone/rosone.sgml.gz + +Format: postscript +Files: /usr/share/doc/rosone/rosone.ps.gz + +Format: text +Files: /usr/share/doc/rosone/rosone.text.gz + +Format: HTML +Index: /usr/share/doc/rosone/html/index.html +Files: /usr/share/doc/rosone/html/*.html diff --git a/debian/debian/rosone.install b/debian/debian/rosone.install new file mode 100644 index 0000000..7fda64c --- /dev/null +++ b/debian/debian/rosone.install @@ -0,0 +1 @@ +install/* /opt/ros/one diff --git a/debian/debian/rules b/debian/debian/rules new file mode 100755 index 0000000..f1d1d25 --- /dev/null +++ b/debian/debian/rules @@ -0,0 +1,26 @@ +#!/usr/bin/make -f + +# See debhelper(7) (uncomment to enable). +# Output every command that modifies files on the build system. +#export DH_VERBOSE = 1 + + +# See FEATURE AREAS in dpkg-buildflags(1). +#export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +# See ENVIRONMENT in dpkg-buildflags(1). +# Package maintainers to append CFLAGS. +#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic +# Package maintainers to append LDFLAGS. +#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed + + +%: + dh $@ + + +# dh_make generated override targets. +# This is an example for Cmake (see ). +#override_dh_auto_configure: +# dh_auto_configure -- \ +# -DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH) diff --git a/debian/debian/salsa-ci.yml.ex b/debian/debian/salsa-ci.yml.ex new file mode 100644 index 0000000..a6fb8bd --- /dev/null +++ b/debian/debian/salsa-ci.yml.ex @@ -0,0 +1,11 @@ +# For more information on what jobs are run see: +# https://salsa.debian.org/salsa-ci-team/pipeline +# +# To enable the jobs, go to your repository (at salsa.debian.org) +# and click over Settings > CI/CD > Expand (in General pipelines). +# In "CI/CD configuration file" write debian/salsa-ci.yml and click +# in "Save Changes". The CI tests will run after the next commit. +--- +include: + - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml + - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml diff --git a/debian/debian/source/format b/debian/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/debian/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/debian/debian/upstream/metadata.ex b/debian/debian/upstream/metadata.ex new file mode 100644 index 0000000..752beb9 --- /dev/null +++ b/debian/debian/upstream/metadata.ex @@ -0,0 +1,10 @@ +# Example file for upstream/metadata. +# See https://wiki.debian.org/UpstreamMetadata for more info/fields. +# Below an example based on a github project. + +# Bug-Database: https://github.com//rosone/issues +# Bug-Submit: https://github.com//rosone/issues/new +# Changelog: https://github.com//rosone/blob/master/CHANGES +# Documentation: https://github.com//rosone/wiki +# Repository-Browse: https://github.com//rosone +# Repository: https://github.com//rosone.git diff --git a/debian/debian/watch.ex b/debian/debian/watch.ex new file mode 100644 index 0000000..7ded03f --- /dev/null +++ b/debian/debian/watch.ex @@ -0,0 +1,37 @@ +# Example watch control file for uscan. +# Rename this file to "watch" and then you can run the "uscan" command +# to check for upstream updates and more. +# See uscan(1) for format. + +# Compulsory line, this is a version 4 file. +version=4 + +# PGP signature mangle, so foo.tar.gz has foo.tar.gz.sig. +#opts="pgpsigurlmangle=s%$%.sig%" + +# HTTP site (basic). +#http://example.com/downloads.html \ +# files/rosone-([\d\.]+)\.tar\.gz + +# Uncomment to examine an FTP server. +#ftp://ftp.example.com/pub/rosone-(.*)\.tar\.gz + +# SourceForge hosted projects. +#http://sf.net/rosone/ rosone-(.*)\.tar\.gz + +# GitHub hosted projects. +#opts="filenamemangle=s%(?:.*?)?v?(@ANY_VERSION@@ARCHIVE_EXT@)%@PACKAGE@-$1%" \ +# https://github.com///tags \ +# (?:.*?/)v?@ANY_VERSION@@ARCHIVE_EXT@ + +# GitLab hosted projects. +#opts="filenamemangle=s%(?:.*?)?v?(@ANY_VERSION@@ARCHIVE_EXT@)%@PACKAGE@-$1%" \ +# https://gitlab.com///-/tags \ +# archive/v?@ANY_VERSION@/-v?\d\S*@ARCHIVE_EXT@ + +# PyPI. +#https://pypi.debian.net/rosone/rosone-(.+)\.(?:zip|tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz))) + +# Direct Git. +#opts="mode=git" http://git.example.com/rosone.git \ +# refs/tags/v([\d\.]+) diff --git a/ubuntu_2204/Dockerfile b/ubuntu_2204/Dockerfile index e248926..7a581a7 100644 --- a/ubuntu_2204/Dockerfile +++ b/ubuntu_2204/Dockerfile @@ -1,3 +1,4 @@ +# docker build . -t ros_from_src_ubuntu_2204 ARG IMAGE=ubuntu:22.04 FROM ${IMAGE} ARG IMAGE @@ -8,27 +9,23 @@ ENV DEBIAN_FRONTEND="noninteractive" # be able to source files RUN rm /bin/sh && ln -s /bin/bash /bin/sh -RUN apt-get update -y -RUN apt-get upgrade -y -RUN apt-get install -y apt-utils +RUN apt-get update -yqq +RUN apt-get upgrade -yqq +RUN apt-get install -yqq apt-utils # apt installs -RUN apt install -y git -RUN apt install -y ros-* -RUN apt install -y catkin-lint cython3 libapriltag-dev libceres-dev libfmt-dev libfrei0r-ocaml-dev libgeographic-dev libgmock-dev libgoogle-glog-dev libgst-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libimage-view-dev liborocos-bfl-dev libpcl-ros-dev libqt5svg5-dev libqt5websockets5-dev libqt5x11extras5-dev libqwt-qt5-dev libsdl-image1.2-dev libspnav-dev liburdfdom-dev libuvc-dev libv4l-dev libyaml-cpp-dev python-is-python3 python3-tf2-geometry-msgs python3-venv vim curl jq - -ENV DEST=/other/install +RUN apt-get update && apt-get install -yqq git +RUN apt-get update && apt-get install -yqq ros-* +RUN apt-get update && apt-get install -yqq catkin-lint cython3 libapriltag-dev libceres-dev libfmt-dev libfrei0r-ocaml-dev libgeographic-dev libgmock-dev libgoogle-glog-dev libgst-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libimage-view-dev liborocos-bfl-dev libpcl-ros-dev libqt5svg5-dev libqt5websockets5-dev libqt5x11extras5-dev libqwt-qt5-dev libsdl-image1.2-dev libspnav-dev liburdfdom-dev libuvc-dev libv4l-dev libyaml-cpp-dev python-is-python3 python3-tf2-geometry-msgs python3-venv vim curl jq +RUN apt-get update && apt-get install -yqq libgsl-dev wget freeglut3-dev libcgal-dev libhdf5-dev libturbojpeg0-dev libzmq3-dev +RUN apt-get -y install ocl-icd-opencl-dev opencl-headers +RUN apt-get -y install libopenvdb-dev + +ENV DEST=/opt/ros/base RUN mkdir $DEST -p -ENV SRC=/other/src +ENV SRC=/opt/src RUN mkdir $SRC -p -WORKDIR $SRC -# RUN git clone https://github.com/lucasw/ros_from_src.git -WORKDIR $SRC/ros_from_src/ubuntu_2204 -COPY base_repos.yaml . -# make git clone work through vcs without git credentials -RUN sed -i 's/git@github.com:/https:\/\/github.com\//' base_repos.yaml - WORKDIR $SRC RUN git clone https://github.com/dirk-thomas/vcstool.git WORKDIR $SRC/vcstool @@ -60,6 +57,14 @@ ENV PYTHONPATH=$OPT_PYTHONPATH RUN echo $PYTHONPATH ENV PATH=$DEST/bin:$PATH +ENV CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$DEST/lib/cmake + +# WORKDIR $SRC +# RUN git clone https://github.com/lucasw/ros_from_src.git +WORKDIR $SRC/ros_from_src/ubuntu_2204 +COPY base_repos.yaml . +# make git clone work through vcs without git credentials +RUN sed -i 's/git@github.com:/https:\/\/github.com\//' base_repos.yaml # get packages and build ENV WS=/base_catkin_ws/src @@ -71,16 +76,23 @@ RUN $SRC/ros_from_src/ubuntu_2204/ignore.sh RUN touch other/catkin_virtualenv/test_catkin_virtualenv_inherited/CATKIN_IGNORE RUN touch other/catkin_virtualenv/test_catkin_virtualenv_isolated/CATKIN_IGNORE +RUN mkdir -p $HOME/other/build/openvdb +WORKDIR other/build/openvdb +RUN cmake $WS/other/vdb/openvdb/ -DCMAKE_INSTALL_PREFIX=$DEST +RUN make -j2 # it's a slow build +RUN make install + # ENV ROS_DISTRO="noetic" RUN echo $CMAKE_PREFIX_PATH WORKDIR $WS/.. -RUN catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release -Wno-deprecated +RUN catkin config --install --cmake-args -DCMAKE_BUILD_TYPE=Release -Wno-deprecated -Wno-dev -DCMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES=$DEST/include -DCMAKE_LIBRARY_PATH=$DEST/lib # split these up so can take advantage of docker layers, otherwise one failure # means a huge rebuild # RUN catkin build --no-status -j1 fuse_core # disabling this because it is too slow to build # RUN catkin build --no-status -j1 rtabmap_ros +RUN catkin build --no-status -j1 vdb_mapping* RUN catkin build --no-status -j1 jsk_rviz_plugins RUN catkin build --no-status -j1 rviz RUN catkin build --no-status -j1 plotjuggler @@ -101,15 +113,13 @@ RUN catkin build --no-status -j1 jsk_interactive_marker RUN catkin build --no-status -j1 # rospack list won't work by itself -# RUN source devel/setup.bash && rospack list +# RUN source install/setup.bash && rospack list # TODO(lucasw) run more tests than this RUN catkin build joint_trajectory_controller --no-status --no-deps --catkin-make-args tests -RUN ls -l devel +RUN ln -s /base_catkin_ws/install /opt/ros/one +RUN ls -l /opt/ros/one # make 'source' work SHELL ["/bin/bash", "-c"] -RUN source devel/setup.sh && rospack list -# RUN source devel/setup.sh && rostest joint_trajectory_controller joint_trajectory_controller.test - -# TODO(lucasw) instead of git cloning the repo we're already in, copy in the repos.yaml and ignore file -# so someone could edit them and rerun the dockerfile +RUN source /opt/ros/one/setup.sh && rospack list +# RUN source install/setup.sh && rostest joint_trajectory_controller joint_trajectory_controller.test diff --git a/ubuntu_2204/README.md b/ubuntu_2204/README.md index 45ec8a9..3848b71 100644 --- a/ubuntu_2204/README.md +++ b/ubuntu_2204/README.md @@ -21,7 +21,7 @@ export PYTHONPATH=$DEST/lib/python$PYTHON_MAJOR_VERSION.$PYTHON_MINOR_VERSION/si ``` mkdir -p ~/other/src cd ~/other/src -git clone git@github.com:lucasw/ros_from_src --branch robot_state_publisher +git clone git@github.com:lucasw/ros_from_src --branch debianize ``` ``` diff --git a/ubuntu_2204/base_repos.yaml b/ubuntu_2204/base_repos.yaml index c6e6370..018b8be 100644 --- a/ubuntu_2204/base_repos.yaml +++ b/ubuntu_2204/base_repos.yaml @@ -23,6 +23,34 @@ repositories: type: git url: git@github.com:warthog-cpr/warthog_simulator.git version: melodic-devel + extra/common_msgs: + type: git + url: git@github.com:ros/common_msgs.git + version: noetic-devel + extra/geometry: + type: git + url: git@github.com:ros-o/geometry.git + version: obese-devel + extra/laser_geometry: + type: git + url: git@github.com:ros-o/laser_geometry.git + version: obese-devel + extra/navigation_msgs: + type: git + url: git@github.com:ros-planning/navigation_msgs.git + version: ros1 + extra/pcl_msgs: + type: git + url: git@github.com:ros-perception/pcl_msgs.git + version: noetic-devel + extra/perception_pcl: + type: git + url: git@github.com:ros-o/perception_pcl.git + version: obese-devel + extra/vision_opencv: + type: git + url: git@github.com:ros-perception/vision_opencv.git + version: noetic greenzie/boustrophedon_planner: type: git url: git@github.com:lucasw/boustrophedon_planner @@ -59,10 +87,18 @@ repositories: type: git url: git@github.com:lucasw/ros1_lifecycle version: misc_fixes + lucasw/ros_example: + type: git + url: git@github.com:lucasw/ros_example + version: main lucasw/ros_system_monitor: type: git url: git@github.com:lucasw/ros_system_monitor version: chrony_monitor + lucasw/rqt_file_dialog: + type: git + url: git@github.com:lucasw/rqt_file_dialog + version: master lucasw/rqt_tf_echo: type: git url: git@github.com:lucasw/rqt_tf_echo.git @@ -123,6 +159,10 @@ repositories: type: git url: git@github.com:lucasw/vimjay version: eliminate_build_warnings + opencv_apps: + type: git + url: git@github.com:ros-perception/opencv_apps.git + version: indigo other/PlotJuggler: type: git url: git@github.com:facontidavide/PlotJuggler.git @@ -230,7 +270,7 @@ repositories: other/lvr2: type: git url: git@github.com:lucasw/lvr2 - version: build_2304 + version: ros1_or_2 other/marti_messages: type: git url: git@github.com:swri-robotics/marti_messages.git @@ -257,11 +297,11 @@ repositories: version: pluginlib_hpp other/octomap_mapping: type: git - url: git@github.com:lucasw/octomap_mapping.git - version: filter_limits + url: git@github.com:octomap/octomap_mapping.git + version: kinetic-devel other/octomap_ros: type: git - url: git@github.com:lucasw/octomap_ros + url: git@github.com:octomap/octomap_ros version: melodic-devel other/openni2_camera: type: git @@ -281,12 +321,16 @@ repositories: version: boost_placeholders other/plotjuggler-ros-plugins: type: git - url: git@github.com:lucasw/plotjuggler-ros-plugins - version: depend_pal_statistics_msgs + url: git@github.com:PlotJuggler/plotjuggler-ros-plugins.git + version: main other/plotjuggler_msgs: type: git url: git@github.com:PlotJuggler/plotjuggler_msgs.git version: main + other/point_cloud_converter: + type: git + url: git@github.com:pal-robotics-forks/point_cloud_converter.git + version: hydro-devel other/ros_control_boilerplate: type: git url: git@github.com:lucasw/ros_control_boilerplate @@ -299,6 +343,10 @@ repositories: type: git url: git@github.com:lucasw/ros_rtsp version: pluginlib_hpp + other/ros_type_introspection: + type: git + url: git@github.com:lucasw/ros_type_introspection.git + version: build_2204 other/rosbag_snapshot: type: git url: git@github.com:ros/rosbag_snapshot.git @@ -329,8 +377,8 @@ repositories: version: master other/rtabmap_ros: type: git - url: git@github.com:lucasw/rtabmap_ros - version: build_rtabmap_viz + url: git@github.com:introlab/rtabmap_ros + version: master other/static_transform_mux: type: git url: git@github.com:tradr-project/static_transform_mux.git @@ -343,6 +391,18 @@ repositories: type: git url: git@github.com:turtlebot/turtlebot version: melodic + other/vdb/openvdb: + type: git + url: git@github.com:AcademySoftwareFoundation/openvdb.git + version: master + other/vdb/vdb_mapping: + type: git + url: git@github.com:lucasw/vdb_mapping + version: min_range + other/vdb/vdb_mapping_ros: + type: git + url: git@github.com:lucasw/vdb_mapping_ros + version: rolling_window other/wu_ros_tools: type: git url: git@github.com:lucasw/wu_ros_tools @@ -490,7 +550,7 @@ repositories: ros/roslint: type: git url: git@github.com:lucasw/roslint - version: add_headers_to_valid_extensions + version: roslint_rust ros/rospack: type: git url: git@github.com:lucasw/rospack @@ -538,7 +598,7 @@ repositories: ros/rviz: type: git url: git@github.com:lucasw/rviz.git - version: cleanup_deprecated + version: misc_fixes ros/teleop_twist_joy: type: git url: git@github.com:lucasw/teleop_twist_joy diff --git a/ubuntu_2204/ignore.sh b/ubuntu_2204/ignore.sh index c01b89a..f3a2456 100755 --- a/ubuntu_2204/ignore.sh +++ b/ubuntu_2204/ignore.sh @@ -24,9 +24,13 @@ touch ./other/jsk_roseus/CATKIN_IGNORE touch ./other/jsk_roseus/roseus_msgs/CATKIN_IGNORE touch ./other/euslisp-release/CATKIN_IGNORE touch ./other/geneus/CATKIN_IGNORE -touch ./other/lvr2/CATKIN_IGNORE -touch ./other/mesh_tools/CATKIN_IGNORE -touch ./other/mavros/CATKIN_IGNORE +# touch ./other/mesh_tools/mesh_msgs_hdf5/CATKIN_IGNORE +# touch ./other/mesh_tools/hdf5_map_io/CATKIN_IGNORE +# touch ./other/mesh_tools/rviz_map_plugin/CATKIN_IGNORE +touch ./other/mavros/libmavconn/CATKIN_IGNORE +touch ./other/mavros/mavros/CATKIN_IGNORE +touch ./other/mavros/mavros_extras/CATKIN_IGNORE +touch ./other/mavros/test_mavros/CATKIN_IGNORE touch ./other/openni2_camera/CATKIN_IGNORE touch ./other/people/face_detector/CATKIN_IGNORE touch ./other/people/leg_detector/CATKIN_IGNORE @@ -34,8 +38,6 @@ touch ./other/ros_rtsp/CATKIN_IGNORE touch ./other/pal_statistics/pal_statistics/CATKIN_IGNORE touch ./ros/gazebo_ros_demos/CATKIN_IGNORE touch ./ros/gazebo_ros_pkgs/CATKIN_IGNORE -touch ./ros/grid_map/grid_map_demos/CATKIN_IGNORE -touch ./ros/grid_map/grid_map_filters/CATKIN_IGNORE touch ./ros/joystick_drivers/ps3joy/CATKIN_IGNORE touch ./ros/joystick_drivers/wiimote/CATKIN_IGNORE touch ./ros/web_video_server/CATKIN_IGNORE