Skip to content

Commit 3abe6f0

Browse files
Fix jazzy interfaces && Apply patches to msgs
Signed-off-by: Eugenio Collado <eugeniocollado@eprosima.com>
1 parent 0f5651c commit 3abe6f0

6 files changed

Lines changed: 297 additions & 1 deletion

CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,13 @@ install(
3838
DIRECTORY config DESTINATION . USE_SOURCE_PERMISSIONS
3939
)
4040

41+
install(
42+
DIRECTORY patches DESTINATION share/${PROJECT_NAME} USE_SOURCE_PERMISSIONS
43+
)
44+
4145
install(
4246
PROGRAMS
47+
scripts/apply_patches.sh
4348
scripts/create_ws.sh
4449
scripts/create_agent_ws.sh
4550
scripts/create_firmware_ws.sh
Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
diff --git a/ros2/rcl_interfaces/action_msgs/CMakeLists.txt b/ros2/rcl_interfaces/action_msgs/CMakeLists.txt
2+
index b5f34b9..65db062 100644
3+
--- a/ros2/rcl_interfaces/action_msgs/CMakeLists.txt
4+
+++ b/ros2/rcl_interfaces/action_msgs/CMakeLists.txt
5+
@@ -15,7 +15,7 @@ find_package(ament_cmake REQUIRED)
6+
find_package(builtin_interfaces REQUIRED)
7+
# Depend on "core" generators instead of "default" generators
8+
# because ROS actions depend on this package
9+
-find_package(rosidl_core_generators REQUIRED)
10+
+find_package(rosidl_default_generators REQUIRED)
11+
find_package(unique_identifier_msgs REQUIRED)
12+
13+
set(msg_files
14+
@@ -39,6 +39,6 @@ if(BUILD_TESTING)
15+
ament_lint_auto_find_test_dependencies()
16+
endif()
17+
18+
-ament_export_dependencies(rosidl_core_runtime)
19+
+ament_export_dependencies(rosidl_default_runtime)
20+
21+
ament_package()
22+
diff --git a/ros2/rcl_interfaces/action_msgs/package.xml b/ros2/rcl_interfaces/action_msgs/package.xml
23+
index 2b0fca7..006029b 100644
24+
--- a/ros2/rcl_interfaces/action_msgs/package.xml
25+
+++ b/ros2/rcl_interfaces/action_msgs/package.xml
26+
@@ -15,13 +15,13 @@
27+
<author email="michel@ekumenlabs.com">Michel Hidalgo</author>
28+
29+
<buildtool_depend>ament_cmake</buildtool_depend>
30+
- <buildtool_depend>rosidl_core_generators</buildtool_depend>
31+
+ <buildtool_depend>rosidl_default_generators</buildtool_depend>
32+
33+
<depend>builtin_interfaces</depend>
34+
<depend>service_msgs</depend>
35+
<depend>unique_identifier_msgs</depend>
36+
37+
- <exec_depend>rosidl_core_runtime</exec_depend>
38+
+ <exec_depend>rosidl_default_runtime</exec_depend>
39+
40+
<test_depend>ament_lint_auto</test_depend>
41+
<test_depend>ament_lint_common</test_depend>
42+
diff --git a/ros2/rcl_interfaces/builtin_interfaces/CMakeLists.txt b/ros2/rcl_interfaces/builtin_interfaces/CMakeLists.txt
43+
index 282d38e..67c1339 100644
44+
--- a/ros2/rcl_interfaces/builtin_interfaces/CMakeLists.txt
45+
+++ b/ros2/rcl_interfaces/builtin_interfaces/CMakeLists.txt
46+
@@ -14,7 +14,7 @@ endif()
47+
find_package(ament_cmake REQUIRED)
48+
# Depend on "core" generators instead of "default" generators
49+
# because ROS actions depend on this package
50+
-find_package(rosidl_core_generators REQUIRED)
51+
+find_package(rosidl_default_generators REQUIRED)
52+
53+
rosidl_generate_interfaces(${PROJECT_NAME}
54+
"msg/Duration.msg"
55+
@@ -22,6 +22,6 @@ rosidl_generate_interfaces(${PROJECT_NAME}
56+
ADD_LINTER_TESTS
57+
)
58+
59+
-ament_export_dependencies(rosidl_core_runtime)
60+
+ament_export_dependencies(rosidl_default_runtime)
61+
62+
ament_package()
63+
diff --git a/ros2/rcl_interfaces/builtin_interfaces/package.xml b/ros2/rcl_interfaces/builtin_interfaces/package.xml
64+
index 57540d0..2116b3e 100644
65+
--- a/ros2/rcl_interfaces/builtin_interfaces/package.xml
66+
+++ b/ros2/rcl_interfaces/builtin_interfaces/package.xml
67+
@@ -15,9 +15,9 @@
68+
69+
<buildtool_depend>ament_cmake</buildtool_depend>
70+
71+
- <buildtool_depend>rosidl_core_generators</buildtool_depend>
72+
+ <buildtool_depend>rosidl_default_generators</buildtool_depend>
73+
74+
- <exec_depend>rosidl_core_runtime</exec_depend>
75+
+ <exec_depend>rosidl_default_runtime</exec_depend>
76+
77+
<test_depend>ament_lint_common</test_depend>
78+
79+
diff --git a/ros2/rcl_interfaces/type_description_interfaces/CMakeLists.txt b/ros2/rcl_interfaces/type_description_interfaces/CMakeLists.txt
80+
index c3ac72b..4374456 100644
81+
--- a/ros2/rcl_interfaces/type_description_interfaces/CMakeLists.txt
82+
+++ b/ros2/rcl_interfaces/type_description_interfaces/CMakeLists.txt
83+
@@ -13,7 +13,7 @@ endif()
84+
find_package(ament_cmake REQUIRED)
85+
# Depend on "core" generators instead of "default" generators
86+
# because other generators depend on this.
87+
-find_package(rosidl_core_generators REQUIRED)
88+
+find_package(rosidl_default_generators REQUIRED)
89+
90+
rosidl_generate_interfaces(${PROJECT_NAME}
91+
"msg/Field.msg"
92+
@@ -31,6 +31,6 @@ if(BUILD_TESTING)
93+
ament_lint_auto_find_test_dependencies()
94+
endif()
95+
96+
-ament_export_dependencies(rosidl_core_runtime)
97+
+ament_export_dependencies(rosidl_default_runtime)
98+
99+
ament_package()
100+
diff --git a/ros2/rcl_interfaces/type_description_interfaces/package.xml b/ros2/rcl_interfaces/type_description_interfaces/package.xml
101+
index 3c17a88..72813cb 100644
102+
--- a/ros2/rcl_interfaces/type_description_interfaces/package.xml
103+
+++ b/ros2/rcl_interfaces/type_description_interfaces/package.xml
104+
@@ -11,11 +11,11 @@
105+
106+
<buildtool_depend>ament_cmake</buildtool_depend>
107+
108+
- <buildtool_depend>rosidl_core_generators</buildtool_depend>
109+
+ <buildtool_depend>rosidl_default_generators</buildtool_depend>
110+
111+
<depend>service_msgs</depend>
112+
113+
- <exec_depend>rosidl_core_runtime</exec_depend>
114+
+ <exec_depend>rosidl_default_runtime</exec_depend>
115+
116+
<test_depend>ament_lint_auto</test_depend>
117+
<test_depend>ament_lint_common</test_depend>
118+
diff --git a/ros2/unique_identifier_msgs/CMakeLists.txt b/ros2/unique_identifier_msgs/CMakeLists.txt
119+
index 382b8ec..00498c3 100644
120+
--- a/ros2/unique_identifier_msgs/CMakeLists.txt
121+
+++ b/ros2/unique_identifier_msgs/CMakeLists.txt
122+
@@ -15,7 +15,7 @@ endif()
123+
find_package(ament_cmake REQUIRED)
124+
# Depend on "core" generators instead of "default" generators
125+
# because ROS actions depend on this package
126+
-find_package(rosidl_core_generators REQUIRED)
127+
+find_package(rosidl_default_generators REQUIRED)
128+
129+
set(msg_files
130+
"msg/UUID.msg"
131+
@@ -23,7 +23,7 @@ set(msg_files
132+
133+
rosidl_generate_interfaces(${PROJECT_NAME} ${msg_files})
134+
135+
-ament_export_dependencies(rosidl_core_runtime)
136+
+ament_export_dependencies(rosidl_default_runtime)
137+
138+
if(BUILD_TESTING)
139+
find_package(ament_lint_auto REQUIRED)
140+
diff --git a/ros2/unique_identifier_msgs/package.xml b/ros2/unique_identifier_msgs/package.xml
141+
index 95509ca..2e8f4e4 100644
142+
--- a/ros2/unique_identifier_msgs/package.xml
143+
+++ b/ros2/unique_identifier_msgs/package.xml
144+
@@ -19,9 +19,9 @@
145+
146+
<buildtool_depend>ament_cmake</buildtool_depend>
147+
148+
- <buildtool_depend>rosidl_core_generators</buildtool_depend>
149+
+ <buildtool_depend>rosidl_default_generators</buildtool_depend>
150+
151+
- <exec_depend>rosidl_core_runtime</exec_depend>
152+
+ <exec_depend>rosidl_default_runtime</exec_depend>
153+
154+
<test_depend>ament_lint_auto</test_depend>
155+
<test_depend>ament_lint_common</test_depend>
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
diff --git a/ros2/example_interfaces/CMakeLists.txt b/ros2/example_interfaces/CMakeLists.txt
2+
index e7dae2c..033eda0 100644
3+
--- a/ros2/example_interfaces/CMakeLists.txt
4+
+++ b/ros2/example_interfaces/CMakeLists.txt
5+
@@ -12,7 +12,10 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
6+
endif()
7+
8+
find_package(ament_cmake REQUIRED)
9+
+find_package(action_msgs REQUIRED)
10+
+find_package(builtin_interfaces REQUIRED)
11+
find_package(rosidl_default_generators REQUIRED)
12+
+find_package(unique_identifier_msgs REQUIRED)
13+
14+
rosidl_generate_interfaces(${PROJECT_NAME}
15+
"action/Fibonacci.action"
16+
@@ -48,6 +51,7 @@ rosidl_generate_interfaces(${PROJECT_NAME}
17+
"srv/AddTwoInts.srv"
18+
"srv/SetBool.srv"
19+
"srv/Trigger.srv"
20+
+ DEPENDENCIES builtin_interfaces unique_identifier_msgs
21+
)
22+
23+
install(FILES mapping_rules.yaml DESTINATION share/${PROJECT_NAME})
24+
diff --git a/ros2/example_interfaces/package.xml b/ros2/example_interfaces/package.xml
25+
index f127a53..31f8653 100644
26+
--- a/ros2/example_interfaces/package.xml
27+
+++ b/ros2/example_interfaces/package.xml
28+
@@ -17,6 +17,10 @@
29+
30+
<buildtool_depend>rosidl_default_generators</buildtool_depend>
31+
32+
+ <depend>action_msgs</depend>
33+
+ <depend>builtin_interfaces</depend>
34+
+ <depend>unique_identifier_msgs</depend>
35+
+
36+
<exec_depend>rosidl_default_runtime</exec_depend>
37+
38+
<member_of_group>rosidl_interface_packages</member_of_group>
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
diff --git a/ros2/rcl_interfaces/test_msgs/CMakeLists.txt b/ros2/rcl_interfaces/test_msgs/CMakeLists.txt
2+
index 433833b..b2472b8 100644
3+
--- a/ros2/rcl_interfaces/test_msgs/CMakeLists.txt
4+
+++ b/ros2/rcl_interfaces/test_msgs/CMakeLists.txt
5+
@@ -17,9 +17,11 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
6+
endif()
7+
8+
find_package(ament_cmake REQUIRED)
9+
+find_package(action_msgs REQUIRED)
10+
find_package(builtin_interfaces REQUIRED)
11+
find_package(rosidl_default_generators REQUIRED)
12+
find_package(test_interface_files REQUIRED)
13+
+find_package(unique_identifier_msgs REQUIRED)
14+
15+
# TODO(sloretz) Change to test_msgs_interfaces when ros2/rosidl_typesupport#120 is fixed
16+
rosidl_generate_interfaces(test_msgs
17+
@@ -29,7 +31,7 @@ rosidl_generate_interfaces(test_msgs
18+
${test_interface_files_IDL_FILES}
19+
"msg/Builtins.msg"
20+
"action/NestedMessage.action"
21+
- DEPENDENCIES builtin_interfaces
22+
+ DEPENDENCIES builtin_interfaces unique_identifier_msgs
23+
ADD_LINTER_TESTS
24+
)
25+
26+
diff --git a/ros2/rcl_interfaces/test_msgs/package.xml b/ros2/rcl_interfaces/test_msgs/package.xml
27+
index 67fe631..0f76490 100644
28+
--- a/ros2/rcl_interfaces/test_msgs/package.xml
29+
+++ b/ros2/rcl_interfaces/test_msgs/package.xml
30+
@@ -17,8 +17,10 @@
31+
32+
<buildtool_depend>rosidl_default_generators</buildtool_depend>
33+
34+
+ <depend>action_msgs</depend>
35+
<build_depend>builtin_interfaces</build_depend>
36+
<build_depend>test_interface_files</build_depend>
37+
+ <depend>unique_identifier_msgs</depend>
38+
39+
<exec_depend>builtin_interfaces</exec_depend>
40+
<exec_depend>rosidl_default_runtime</exec_depend>

scripts/apply_patches.sh

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
#!/bin/bash
2+
3+
set -e
4+
set -o nounset
5+
set -o pipefail
6+
7+
if [ $# -ne 1 ]; then
8+
echo "Syntax: $0 <workspace_dir>"
9+
exit 255
10+
fi
11+
12+
WORKSPACE_DIR=$1
13+
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
14+
PATCH_DIR=""
15+
16+
for candidate in \
17+
"${SCRIPT_DIR}/../../share/micro_ros_setup/patches" \
18+
"${SCRIPT_DIR}/../share/micro_ros_setup/patches" \
19+
"${SCRIPT_DIR}/../patches"
20+
do
21+
if [ -d "${candidate}" ]; then
22+
PATCH_DIR="${candidate}"
23+
break
24+
fi
25+
done
26+
27+
if [ ! -d "${WORKSPACE_DIR}" ]; then
28+
echo "Error: Workspace '${WORKSPACE_DIR}' does not exist"
29+
exit 255
30+
fi
31+
32+
if [ -z "${PATCH_DIR}" ]; then
33+
echo "Error: Patch directory '${PATCH_DIR}' does not exist"
34+
exit 255
35+
fi
36+
37+
apply_patch_file() {
38+
local patch_file=$1
39+
40+
if patch --batch --forward -p1 -d "${WORKSPACE_DIR}" --dry-run < "${patch_file}" >/dev/null 2>&1; then
41+
echo "Applying $(basename "${patch_file}")"
42+
patch --batch --forward -p1 -d "${WORKSPACE_DIR}" < "${patch_file}" >/dev/null
43+
return
44+
fi
45+
46+
if patch --batch --reverse -p1 -d "${WORKSPACE_DIR}" --dry-run < "${patch_file}" >/dev/null 2>&1; then
47+
echo "Skipping $(basename "${patch_file}") (already applied)"
48+
return
49+
fi
50+
51+
echo "Error: Failed to apply $(basename "${patch_file}") in ${WORKSPACE_DIR}"
52+
exit 1
53+
}
54+
55+
shopt -s nullglob
56+
for patch_file in "${PATCH_DIR}"/*.patch; do
57+
apply_patch_file "${patch_file}"
58+
done

scripts/create_ws.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,6 @@ curl -s https://raw.githubusercontent.com/ros2/ros2/jazzy/ros2.repos |\
4444
ros2 run micro_ros_setup yaml_filter.py ${PACKAGES} > ros2.repos
4545
vcs import --input ros2.repos --skip-existing
4646
vcs import --input $REPOS --skip-existing
47+
"$(dirname "$0")/apply_patches.sh" "$(pwd)"
4748

4849
popd >/dev/null
49-

0 commit comments

Comments
 (0)