Skip to content

Conversation

traversaro
Copy link
Member

@traversaro traversaro commented Jul 15, 2025

As discussed in #93 . Definitely not complete, but it can be a starting point, if anyone wants to iterate on the patches please ping me so I can give you access to the fork.

Fix #81 .
Fix #93 .
Fix #57 .

@traversaro
Copy link
Member Author

Ok, most of the porting done, now there is the usual cleanup of upstreamed (or outdated) patches, probably the easiest thing is to iterate on this locally with pixi run check-patches .

wep21 added 7 commits July 17, 2025 09:26
Signed-off-by: wep21 <[email protected]>
Signed-off-by: wep21 <[email protected]>
Signed-off-by: wep21 <[email protected]>
Signed-off-by: wep21 <[email protected]>
Signed-off-by: wep21 <[email protected]>
Signed-off-by: wep21 <[email protected]>
@Tobias-Fischer
Copy link
Contributor

We should consider moving to cyclonedds here as well for MacOS.

@traversaro
Copy link
Member Author

Thanks @gftabor and @wep21 , you are both now contributors for my fork, feel free to push directly fixes to the branch, thanks!

@traversaro
Copy link
Member Author

The "got segment" message I was using in the test was silenced: ros/robot_state_publisher#206 .

@Tobias-Fischer
Copy link
Contributor

osx-64 failure:

2025-07-24T01:40:14.1215300Z  │ │ FAILED: [code=1] libbackward.dylib 
2025-07-24T01:40:14.1256240Z  │ │ : && $BUILD_PREFIX/bin/x86_64-apple-darwin13.4.0-clang++ -march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fstack-protector-strong -O2 -pipe -stdlib=libc++ -fvisibility-inlines-hidden -fmessage-length=0 -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/ros-jazzy-backward-ros-1.0.8 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix -DBOOST_ERROR_CODE_HEADER_ONLY -Wall -Wextra -pedantic-errors -g -O3 -DNDEBUG -isysroot /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -mmacosx-version-min=10.15 -dynamiclib -Wl,-headerpad_max_install_names -Wl,-headerpad_max_install_names -Wl,-dead_strip_dylibs -Wl,-rpath,$PREFIX/lib -L$PREFIX/lib -o libbackward.dylib -install_name @rpath/libbackward.dylib CMakeFiles/backward.dir/src/backward.cpp.o  $PREFIX/lib/libbfd.a  /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libdl.tbd  -liberty  -lz && :
2025-07-24T01:40:14.1264660Z  │ │ ld: library not found for -liberty

I think we fixed this somewhere previously, but I can't see where ..

osx-arm64 failure:

2025-07-24T00:48:24.5229820Z  │ ✔ Successfully updated the test environment
2025-07-24T00:48:24.5281110Z  │ Testing commands:
2025-07-24T00:48:25.1878870Z  │ [INFO] [launch]: All log files can be found below /Users/runner/.ros/log/2025-07-24-00-48-25-173629-Mac-1753313980157.local-81132
2025-07-24T00:48:25.1879670Z  │ [INFO] [launch]: Default logging verbosity is set to INFO
2025-07-24T00:48:25.1909380Z  │ [INFO] [robot_state_publisher-1]: process started with pid [81133]
2025-07-24T00:48:25.3549980Z  │ [robot_state_publisher-1] [INFO] [1753318105.354043000] [robot_state_publisher]: Robot initialized
2025-07-24T00:48:25.3551330Z  │ test_node_output (robot_state_publisher_smoke_test_launch.TestRobotStatePublisher.test_node_output) ... ok
2025-07-24T00:48:25.3557670Z  │ ----------------------------------------------------------------------
2025-07-24T00:48:25.3558030Z  │ Ran 1 test in 0.165s
2025-07-24T00:48:25.3558250Z  │ OK
2025-07-24T00:48:25.3559500Z  │ [INFO] [robot_state_publisher-1]: sending signal 'SIGINT' to process[robot_state_publisher-1]
2025-07-24T00:48:25.3564640Z  │ [robot_state_publisher-1] [INFO] [1753318105.356166000] [rclcpp]: signal_handler(signum=2)
2025-07-24T00:48:30.3585570Z  │ [ERROR] [robot_state_publisher-1]: process[robot_state_publisher-1] failed to terminate '5' seconds after receiving 'SIGINT', escalating to 'SIGTERM'
2025-07-24T00:48:30.3589730Z  │ [INFO] [robot_state_publisher-1]: sending signal 'SIGTERM' to process[robot_state_publisher-1]
2025-07-24T00:48:30.3591800Z  │ [robot_state_publisher-1] [INFO] [1753318110.358667000] [rclcpp]: signal_handler(signum=15)
2025-07-24T00:48:35.3611150Z  │ [ERROR] [robot_state_publisher-1]: process[robot_state_publisher-1] failed to terminate '10.0' seconds after receiving 'SIGTERM', escalating to 'SIGKILL'
2025-07-24T00:48:35.3622390Z  │ [INFO] [robot_state_publisher-1]: sending signal 'SIGKILL' to process[robot_state_publisher-1]
2025-07-24T00:48:35.3624360Z  │ [ERROR] [robot_state_publisher-1]: process has died [pid 81133, exit code -9, cmd '$PREFIX/lib/robot_state_publisher/robot_state_publisher --ros-args -r __node:=robot_state_publisher --params-file /var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/launch_params_b233fyz4'].
2025-07-24T00:48:35.3629580Z  │ test_exit_codes (robot_state_publisher_smoke_test_launch.TestRobotStatePublisherPostShutdown.test_exit_codes) ... FAIL
2025-07-24T00:48:35.3631670Z  │ ======================================================================
2025-07-24T00:48:35.3634040Z  │ FAIL: test_exit_codes (robot_state_publisher_smoke_test_launch.TestRobotStatePublisherPostShutdown.test_exit_codes)
2025-07-24T00:48:35.3635750Z  │ ----------------------------------------------------------------------
2025-07-24T00:48:35.3637480Z  │ Traceback (most recent call last):
2025-07-24T00:48:35.3640650Z  │   File "$SRC_DIR/robot_state_publisher_smoke_test_launch.py", line 53, in test_exit_codes
2025-07-24T00:48:35.3642330Z  │     launch_testing.asserts.assertExitCodes(proc_info)
2025-07-24T00:48:35.3645210Z  │   File "$PREFIX/lib/python3.12/site-packages/launch_testing/asserts/assert_exit_codes.py", line 62, in assertExitCodes
2025-07-24T00:48:35.3647180Z  │     assert info.returncode in allowable_exit_codes, 'Proc {} exited with code {}'.format(
2025-07-24T00:48:35.3649050Z  │            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-07-24T00:48:35.3651120Z  │ AssertionError: Proc robot_state_publisher-1 exited with code -9

linux-* failures (very long, just a snippet):

2025-07-23T23:48:29.2653128Z Error:   × Failed to resolve dependencies: Cannot solve the request because of: gz-
2025-07-23T23:48:29.2653721Z   │ sim8 * cannot be installed because there are no viable options:
2025-07-23T23:48:29.2654283Z   │ ├─ gz-sim8 8.6.0 would require
2025-07-23T23:48:29.2654632Z   │ │  └─ libgz-sim8 ==8.6.0 py313hc65e6bb_5, which cannot be installed
2025-07-23T23:48:29.2654967Z   │ because there are no viable options:
2025-07-23T23:48:29.2655353Z   │ │     └─ libgz-sim8 8.6.0 would require
2025-07-23T23:48:29.2655843Z   │ │        └─ python >=3.13,<3.14.0a0 *_cp313, for which no candidates were
2025-07-23T23:48:29.2656242Z   │ found.

win-64 failure:

2025-07-24T00:29:39.4357944Z  │ │ %PREFIX%\Library\include\fmt\base.h(463,28): error C2338: static_assert failed: 'Unicode support requires compiling with /utf-8' [%SRC_DIR%\build\control_toolbox.vcxproj]
2025-07-24T00:29:39.4825882Z  │ │   (compiling source file '../ros-jazzy-control-toolbox/src/work/src/pid.cpp')

Don't look like any easy wins ...

@traversaro
Copy link
Member Author

I think we fixed this somewhere previously, but I can't see where ..

osx-64 failure:

2025-07-24T01:40:14.1215300Z  │ │ FAILED: [code=1] libbackward.dylib 
2025-07-24T01:40:14.1256240Z  │ │ : && $BUILD_PREFIX/bin/x86_64-apple-darwin13.4.0-clang++ -march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fstack-protector-strong -O2 -pipe -stdlib=libc++ -fvisibility-inlines-hidden -fmessage-length=0 -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/ros-jazzy-backward-ros-1.0.8 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix -DBOOST_ERROR_CODE_HEADER_ONLY -Wall -Wextra -pedantic-errors -g -O3 -DNDEBUG -isysroot /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -mmacosx-version-min=10.15 -dynamiclib -Wl,-headerpad_max_install_names -Wl,-headerpad_max_install_names -Wl,-dead_strip_dylibs -Wl,-rpath,$PREFIX/lib -L$PREFIX/lib -o libbackward.dylib -install_name @rpath/libbackward.dylib CMakeFiles/backward.dir/src/backward.cpp.o  $PREFIX/lib/libbfd.a  /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libdl.tbd  -liberty  -lz && :
2025-07-24T01:40:14.1264660Z  │ │ ld: library not found for -liberty

We removed the binutils dependency so all that part of backward is not compiled, see RoboStack/ros-humble@9374e56 and RoboStack/ros-kilted#23 .

@traversaro
Copy link
Member Author

osx-64 failure:

2025-07-24T01:40:14.1215300Z  │ │ FAILED: [code=1] libbackward.dylib 
2025-07-24T01:40:14.1256240Z  │ │ : && $BUILD_PREFIX/bin/x86_64-apple-darwin13.4.0-clang++ -march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fstack-protector-strong -O2 -pipe -stdlib=libc++ -fvisibility-inlines-hidden -fmessage-length=0 -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/ros-jazzy-backward-ros-1.0.8 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix -DBOOST_ERROR_CODE_HEADER_ONLY -Wall -Wextra -pedantic-errors -g -O3 -DNDEBUG -isysroot /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -mmacosx-version-min=10.15 -dynamiclib -Wl,-headerpad_max_install_names -Wl,-headerpad_max_install_names -Wl,-dead_strip_dylibs -Wl,-rpath,$PREFIX/lib -L$PREFIX/lib -o libbackward.dylib -install_name @rpath/libbackward.dylib CMakeFiles/backward.dir/src/backward.cpp.o  $PREFIX/lib/libbfd.a  /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libdl.tbd  -liberty  -lz && :
2025-07-24T01:40:14.1264660Z  │ │ ld: library not found for -liberty

I think we fixed this somewhere previously, but I can't see where ..

osx-arm64 failure:

2025-07-24T00:48:24.5229820Z  │ ✔ Successfully updated the test environment
2025-07-24T00:48:24.5281110Z  │ Testing commands:
2025-07-24T00:48:25.1878870Z  │ [INFO] [launch]: All log files can be found below /Users/runner/.ros/log/2025-07-24-00-48-25-173629-Mac-1753313980157.local-81132
2025-07-24T00:48:25.1879670Z  │ [INFO] [launch]: Default logging verbosity is set to INFO
2025-07-24T00:48:25.1909380Z  │ [INFO] [robot_state_publisher-1]: process started with pid [81133]
2025-07-24T00:48:25.3549980Z  │ [robot_state_publisher-1] [INFO] [1753318105.354043000] [robot_state_publisher]: Robot initialized
2025-07-24T00:48:25.3551330Z  │ test_node_output (robot_state_publisher_smoke_test_launch.TestRobotStatePublisher.test_node_output) ... ok
2025-07-24T00:48:25.3557670Z  │ ----------------------------------------------------------------------
2025-07-24T00:48:25.3558030Z  │ Ran 1 test in 0.165s
2025-07-24T00:48:25.3558250Z  │ OK
2025-07-24T00:48:25.3559500Z  │ [INFO] [robot_state_publisher-1]: sending signal 'SIGINT' to process[robot_state_publisher-1]
2025-07-24T00:48:25.3564640Z  │ [robot_state_publisher-1] [INFO] [1753318105.356166000] [rclcpp]: signal_handler(signum=2)
2025-07-24T00:48:30.3585570Z  │ [ERROR] [robot_state_publisher-1]: process[robot_state_publisher-1] failed to terminate '5' seconds after receiving 'SIGINT', escalating to 'SIGTERM'
2025-07-24T00:48:30.3589730Z  │ [INFO] [robot_state_publisher-1]: sending signal 'SIGTERM' to process[robot_state_publisher-1]
2025-07-24T00:48:30.3591800Z  │ [robot_state_publisher-1] [INFO] [1753318110.358667000] [rclcpp]: signal_handler(signum=15)
2025-07-24T00:48:35.3611150Z  │ [ERROR] [robot_state_publisher-1]: process[robot_state_publisher-1] failed to terminate '10.0' seconds after receiving 'SIGTERM', escalating to 'SIGKILL'
2025-07-24T00:48:35.3622390Z  │ [INFO] [robot_state_publisher-1]: sending signal 'SIGKILL' to process[robot_state_publisher-1]
2025-07-24T00:48:35.3624360Z  │ [ERROR] [robot_state_publisher-1]: process has died [pid 81133, exit code -9, cmd '$PREFIX/lib/robot_state_publisher/robot_state_publisher --ros-args -r __node:=robot_state_publisher --params-file /var/folders/y6/nj790rtn62lfktb1sh__79hc0000gn/T/launch_params_b233fyz4'].
2025-07-24T00:48:35.3629580Z  │ test_exit_codes (robot_state_publisher_smoke_test_launch.TestRobotStatePublisherPostShutdown.test_exit_codes) ... FAIL
2025-07-24T00:48:35.3631670Z  │ ======================================================================
2025-07-24T00:48:35.3634040Z  │ FAIL: test_exit_codes (robot_state_publisher_smoke_test_launch.TestRobotStatePublisherPostShutdown.test_exit_codes)
2025-07-24T00:48:35.3635750Z  │ ----------------------------------------------------------------------
2025-07-24T00:48:35.3637480Z  │ Traceback (most recent call last):
2025-07-24T00:48:35.3640650Z  │   File "$SRC_DIR/robot_state_publisher_smoke_test_launch.py", line 53, in test_exit_codes
2025-07-24T00:48:35.3642330Z  │     launch_testing.asserts.assertExitCodes(proc_info)
2025-07-24T00:48:35.3645210Z  │   File "$PREFIX/lib/python3.12/site-packages/launch_testing/asserts/assert_exit_codes.py", line 62, in assertExitCodes
2025-07-24T00:48:35.3647180Z  │     assert info.returncode in allowable_exit_codes, 'Proc {} exited with code {}'.format(
2025-07-24T00:48:35.3649050Z  │            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-07-24T00:48:35.3651120Z  │ AssertionError: Proc robot_state_publisher-1 exited with code -9

For some reason the exit code on macOS are failing in the tests, I skipped it in RoboStack/ros-humble@afe5b72 .

@traversaro
Copy link
Member Author

win-64 failure:

2025-07-24T00:29:39.4357944Z  │ │ %PREFIX%\Library\include\fmt\base.h(463,28): error C2338: static_assert failed: 'Unicode support requires compiling with /utf-8' [%SRC_DIR%\build\control_toolbox.vcxproj]
2025-07-24T00:29:39.4825882Z  │ │   (compiling source file '../ros-jazzy-control-toolbox/src/work/src/pid.cpp')

macOS is failing with a similar error:

librosidl_typesupport_c.dylib  $PREFIX/lib/librosidl_runtime_c.dylib  $PREFIX/lib/librcpputils.dylib  $PREFIX/lib/librcutils.dylib && :
2025-07-24T15:17:15.6291280Z  │ │ Undefined symbols for architecture arm64:
2025-07-24T15:17:15.6393100Z  │ │   "fmt::v11::vformat(fmt::v11::basic_string_view<char>, fmt::v11::basic_format_args<fmt::v11::context>)", referenced from:
2025-07-24T15:17:15.6492630Z  │ │       control_toolbox::AntiWindupStrategy::validate() const in pid_ros.cpp.o
2025-07-24T15:17:15.6593300Z  │ │       control_toolbox::Pid::Gains::validate(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) const in pid_ros.cpp.o
2025-07-24T15:17:15.6694420Z  │ │       control_toolbox::Pid::Gains::validate(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&) const in pid.cpp.o
2025-07-24T15:17:15.6795270Z  │ │       control_toolbox::AntiWindupStrategy::validate() const in pid.cpp.o
2025-07-24T15:17:15.6895670Z  │ │ ld: symbol(s) not found for architecture arm64
2025-07-24T15:17:15.6996700Z  │ │ arm64-apple-darwin20.0: error: linker command failed with exit code 1 (use -v to see invocation)

I guess control_toolbox is missing a link to fmt::fmt, either direct or via a library that exposes fmt in its public headers.

@traversaro
Copy link
Member Author

I guess control_toolbox is missing a link to fmt::fmt, either direct or via a library that exposes fmt in its public headers.

ros-controls/control_toolbox#435 .

@Tobias-Fischer
Copy link
Contributor

It looks like there is an empty cartographer package being created that has precedence over the cartographer package in conda-forge. I don't yet understand enough about the new dummy package creation to fix this, but it should probably be an easy fix for you, @traversaro?

@traversaro
Copy link
Member Author

It looks like there is an empty cartographer package being created that has precedence over the cartographer package in conda-forge. I don't yet understand enough about the new dummy package creation to fix this, but it should probably be an easy fix for you, @traversaro?

See RoboStack/ros-humble#320 (comment) , so the fix is easy. Let me do a general alignement of ros-jazzy and ros-humble to propagate other fixes.

@traversaro
Copy link
Member Author

It looks like there is an empty cartographer package being created that has precedence over the cartographer package in conda-forge. I don't yet understand enough about the new dummy package creation to fix this, but it should probably be an easy fix for you, @traversaro?

See RoboStack/ros-humble#320 (comment) , so the fix is easy. Let me do a general alignement of ros-jazzy and ros-humble to propagate other fixes.

General alignment done in 3bc909b .

@traversaro
Copy link
Member Author

Let me guess, clang 19 created to many new warnings on projects that set Werror?

@Tobias-Fischer
Copy link
Contributor

Let me guess, clang 19 created to many new warnings on projects that set Werror?

Yes, and even some other errors not related to Werror as far as I can tell

@Tobias-Fischer
Copy link
Contributor

@Tobias-Fischer
Copy link
Contributor

Looks like we’re nearly done here :)

@Tobias-Fischer Tobias-Fischer merged commit fb1dcaa into RoboStack:main Jul 26, 2025
5 checks passed
@Tobias-Fischer
Copy link
Contributor

We're running into RoboStack/ros-kilted#19 @traversaro - we should try and fix conda-forge/pygraphviz-feedstock#45 to resolve this once and for all :)

@Tobias-Fischer
Copy link
Contributor

@Tobias-Fischer
Copy link
Contributor

See also 97c812d

@Tobias-Fischer
Copy link
Contributor

The pygraphviz PR has been merged. Is it easiest to do another full rebuild? Or just a few packages?

@Tobias-Fischer
Copy link
Contributor

Looks like it just works - hooray :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment