Skip to content

Commit 7d525ed

Browse files
authored
docs(known_issue): add extra workarounds for library confliction (#370)
* docs(known_issue): add extra workarounds for library confliction Signed-off-by: takeshi.iwanari <take.iwiw2222@gmail.com> * change the order Signed-off-by: takeshi.iwanari <take.iwiw2222@gmail.com> * fix spell check Signed-off-by: takeshi.iwanari <take.iwiw2222@gmail.com> * add minors Signed-off-by: takeshi.iwanari <take.iwiw2222@gmail.com> --------- Signed-off-by: takeshi.iwanari <take.iwiw2222@gmail.com>
1 parent 96c6516 commit 7d525ed

File tree

1 file changed

+57
-15
lines changed

1 file changed

+57
-15
lines changed

docs/faq/known_issues.md

Lines changed: 57 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
<!-- cspell:ignore Drclcpp Dtracetools -->
2+
13
# Known issues
24

35
## Install
@@ -63,30 +65,32 @@ export PYTHONWARNINGS=ignore:"setup.py install is deprecated.",ignore:"easy_inst
6365
- Cause
6466
- `~/ros2_caret_ws/install/tracetools/lib/libtracetools.so` needs to be linked, but `/opt/ros/humble/lib/libtracetools.so` is referred when using some packages
6567
- For instance, `pcl_ros` package has `/opt/ros/humble/share/pcl_ros/cmake/export_pcl_rosExport.cmake` which enforces `/opt/ros/humble/lib/libtracetools.so` to be linked
66-
- Workaround
68+
- Workaround 1
6769
- Remove `/opt/ros/humble/lib/libtracetools.so;` from `/opt/ros/humble/share/pcl_ros/cmake/export_pcl_rosExport.cmake`
6870

6971
```sh
7072
sudo cp /opt/ros/humble/share/pcl_ros/cmake/export_pcl_rosExport.cmake /opt/ros/humble/share/pcl_ros/cmake/export_pcl_rosExport.cmake.bak
7173
sudo sed -i -e 's/\/opt\/ros\/humble\/lib\/libtracetools.so;//g' /opt/ros/humble/share/pcl_ros/cmake/export_pcl_rosExport.cmake
7274
```
7375

74-
### Build using ament_cmake
76+
- Workaround 2
77+
- If the error persists after applying workaround 1, modify all libraries
7578

76-
- Issue
77-
- The following error happens when building a target application using ament_cmake
78-
- `error: too few arguments to function ‘void ros_trace_rclcpp_publish`
79-
- Cause
80-
- `SYSTEM` is added as dependencies in ament_cmake_auto by [this PR](https://github.com/ament/ament_cmake/commit/799183ab9bcfd9b66df0de9b644abaf8c9b78e84). As a result, ros2/rclcpp is used rather than CARET/rclcpp in some packages
81-
- Workaround
82-
- Remove `SYSTEM` from dependencies in ament_cmake_auto
79+
```sh
80+
sudo grep -rl '/opt/ros/humble/lib/libtracetools.so;' /opt/ros/humble/share --include="*.cmake" |
81+
while read -r f; do
82+
echo "Delete reference to libtracetools from $f"
83+
sudo cp "$f" "$f.bak"
84+
sudo sed -i 's|/opt/ros/humble/lib/libtracetools.so;||g' "$f"
85+
done
86+
```
87+
88+
- Workaround 3
89+
- If the error persists even after applying workaround 1 and 2, ensure that the CARET tracetools library is used by explicitly setting `-Dtracetools_DIR`
90+
- This can occur especially when the target application is built with `--merge-install`
8391

8492
```sh
85-
cd /opt/ros/humble/share/ament_cmake_auto/cmake/
86-
sudo cp ament_auto_add_executable.cmake ament_auto_add_executable.cmake.bak
87-
sudo cp ament_auto_add_library.cmake ament_auto_add_library.cmake.bak
88-
sudo sed -i -e 's/SYSTEM//g' ament_auto_add_executable.cmake
89-
sudo sed -i -e 's/SYSTEM//g' ament_auto_add_library.cmake
93+
--cmake-args -Dtracetools_DIR="$HOME/ros2_caret_ws/install/tracetools/share/tracetools/cmake"
9094
```
9195

9296
### SYSTEM's rclcpp is referred
@@ -103,14 +107,52 @@ sudo sed -i -e 's/SYSTEM//g' ament_auto_add_library.cmake
103107
- Cause
104108
- To build with CARET, caret/rclcpp should be used. However, in case rclcpp in SYSTEM ( `/opt/ros/humble` ) is used for some reasons, build will fail
105109
- Take `pcl_ros` for example, `/opt/ros/humble/share/pcl_ros/cmake/export_pcl_rosExport.cmake` enforces `/opt/ros/humble/include/rclcpp` to be referred. So that caret/rclcpp is not used and building a package depending on `pcl_ros` will fail
106-
- Workaround
110+
- Workaround 1
107111
- Remove `/opt/ros/humble/include/rclcpp;` from `/opt/ros/humble/share/pcl_ros/cmake/export_pcl_rosExport.cmake`
108112

109113
```sh
110114
sudo cp /opt/ros/humble/share/pcl_ros/cmake/export_pcl_rosExport.cmake /opt/ros/humble/share/pcl_ros/cmake/export_pcl_rosExport.cmake.bak2
111115
sudo sed -i -e 's/\/opt\/ros\/humble\/include\/rclcpp;//g' /opt/ros/humble/share/pcl_ros/cmake/export_pcl_rosExport.cmake
112116
```
113117

118+
- Workaround 2
119+
- If the error persists after applying workaround 1, modify all libraries
120+
121+
```sh
122+
sudo grep -rl '/opt/ros/humble/include/rclcpp;' /opt/ros/humble/share --include="*.cmake" |
123+
while read -r f; do
124+
echo "Delete reference to rclcpp from $f"
125+
sudo cp "$f" "$f.bak"
126+
sudo sed -i 's|/opt/ros/humble/include/rclcpp;||g' "$f"
127+
done
128+
```
129+
130+
- Workaround 3
131+
- If the error persists even after applying workaround 1 and 2, ensure that the CARET rclcpp is used by explicitly setting `-Drclcpp_DIR`
132+
- This can occur especially when the target application is built with `--merge-install`
133+
134+
```sh
135+
--cmake-args -Drclcpp_DIR="$HOME/ros2_caret_ws/install/rclcpp/share/rclcpp/cmake"
136+
```
137+
138+
### Build using ament_cmake
139+
140+
- Issue
141+
- The following error happens when building a target application using ament_cmake
142+
- `error: too few arguments to function ‘void ros_trace_rclcpp_publish`
143+
- Cause
144+
- `SYSTEM` is added as dependencies in ament_cmake_auto by [this PR](https://github.com/ament/ament_cmake/commit/799183ab9bcfd9b66df0de9b644abaf8c9b78e84). As a result, ros2/rclcpp is used rather than CARET/rclcpp in some packages
145+
- Workaround
146+
- Remove `SYSTEM` from dependencies in ament_cmake_auto
147+
148+
```sh
149+
cd /opt/ros/humble/share/ament_cmake_auto/cmake/
150+
sudo cp ament_auto_add_executable.cmake ament_auto_add_executable.cmake.bak
151+
sudo cp ament_auto_add_library.cmake ament_auto_add_library.cmake.bak
152+
sudo sed -i -e 's/SYSTEM//g' ament_auto_add_executable.cmake
153+
sudo sed -i -e 's/SYSTEM//g' ament_auto_add_library.cmake
154+
```
155+
114156
## Recording
115157

116158
### Only metadata is recorded

0 commit comments

Comments
 (0)