ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

Build fails on simple msgs packages on the ROS 2 Buildfarm

asked 2023-06-24 04:53:35 -0600

Markus Bader gravatar image

I am trying to get my package tuw_msgs released for ros2, but the build on the ROS2 Buildfarm fails. My packages are simple because there are only messages. I compared the packages with the common msgs unsuccessfully. Can somebody give me a hint where to look or what to change?

There's a link to one package (tuw_object_msgs) that failed: Hbin_uJ64__tuw_object_msgs__ubuntu_jammy_amd64__binary which is part of tuw_msgs which also shows some issues.

See <https://build.ros2.org/job/Fbin_uF64__tuw_airskin_msgs__ubuntu_focal_amd64__binary/91/display/redirect>

Changes:


------------------------------------------
[...truncated 272.08 KB...]
make[3]: Entering directory '/tmp/binarydeb/ros-foxy-tuw-airskin-msgs-0.0.15/.obj-x86_64-linux-gnu/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_04aec.dir/testCXXCompiler.cxx.o
/usr/lib/ccache/c++    -g -O2 -fdebug-prefix-map=/tmp/binarydeb/ros-foxy-tuw-airskin-msgs-0.0.15=. -fstack-protector-strong -Wformat -Werror=format-security -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2    -o CMakeFiles/cmTC_04aec.dir/testCXXCompiler.cxx.o -c /tmp/binarydeb/ros-foxy-tuw-airskin-msgs-0.0.15/.obj-x86_64-linux-gnu/CMakeFiles/CMakeTmp/testCXXCompiler.cxx
Linking CXX executable cmTC_04aec
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_04aec.dir/link.txt --verbose=1
/usr/lib/ccache/c++  -g -O2 -fdebug-prefix-map=/tmp/binarydeb/ros-foxy-tuw-airskin-msgs-0.0.15=. -fstack-protector-strong -Wformat -Werror=format-security -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2     CMakeFiles/cmTC_04aec.dir/testCXXCompiler.cxx.o  -o cmTC_04aec 
make[3]: Leaving directory '/tmp/binarydeb/ros-foxy-tuw-airskin-msgs-0.0.15/.obj-x86_64-linux-gnu/CMakeFiles/CMakeTmp'
make[2]: Leaving directory '/tmp/binarydeb/ros-foxy-tuw-airskin-msgs-0.0.15/.obj-x86_64-linux-gnu/CMakeFiles/CMakeTmp'



Detecting CXX compiler ABI info compiled with the following output:
Change Dir: /tmp/binarydeb/ros-foxy-tuw-airskin-msgs-0.0.15/.obj-x86_64-linux-gnu/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/make cmTC_1f0ad/fast && make[2]: Entering directory '/tmp/binarydeb/ros-foxy-tuw-airskin-msgs-0.0.15/.obj-x86_64-linux-gnu/CMakeFiles/CMakeTmp'
/usr/bin/make -f CMakeFiles/cmTC_1f0ad.dir/build.make CMakeFiles/cmTC_1f0ad.dir/build
make[3]: Entering directory '/tmp/binarydeb/ros-foxy-tuw-airskin-msgs-0.0.15/.obj-x86_64-linux-gnu/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_1f0ad.dir/CMakeCXXCompilerABI.cpp.o
/usr/lib/ccache/c++    -g -O2 -fdebug-prefix-map=/tmp/binarydeb/ros-foxy-tuw-airskin-msgs-0.0.15=. -fstack-protector-strong -Wformat -Werror=format-security -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2    -v -o CMakeFiles/cmTC_1f0ad.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp
Using built-in specs.
COLLECT_GCC=/usr/bin/c++
OFFLOAD_TARGET_NAMES=nvptx-none:hsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) 
COLLECT_GCC_OPTIONS='-g' '-O2' '-fdebug-prefix-map=/tmp/binarydeb/ros-foxy-tuw-airskin-msgs-0.0.15=.' '-fstack-protector-strong' '-Wformat=1' '-Werror=format-security' '-Wdate-time' '-v' '-D' 'NDEBUG' '-D' '_FORTIFY_SOURCE=2' '-c' '-o' 'CMakeFiles/cmTC_1f0ad.dir/CMakeCXXCompilerABI.cpp.o' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE -D ...
(more)
edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted
1

answered 2023-06-24 12:43:26 -0600

nuclearsandwich gravatar image

updated 2023-06-26 14:07:15 -0600

Here is the relevant section of https://build.ros2.org/job/Hbin_uJ64_... and https://build.ros2.org/job/Fbin_uF64_... appears to have the same issue.

The log excerpt in the question is part of CMake's diagnostic output. Whenever that's encountered it's important to find the the line

-- Configuring incomplete, errors occurred!

and look above that in order to find the actual problem.

14:34:22 CMake Error at /opt/ros/humble/share/rosidl_generator_c/cmake/rosidl_generator_c_generate_interfaces.cmake:179 (find_package): 14:34:22 By not providing "Findament_cmake_cppcheck.cmake" in CMAKE_MODULE_PATH this 14:34:22 project has asked CMake to find a package configuration file provided by 14:34:22 "ament_cmake_cppcheck", but CMake did not find one. 14:34:22 14:34:22 Could not find a package configuration file provided by 14:34:22 "ament_cmake_cppcheck" with any of the following names: 14:34:22 14:34:22 ament_cmake_cppcheckConfig.cmake 14:34:22 ament_cmake_cppcheck-config.cmake

Although the dependency on ament_cmake_cppcheckis coming from https://github.com/ros2/rosidl/blame/... and none of that has directly changed recently. I don't have an immediate answer for what the best way to proceed is since adding the dependency in your package isn't quite correct (although I think it would mask the problem) but the inclusion of ament_cmake_cppcheck is conditional within the CMake configuration site yet it isn't possible to make dependencies in package.xml conditional, so a case could be made that rosidl_generate_c ought to either test_depend or buildtool_export_depend ament_cmake_cppcheck.


The issue on Foxy devel jobs is that with https://github.com/ros/rosdistro/pull... merged ros_buildfarm can no longer "find" foxy because it is only looking in active distributions. In the future it would make more sense to disable the Foxy build farm jobs before merging that change.

edit flag offensive delete link more

Comments

Hi, I tried both, I added <buildtool_export_depend>ament_cmake_cppcheck</buildtool_export_depend> on build #11 and afterward I tried <test_depend>ament_cmake_cppcheck</test_depend> build #12.

It looks like both works for on jammy but if fails on focal.

Markus Bader gravatar image Markus Bader  ( 2023-06-25 14:34:05 -0600 )edit

Hmm... that issue with Foxy is a different one and with Foxy's last sync now complete new releases into Foxy will not be merged.

nuclearsandwich gravatar image nuclearsandwich  ( 2023-06-26 09:57:04 -0600 )edit
0

answered 2023-06-26 13:32:48 -0600

The right fix for:

Could not find a package configuration file provided by
"ament_cmake_cppcheck" with any of the following names:
...

...is absolutely to add <test_depend>ament_cmake_cppcheck</test_depend>. The reason that the Foxy job failed is because Foxy is EOL in rosdistro. I expect that the problem is fixed on Focal as well, but there aren't any buildfarm targets for Foxy anymore, so we can't use that to validate it anymore.

edit flag offensive delete link more

Comments

Is this correct even if the CMake error itself is coming from another package? I would not expect a direct package.xml dependency to be required for an indirect build dependency.

nuclearsandwich gravatar image nuclearsandwich  ( 2023-06-26 14:05:17 -0600 )edit

Hmm, that's a good point.

Your package is picking up the dependency because of the ADD_LINTER_TESTS argument to rosidl_generate_interfaces(). Because that's an optional flag, I'm not sure it makes sense for rosidl_generator_cmake to export that dependency implicitly, so it APPEARS that packages which use that flag need to <test_depends> on the linters explicitly.

Looks like cppcheck, cpplint, and uncrustify are all invoked: https://github.com/ros2/rosidl/blob/1...

cottsay gravatar image cottsay  ( 2023-06-26 17:13:59 -0600 )edit

Wow, I'm not sure how, but I completely missed @nuclearsandwich's answer above, of which mine is a total duplicate. Apologies!

cottsay gravatar image cottsay  ( 2023-06-26 17:15:10 -0600 )edit

Question Tools

2 followers

Stats

Asked: 2023-06-24 04:53:35 -0600

Seen: 164 times

Last updated: Jun 26 '23