RoboStack / ros-humble

Recipes for ROS 2 Humble Hawksbill
85 stars 33 forks source link

Add webots_ros2 to mac osx arm64 #19

Closed EdanToledo closed 1 year ago

wolfv commented 1 year ago

Hmm, something is a bit strange -- it doesn't seem to start building for osx-arm64 although some recipes are generated properly. Can you also add the webots packages to osx-64?

Tobias-Fischer commented 1 year ago

Mistake on our side - let’s see what happens now.

wolfv commented 1 year ago

Whoops! :)

wolfv commented 1 year ago

I remember now what the difficulty was with the webots stuff -- there is some hard coded Python version in some CMake files, e.g. https://github.com/cyberbotics/webots_ros2/blob/1e395e1f7c976780bb936bb6b19ae02df81a0759/webots_ros2_driver/CMakeLists.txt#L39-L44

Unfortunately, we are currently using Python 3.9 which differs from "upstream" where they are using 3.10 ...

EdanToledo commented 1 year ago

I remember now what the difficulty was with the webots stuff -- there is some hard coded Python version in some CMake files, e.g. https://github.com/cyberbotics/webots_ros2/blob/1e395e1f7c976780bb936bb6b19ae02df81a0759/webots_ros2_driver/CMakeLists.txt#L39-L44

Unfortunately, we are currently using Python 3.9 which differs from "upstream" where they are using 3.10 ...

I see - so there is no solution then. A large swathe of Cambridge uni students would use robostack if this interface worked. is there any way around this?

Tobias-Fischer commented 1 year ago

The issue now is the following:

ld: warning: ignoring file $SRC_DIR/ros-humble-webots-ros2-driver/src/work/webots/lib/darwin19/libController.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64

In their repository (https://github.com/cyberbotics/webots_ros2/tree/master/webots_ros2_driver) they have a submodule that points to https://github.com/cyberbotics/webots-libcontroller/tree/dad1045ae664b1910a50058fc2fdb757f550813a which includes pre-compiled libraries, but only for osx-64, not osx-arm64.

@EdanToledo - if you can convince upstream to build the libraries also for osx-arm64, or build the libraries yourself so we can include them, there should be nothing else in the way to get this to work. Alternatively, you could use the osx-64 RoboStack builds on your osx-arm64 machines.

Tobias-Fischer commented 1 year ago

So upstream already has the proper dylib files that support both osx-64 and osx-arm64 in their webots release file. All they need to do is update the https://github.com/cyberbotics/webots-libcontroller/ and we should be good to go. Unfortunately, binary patches are not supported in conda/git as far as I can tell (@wolfv do you know a better way?), so there is no easy way around this. Are you happy to open an issue upstream @EdanToledo?

EdanToledo commented 1 year ago

I wouldn't mind opening the issue upstream, I'm just not exactly sure on what to ask in the issue. Is it as simple as asking them to build binaries for osx-arm64?

Tobias-Fischer commented 1 year ago

Yes :).