You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Finished <<< ament_cmake_export_jni_libraries [0.15s]
Finished <<< ament_cmake_export_jars [0.16s]
--- stderr: rcutils
CMake Error at CMakeLists.txt:187 (find_package):
By not providing "Findmimick_vendor.cmake" in CMAKE_MODULE_PATH this
project has asked CMake to find a package configuration file provided by
"mimick_vendor", but CMake did not find one.
Could not find a package configuration file provided by "mimick_vendor"
with any of the following names:
Add the installation prefix of "mimick_vendor" to CMAKE_PREFIX_PATH or set
"mimick_vendor_DIR" to a directory containing one of the above files. If
"mimick_vendor" provides a separate development package or SDK, be sure it
has been installed.
This error can be resolved by setting the following in cmake, after making mimick_vendor from source
set(mimick_vendor_DIR /home/ros2_android_dep/install/mimick_vendor/share/mimick_vendor/cmake)
set(mimick_DIR /home/ros2_android_dep/install/mimick_vendor/lib/cmake/mimick/)
I presume you are following the build instructions for Android, is this correct?
We worked around the issue with mimick in our CI by not building tests for some packages. This is done by creating a colcon.meta file in the workspace with the following contents:
I presume you are following the build instructions for Android, is this correct?
We worked around the issue with mimick in our CI by not building tests for some packages. This is done by creating a colcon.meta file in the workspace with the following contents:
I think we should update the README to reflect the changes in the CI script.
That's true. Thanks Jacob I would also like to add the you have to add -DBOOST_ROOT=/opt/boost/boost_1_77_0/boost
-DBOOST_INCLUDEDIR=/opt/boost/boost_1_77_0/boost
as a Cmake arg other wise asio.hpp is not detected. You have to use ndk 21+ as the <18 cause a compile error, failing basic test.
I have gotten the same issue with spdlog_vendor, will update when I find the solution. After setting -Dspdlog_vendor_DIR=/opt/ros/galactic/share/spdlog_vendor/cmake the error than changes to
CMake Error at CMakeLists.txt:19 (find_package):
By not providing "Findspdlog.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "spdlog", but
CMake did not find one.
Could not find a package configuration file provided by "spdlog" with any
of the following names:
spdlogConfig.cmake
spdlog-config.cmake
Add the installation prefix of "spdlog" to CMAKE_PREFIX_PATH or set
"spdlog_DIR" to a directory containing one of the above files. If "spdlog"
provides a separate development package or SDK, be sure it has been
installed.
I have no solution for this at the moment as there is no such files as spdlogConfig.cmake or spdlog-config.cmake
--- stderr: rcl
CMake Error at cmake/get_default_rcl_logging_implementation.cmake:43 (find_package):
By not providing "Findrcl_logging_spdlog.cmake" in CMAKE_MODULE_PATH this
project has asked CMake to find a package configuration file provided by
"rcl_logging_spdlog", but CMake did not find one.
Could not find a package configuration file provided by
"rcl_logging_spdlog" with any of the following names:
Add the installation prefix of "rcl_logging_spdlog" to CMAKE_PREFIX_PATH or
set "rcl_logging_spdlog_DIR" to a directory containing one of the above
files. If "rcl_logging_spdlog" provides a separate development package or
SDK, be sure it has been installed.
Call Stack (most recent call first):
CMakeLists.txt:18 (get_default_rcl_logging_implementation)
Failed <<< rcl [0.47s, exited with code 1]
Looks like SPDLog is necessary
###############
/home//ros2_android_ws/src/eProsima/Fast-DDS/src/cpp/utils/IPFinder.cpp:165:9: error: use of undeclared identifier 'getifaddrs'; did you mean 'ifaddrs'?
if (getifaddrs(&ifaddr) == -1)
^
/opt/ndk/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/ifaddrs.h:45:8: note: 'ifaddrs' declared here
struct ifaddrs {
^
/home//ros2_android_ws/src/eProsima/Fast-DDS/src/cpp/utils/IPFinder.cpp:223:5: error: use of undeclared identifier 'freeifaddrs'
freeifaddrs(ifaddr);
^
Solution:
ANDROID_NDK=/opt/ndk/android-ndk-r21e
Set API >=24
As for the asio.hpp issue you need to git submodule update --init --recursive within the Fast-DDS directory, to get the asio libraries under thirdparty (which are currently link folders so aren't cloned) than add
@jacobperron I can't seem to find a solution to the spd log issue. Not sure why spdlog_vendor requires spdlog as well
EDIT
set(RCL_LOGGING_IMPLEMENTATION rcl_logging_noop) in rcl CMAKE removes this dependency otherwise the get_default_rcl_logging_implementation() call brings it in. This allows for ignoring spdlog. Its finally compiled now.
Activity
ahmadnav commentedon Nov 14, 2021
I have double checked that the package mimick_vendor has been installed, I have tried
ahmadnav commentedon Nov 15, 2021
This error can be resolved by setting the following in cmake, after making mimick_vendor from source
set(mimick_vendor_DIR /home/ros2_android_dep/install/mimick_vendor/share/mimick_vendor/cmake)
set(mimick_DIR /home/ros2_android_dep/install/mimick_vendor/lib/cmake/mimick/)
jacobperron commentedon Nov 15, 2021
I presume you are following the build instructions for Android, is this correct?
We worked around the issue with mimick in our CI by not building tests for some packages. This is done by creating a colcon.meta file in the workspace with the following contents:
ros2_java/.github/workflows/build_and_test.yml
Lines 37 to 61 in 5134c54
I think we should update the README to reflect the changes in the CI script.
ahmadnav commentedon Nov 15, 2021
That's true. Thanks Jacob I would also like to add the you have to add -DBOOST_ROOT=/opt/boost/boost_1_77_0/boost
-DBOOST_INCLUDEDIR=/opt/boost/boost_1_77_0/boost
as a Cmake arg other wise asio.hpp is not detected. You have to use ndk 21+ as the <18 cause a compile error, failing basic test.
ahmadnav commentedon Nov 15, 2021
I have gotten the same issue with spdlog_vendor, will update when I find the solution. After setting -Dspdlog_vendor_DIR=/opt/ros/galactic/share/spdlog_vendor/cmake the error than changes to
CMake Error at CMakeLists.txt:19 (find_package):
By not providing "Findspdlog.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "spdlog", but
CMake did not find one.
Could not find a package configuration file provided by "spdlog" with any
of the following names:
Add the installation prefix of "spdlog" to CMAKE_PREFIX_PATH or set
"spdlog_DIR" to a directory containing one of the above files. If "spdlog"
provides a separate development package or SDK, be sure it has been
installed.
I have no solution for this at the moment as there is no such files as spdlogConfig.cmake or spdlog-config.cmake
jacobperron commentedon Nov 16, 2021
We shouldn't need spdlog as I'm pretty sure we're not relying on
rcl_logging.I'll try going through the Android setup myself and see if I can update the instructions for a smoother experience.
ahmadnav commentedon Nov 17, 2021
Thanks Jacob, Now I get the following error;
eProsima/Fast-DDS/src/cpp/rtps/transport/UDPChannelResource.h:18:10: fatal error: 'asio.hpp' file not found
I definitely have boost and libiso installed, and can see asio.hpp in /usr/include.
ahmadnav commentedon Nov 26, 2021
@jacobperron
--- stderr: rcl
CMake Error at cmake/get_default_rcl_logging_implementation.cmake:43 (find_package):
By not providing "Findrcl_logging_spdlog.cmake" in CMAKE_MODULE_PATH this
project has asked CMake to find a package configuration file provided by
"rcl_logging_spdlog", but CMake did not find one.
Could not find a package configuration file provided by
"rcl_logging_spdlog" with any of the following names:
Add the installation prefix of "rcl_logging_spdlog" to CMAKE_PREFIX_PATH or
set "rcl_logging_spdlog_DIR" to a directory containing one of the above
files. If "rcl_logging_spdlog" provides a separate development package or
SDK, be sure it has been installed.
Call Stack (most recent call first):
CMakeLists.txt:18 (get_default_rcl_logging_implementation)
Failed <<< rcl [0.47s, exited with code 1]
Looks like SPDLog is necessary
###############
/home//ros2_android_ws/src/eProsima/Fast-DDS/src/cpp/utils/IPFinder.cpp:165:9: error: use of undeclared identifier 'getifaddrs'; did you mean 'ifaddrs'?
if (getifaddrs(&ifaddr) == -1)
^
/opt/ndk/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/ifaddrs.h:45:8: note: 'ifaddrs' declared here
struct ifaddrs {
^
/home//ros2_android_ws/src/eProsima/Fast-DDS/src/cpp/utils/IPFinder.cpp:223:5: error: use of undeclared identifier 'freeifaddrs'
freeifaddrs(ifaddr);
^
Solution:
ANDROID_NDK=/opt/ndk/android-ndk-r21e
Set API >=24
ahmadnav commentedon Nov 26, 2021
As for the asio.hpp issue you need to git submodule update --init --recursive within the Fast-DDS directory, to get the asio libraries under thirdparty (which are currently link folders so aren't cloned) than add
within target_include_directories(${PROJECT_NAME} PUBLIC ) in eProsima/Fast-DDS/src/cpp/CMakeLists.txt
ahmadnav commentedon Nov 26, 2021
@jacobperron I can't seem to find a solution to the spd log issue. Not sure why spdlog_vendor requires spdlog as well
EDIT
set(RCL_LOGGING_IMPLEMENTATION rcl_logging_noop) in rcl CMAKE removes this dependency otherwise the get_default_rcl_logging_implementation() call brings it in. This allows for ignoring spdlog. Its finally compiled now.