Skip to content

Commit e5e1d28

Browse files
committed
Merge pkg_ws_2 branch into head_2
1 parent ff0b05f commit e5e1d28

342 files changed

Lines changed: 1746 additions & 121 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.cmake/common.cmake

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
set(CMAKE_VERBOSE_MAKEFILE ON)
2+
3+
set(ARILES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../ariles")
4+
5+
6+
#-----
7+
# ARILES
8+
set(ARILES_VISITORS_DEFAULT_MODE "OFF" CACHE STRING "")
9+
set(ARILES_CCACHE "OFF" CACHE STRING "")
10+
11+
set(ARILES_BUILD_REGRESSION_TESTS "${ARILES_ROS_ENABLE_TESTS}" CACHE STRING "")
12+
13+
foreach(ARILES_COMPONENT ${ARILES_COMPONENTS})
14+
string(REGEX REPLACE "-" "_" ARILES_VISITOR "${ARILES_COMPONENT}")
15+
16+
if (ARILES_COMPONENT STREQUAL "core")
17+
set(ARILES_ENABLE_CORE "ON" CACHE STRING "")
18+
else()
19+
set(ARILES_ENABLE_CORE "OFF" CACHE STRING "")
20+
set(ARILES_VISITOR_${ARILES_VISITOR} "ON" CACHE STRING "")
21+
endif()
22+
endforeach()
23+
#-----
24+
25+
26+
if(ARILES_ROS_ENABLE_TESTS)
27+
enable_testing()
28+
endif()
29+
30+
add_subdirectory("${ARILES_DIR}" "./ariles2_${CMAKE_PROJECT_NAME}")
31+
32+
33+
set(ARILES_ROS_CONFIG_INSTALL_DESTINATION "share/${CMAKE_PROJECT_NAME}/cmake/")
34+
35+
include(CMakePackageConfigHelpers)
36+
configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/../.cmake/config.cmake.in"
37+
"${PROJECT_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake"
38+
INSTALL_DESTINATION "${ARILES_ROS_CONFIG_INSTALL_DESTINATION}"
39+
NO_SET_AND_CHECK_MACRO
40+
NO_CHECK_REQUIRED_COMPONENTS_MACRO)
41+
42+
write_basic_package_version_file(
43+
${PROJECT_BINARY_DIR}/${CMAKE_PROJECT_NAME}ConfigVersion.cmake
44+
VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}
45+
COMPATIBILITY SameMajorVersion)
46+
47+
install(FILES package.xml DESTINATION share/${CMAKE_PROJECT_NAME}) # ?
48+
install(FILES "${PROJECT_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake"
49+
DESTINATION ${ARILES_ROS_CONFIG_INSTALL_DESTINATION})
50+
install(FILES "${PROJECT_BINARY_DIR}/${CMAKE_PROJECT_NAME}ConfigVersion.cmake"
51+
DESTINATION ${ARILES_ROS_CONFIG_INSTALL_DESTINATION})

.cmake/config.cmake.in

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
set (@CMAKE_PROJECT_NAME@_VERSION @PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@)
2+
3+
@PACKAGE_INIT@
4+
5+
find_package(ariles2-core REQUIRED)
6+
7+
foreach(ARILES_COMPONENT @ARILES_COMPONENTS@)
8+
find_package(ariles2-${ARILES_COMPONENT} REQUIRED)
9+
10+
list(APPEND @CMAKE_PROJECT_NAME@_LIBRARIES "ariles2::${ARILES_COMPONENT}")
11+
12+
get_target_property(COMPONENT_INCLUDE_DIRS "ariles2::${ARILES_COMPONENT}" INTERFACE_INCLUDE_DIRECTORIES)
13+
if (COMPONENT_INCLUDE_DIRS)
14+
list(APPEND @CMAKE_PROJECT_NAME@_INCLUDE_DIRS "${COMPONENT_INCLUDE_DIRS}")
15+
endif()
16+
endforeach()

.github/workflows/head_2.yml

Lines changed: 67 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ on:
77
pull_request:
88
types: [opened, reopened]
99

10+
defaults:
11+
run:
12+
shell: bash
13+
1014
env:
1115
APT: sudo apt install -y --no-install-recommends
1216
# Set the python path manually to include /usr/-/python2.7/dist-packages
@@ -181,56 +185,73 @@ jobs:
181185
- run: make clangcheck SCANBUILD=scan-build-20 OPTIONS=noros_tidy TC=clang
182186

183187

188+
# focal
189+
focal_noetic_catkin_old:
190+
container: ros:noetic-ros-base-focal
191+
runs-on: ubuntu-latest
192+
steps:
193+
- uses: actions/checkout@v5
194+
- run: rm -Rf ariles2_nlohmann_json_ws ariles2_jsonnet_ws ariles2_namevalue_ws ariles2_ros2param_ws ariles2_protobuf3_ws ariles2_rosparam_ws/CATKIN_IGNORE
195+
- run: |
196+
source /opt/ros/noetic/setup.bash
197+
make catkin_test_old ROS_DISTRO=noetic UBUNTU_DISTRO=focal
198+
199+
focal_noetic_catkin_new:
200+
container: ros:noetic-ros-base-focal
201+
runs-on: ubuntu-latest
202+
steps:
203+
- uses: actions/checkout@v5
204+
- run: rm -Rf ariles2_nlohmann_json_ws ariles2_rosparam_ws/CATKIN_IGNORE
205+
- run: |
206+
source /opt/ros/noetic/setup.bash
207+
make catkin_test_new ROS_DISTRO=noetic UBUNTU_DISTRO=focal
208+
209+
# does not work with ros2param (rclcpp dependency)
210+
#prerelease:
211+
# runs-on: ubuntu-20.04
212+
# steps:
213+
# - uses: actions/checkout@v5
214+
# with:
215+
# fetch-depth: 0
216+
# - run: make ros_prerelease ROS_DISTRO=noetic UBUNTU_DISTRO=focal BRANCH=`git branch --show-current`
217+
# env:
218+
# CCACHE_DIR: ${GITHUB_WORKSPACE}/.ccache
219+
184220
jammy_ccws:
185-
runs-on: ubuntu-22.04
221+
container: asherikov/ccws_jammy
222+
runs-on: ubuntu-latest
223+
env:
224+
WORKSPACE_SRC: ${GITHUB_WORKSPACE}
186225
steps:
187226
- uses: actions/checkout@v5
188-
with:
189-
repository: asherikov/ccws
190-
- uses: actions/checkout@v5
191-
with:
192-
ref: pkg_ws_2
193-
path: src/ariles_ws
194-
- run: cd src/ariles_ws; make update VERSION=${GITHUB_SHA}; rm -Rf ariles2_rosparam_ws demo
195-
- run: make bp_install_build BUILD_PROFILE=static_checks
196-
- run: make BUILD_PROFILE=static_checks
197-
- run: make bp_install_build BUILD_PROFILE=scan_build
198-
- run: make dep_install PKG=ariles2_core_ws
199-
- run: make dep_install PKG=ariles2_graphviz_ws
200-
- run: make dep_install PKG=ariles2_namevalue2_ws
201-
- run: make dep_install PKG=ariles2_octave_ws
202-
- run: make dep_install PKG=ariles2_pugixml_ws
203-
- run: make dep_install PKG=ariles2_rapidjson_ws
204-
- run: make dep_install PKG=ariles2_ros2param_ws
205-
- run: make dep_install PKG=ariles2_yamlcpp_ws
206-
- run: make _ws BUILD_PROFILE=scan_build
207-
- run: make bp_install_build BUILD_PROFILE=cppcheck
208-
- run: make BUILD_PROFILE=static_checks BASE_BUILD_PROFILE=scan_build
227+
- run: rm demo_cmake/CATKIN_IGNORE
228+
- run: |
229+
cd /ccws
230+
apt update
231+
make dep_install
232+
make ariles2_cmake_demo ariles2_ros2param_ws
233+
- run: |
234+
cd /ccws
235+
make BUILD_PROFILE=static_checks
236+
make _ws BUILD_PROFILE=scan_build
237+
make BUILD_PROFILE=static_checks BASE_BUILD_PROFILE=scan_build
209238
210239
noble_ccws:
211-
runs-on: ubuntu-24.04
240+
container: asherikov/ccws_noble
241+
runs-on: ubuntu-latest
242+
env:
243+
WORKSPACE_SRC: ${GITHUB_WORKSPACE}
212244
steps:
213245
- uses: actions/checkout@v5
214-
with:
215-
repository: asherikov/ccws
216-
- uses: actions/checkout@v5
217-
with:
218-
ref: pkg_ws_2
219-
path: src/ariles_ws
220-
- run: cd src/ariles_ws; make update VERSION=${GITHUB_SHA}; rm -Rf ariles2_rosparam_ws demo
221-
- run: make bp_install_build BUILD_PROFILE=static_checks
222-
- run: make BUILD_PROFILE=static_checks
223-
- run: make bp_install_build BUILD_PROFILE=scan_build
224-
- run: make dep_install PKG=ariles2_core_ws
225-
- run: make dep_install PKG=ariles2_graphviz_ws
226-
- run: make dep_install PKG=ariles2_namevalue2_ws
227-
- run: make dep_install PKG=ariles2_octave_ws
228-
- run: make dep_install PKG=ariles2_pugixml_ws
229-
- run: make dep_install PKG=ariles2_rapidjson_ws
230-
- run: make dep_install PKG=ariles2_ros2param_ws
231-
- run: make dep_install PKG=ariles2_yamlcpp_ws
232-
# disable due to https://github.com/Tencent/rapidjson/issues/2347
233-
- run: touch src/ariles_ws/ariles2_rapidjson_ws/COLCON_IGNORE
234-
- run: make _ws BUILD_PROFILE=scan_build
235-
- run: make bp_install_build BUILD_PROFILE=cppcheck
236-
- run: make BUILD_PROFILE=static_checks BASE_BUILD_PROFILE=scan_build
246+
- run: rm demo_cmake/CATKIN_IGNORE
247+
- run: |
248+
cd /ccws
249+
apt update
250+
make dep_install
251+
make ariles2_cmake_demo ariles2_ros2param_ws
252+
- run: |
253+
cd /ccws
254+
make BUILD_PROFILE=static_checks
255+
make _ws BUILD_PROFILE=scan_build
256+
make BUILD_PROFILE=static_checks BASE_BUILD_PROFILE=scan_build
257+

.make/common.mk

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
help:
2+
-@grep --color -Ev "(^ )|(^$$)" Makefile
3+
-@grep --color -Ev "(^ )|(^$$)" make/*.mk
4+
5+
6+
# release
7+
#----------------------------------------------
8+
9+
update_version:
10+
sed -i -e "s=\(project([ a-zA-Z0-9_-]* VERSION\) [0-9]*\.[0-9]*\.[0-9]*)=\1 ${VERSION})=" */CMakeLists.txt
11+
#done automatically
12+
sed -i -e "s=<version>[0-9]*\.[0-9]*\.[0-9]*</version>=<version>${VERSION}</version>=" */package.xml
13+

.make/ros.mk

Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
PROJECT=ariles2
2+
3+
WS_PKGS= \
4+
ariles2_core_ws \
5+
ariles2_namevalue2_ws \
6+
ariles2_graphviz_ws \
7+
ariles2_octave_ws \
8+
ariles2_python_ws \
9+
ariles2_yamlcpp_ws \
10+
ariles2_rosparam_ws \
11+
ariles2_pugixml_ws \
12+
ariles2_msgpack_ws
13+
14+
CATKIN_DEPENDENCY_TEST_PKG=ariles2_catkin_demo
15+
CATKIN_ARGS=--cmake-args -DARILES_ROS_ENABLE_TESTS=ON
16+
CATKIN_TARGETS=all test
17+
18+
CATKIN_WORKING_DIR=./build/catkin_workspace
19+
CATKIN_PKGS_PATH=${CATKIN_WORKING_DIR}/src/${PROJECT}
20+
21+
PIP_INSTALL=sudo python3 -m pip install
22+
23+
24+
# release
25+
#----------------------------------------------
26+
27+
ros_release:
28+
# 0. Add Forthcoming section to the changelog
29+
${MAKE} update_version VERSION=${VERSION}
30+
-git commit -a
31+
catkin_prepare_release -t 'ws-' --version "${VERSION}" -y
32+
# initial release -> https://wiki.ros.org/bloom/Tutorials/FirstTimeRelease
33+
# subsequent releases -> bloom-release --rosdistro melodic --track melodic ${PKG}
34+
35+
36+
# catkin
37+
#----------------------------------------------
38+
39+
ros_add_repos:
40+
sh -c "echo \"deb http://packages.ros.org/ros/ubuntu ${UBUNTU_DISTRO} main\" > /etc/apt/sources.list.d/ros-latest.list"
41+
sh -c "apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 \
42+
|| apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 \
43+
|| apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654"
44+
sh -c "apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key 6B05F25D762E3157 \
45+
|| apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key 6B05F25D762E3157 \
46+
|| apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key 6B05F25D762E3157"
47+
apt-get update -qq
48+
${APT_INSTALL} dpkg
49+
apt update -y
50+
51+
ros_install:
52+
${APT_INSTALL} -y ros-${ROS_DISTRO}-ros-base
53+
bash -c 'source /opt/ros/${ROS_DISTRO}/setup.bash; rosdep init'
54+
55+
ros_install_deps:
56+
apt update
57+
#apt upgrade -y
58+
${APT_INSTALL} libeigen3-dev octave libyaml-cpp-dev libpugixml-dev libboost-all-dev libmsgpack-dev nlohmann-json3-dev
59+
bash -c "${APT_INSTALL} python-bloom || ${APT_INSTALL} python3-bloom"
60+
${APT_INSTALL} \
61+
devscripts \
62+
debhelper \
63+
fakeroot
64+
bash -c "${APT_INSTALL} python-catkin-tools || ${APT_INSTALL} python3-catkin-tools python3-osrf-pycommon"
65+
66+
67+
catkin_test_deb_pkg:
68+
cd ${CATKIN_PKGS_PATH}/${PKG}; bloom-generate rosdebian --os-name ubuntu --ros-distro ${ROS_DISTRO} ./
69+
cd ${CATKIN_PKGS_PATH}/${PKG}; fakeroot debian/rules binary
70+
ls -l ${CATKIN_PKGS_PATH}
71+
echo ${PKG} | tr "_" "-" | xargs --verbose -I {} sudo sh -c "dpkg -i ${CATKIN_PKGS_PATH}/ros*{}*.deb"
72+
73+
catkin_test_deb: clean
74+
${MAKE} catkin_prepare_workspace
75+
${MAKE} catkin_fake_rosdep
76+
mkdir -p build/dependency_test
77+
echo ${WS_PKGS} | tr " " "\n" | xargs -I {} sh -c "${MAKE} catkin_test_deb_pkg PKG="{}" ROS_DISTRO=${ROS_DISTRO} || exit 255"
78+
bash -c 'source /opt/ros/${ROS_DISTRO}/setup.bash; \
79+
cd build/dependency_test; \
80+
cmake ../../demo_cmake_ros1; \
81+
${MAKE} ${MAKE_FLAGS}'
82+
83+
84+
catkin_prepare_workspace: clean
85+
mkdir -p ${CATKIN_PKGS_PATH}
86+
ls -1A | grep -v build | xargs cp -R -t ${CATKIN_PKGS_PATH}
87+
rm -f ${CATKIN_PKGS_PATH}/ariles2_rosparam_ws/CATKIN_IGNORE
88+
89+
catkin_fake_rosdep:
90+
# https://answers.ros.org/question/280213/generate-deb-from-dependent-res-package-locally/#280235
91+
sudo /bin/sh -c 'echo "yaml file:///tmp/rosdep.yaml" > /etc/ros/rosdep/sources.list.d/50-ariles2.list'
92+
sudo rm -Rf /tmp/rosdep.yaml
93+
echo ${WS_PKGS} | tr " " "\n" | \
94+
xargs -I {} sudo /bin/sh -c 'echo "{}:" >> /tmp/rosdep.yaml; echo " ubuntu: [ros-${ROS_DISTRO}-{}]" | tr "_" "-" >> /tmp/rosdep.yaml'
95+
rosdep update --rosdistro ${ROS_DISTRO}
96+
97+
98+
catkin_old_build: catkin_prepare_workspace
99+
cd ${CATKIN_WORKING_DIR}/src; catkin_init_workspace
100+
cd ${CATKIN_WORKING_DIR}; catkin_make_isolated --pkg ${WS_PKGS} ${CATKIN_ARGS} --make-args ${CATKIN_TARGETS} # old
101+
102+
catkin_old_build_with_dependent: catkin_prepare_workspace
103+
cd ${CATKIN_WORKING_DIR}/src; catkin_init_workspace
104+
cd ${CATKIN_WORKING_DIR}; catkin_make_isolated
105+
106+
catkin_old_deb: catkin_prepare_workspace
107+
${MAKE} catkin_test_deb
108+
${MAKE} catkin_prepare_workspace
109+
cd ${CATKIN_PKGS_PATH}/; ls -1A | grep -v demo | xargs rm -Rf
110+
rm ${CATKIN_PKGS_PATH}/demo_catkin/CATKIN_IGNORE
111+
cd ${CATKIN_WORKING_DIR}/src; catkin_init_workspace
112+
cd ${CATKIN_WORKING_DIR}; catkin_make_isolated --pkg ${CATKIN_DEPENDENCY_TEST_PKG}
113+
sudo ${MAKE} clean_deb clean_rosdep
114+
115+
116+
catkin_new_build: catkin_prepare_workspace
117+
cd ${CATKIN_WORKING_DIR}; catkin init
118+
cd ${CATKIN_WORKING_DIR}; catkin build -i --verbose --summary ${WS_PKGS} --make-args ${CATKIN_TARGETS} ${CATKIN_ARGS}
119+
120+
catkin_new_build_with_dependent: catkin_prepare_workspace
121+
rm ${CATKIN_PKGS_PATH}/demo_catkin/CATKIN_IGNORE
122+
cd ${CATKIN_WORKING_DIR}; catkin init
123+
cd ${CATKIN_WORKING_DIR}; catkin build -i --verbose --summary ${CATKIN_DEPENDENCY_TEST_PKG}
124+
125+
catkin_new_deb:
126+
${MAKE} catkin_test_deb
127+
${MAKE} catkin_prepare_workspace
128+
cd ${CATKIN_PKGS_PATH}; ls -1A | grep -v demo | xargs rm -Rf
129+
rm ${CATKIN_PKGS_PATH}/demo_catkin/CATKIN_IGNORE
130+
cd ${CATKIN_WORKING_DIR}; catkin init
131+
cd ${CATKIN_WORKING_DIR}; catkin build -i --verbose --summary ${CATKIN_DEPENDENCY_TEST_PKG}
132+
sudo ${MAKE} clean_deb
133+
134+
135+
catkin_test_old: ros_install_deps
136+
${MAKE} catkin_old_build
137+
${MAKE} catkin_old_build_with_dependent
138+
${MAKE} catkin_old_deb
139+
140+
catkin_test_new: ros_install_deps
141+
${MAKE} catkin_new_build
142+
${MAKE} catkin_new_build_with_dependent
143+
${MAKE} catkin_new_deb
144+
145+
146+
ros_prerelease_deps:
147+
sudo ${MAKE} ros_add_repos UBUNTU_DISTRO=${UBUNTU_DISTRO}
148+
${PIP_INSTALL} empy==3.3.4
149+
${PIP_INSTALL} ros_buildfarm
150+
151+
ros_prerelease: ros_prerelease_deps
152+
# sudo apt install docker.io
153+
# sudo adduser username docker
154+
generate_prerelease_script.py \
155+
https://raw.githubusercontent.com/ros-infrastructure/ros_buildfarm_config/production/index.yaml \
156+
${ROS_DISTRO} default ubuntu ${UBUNTU_DISTRO} amd64 \
157+
--level 0 --custom-repo ${PROJECT}:git:${REPO}:${BRANCH} \
158+
--output-dir ./build/ros_prerelease
159+
# dirty fix to break interactive part of the script
160+
cd ./build/ros_prerelease; sed -i -e "/_ls_prerelease_scripts=/d" prerelease.sh
161+
# shell script debug
162+
cd ./build/ros_prerelease; sed -i 's=\(#!.*sh\)=#!/bin/sh -x=' *.sh
163+
# dirty workaround for ccache permissions issue
164+
cd ./build/ros_prerelease; sed -i "s|\(-e=TRAVIS\)|-eCCACHE_DIR=./.ccache/ \1|" *.sh
165+
cd ./build/ros_prerelease; env ABORT_ON_TEST_FAILURE=1 CCACHE_DIR=`pwd`/.ccache ./prerelease.sh
166+
167+
# docker
168+
#----------------------------------------------
169+
ros_make_docker:
170+
docker pull ros:${ROS_DISTRO}-ros-base-${UBUNTU_DISTRO}
171+
docker run -ti ros:${ROS_DISTRO}-ros-base-${UBUNTU_DISTRO} \
172+
/bin/bash -c "source /opt/ros/${ROS_DISTRO}/setup.bash \
173+
&& git clone -b ${BRANCH} ${REPO} ${PROJECT} \
174+
&& cd ${PROJECT} \
175+
&& make ${TARGET} ROS_DISTRO=${ROS_DISTRO} UBUNTU_DISTRO=${UBUNTU_DISTRO}"
176+
177+
178+
# other
179+
#----------------------------------------------
180+
clean_deb:
181+
dpkg --get-selections | grep ariles2 | cut -f 1 | xargs sudo dpkg -r
182+
183+
clean_rosdep:
184+
rm -Rf /tmp/rosdep.yaml /etc/ros/rosdep/sources.list.d/50-ariles2.list
185+
rosdep update

0 commit comments

Comments
 (0)