Closed james-p-foster closed 1 year ago
Hi @b1n-ch1kn, this looks exactly like your problem where the wrong Python interpreter is picked up by cmake. Can you please write down the steps to fix it?
Basically, the issue seems to be with cmake. If you downgrade to cmake 3.18, delete all build files, and pass https://github.com/RoboStack/vinca/blob/8be7ab86d554fa0c0e845f900b56b467e3092970/vinca/templates/build_catkin.sh.in#L72-L74 to your colcon call, it will work.
@traversaro - any clue what this could be?
See https://colcon.readthedocs.io/en/released/reference/verb/build.html on how to pass cmake args.
See also https://github.com/RoboStack/ros-humble/issues/39#issuecomment-1399459318 . @james-p-foster can you are also:
env
command (make sure not to include any sensitive env variable such as token or similar)Thanks!
I also fixed my issue using the cmake args from https://github.com/RoboStack/ros-humble/issues/39#issuecomment-1399459318.
This is a little different to the issue I had on aarch-linux64
where the message package was actually building successfully but not being imported correctly when implemented in another Python node
Probably as a first mitigation we could add https://github.com/RoboStack/ros-humble/issues/39#issuecomment-1399459318 to FAQs, I can also check if there is some way to influence FindPython's behaviour via env variables.
Agreed! Could you please add instructions to https://github.com/RoboStack/robostack.github.io/pull/23 @traversaro? I’ll review and merge this next week.
Agreed! Could you please add instructions to RoboStack/robostack.github.io#23 @traversaro? I’ll review and merge this next week.
Done: https://github.com/ruben-arts/robostack.github.io/pull/1 .
Thanks all for your help. As you suggest, CMake was finding the wrong python. I checked CMakeCache.txt
and found that PYTHON_EXECUTABLE
was my system python.
I'll note for any others arriving here however, that rather than doing e.g. -DPYTHON_EXECUTABLE=$CONDA_PYTHON_EXE
in build arguments as suggested above, I instead chose to do -DPYTHON_EXECUTABLE=/home/${USER}/miniconda3/envs/ros2/bin/python
, as I was working in a specific conda environment called ros2
. The former instead gets you the python of the conda base
environment (to my knowledge). I'll close this now.
Good catch - $CONDA_PYTHON_EXE
indeed points to the base
env. Should we change it to $PREFIX/bin/python
? Or is there a nicer way @traversaro @wolfv?
Good catch -
$CONDA_PYTHON_EXE
indeed points to thebase
env. Should we change it to$PREFIX/bin/python
? Or is there a nicer way @traversaro @wolfv?
You are right, sorry! Indeed the correct way is $CONDA_PREFIX/bin/python
on Linux/macOS and %CONDA_PREFIX%\python
on Windows ($PREFIX
is defined just during conda-build I guess).
Solution to issue cannot be found in the documentation.
Issue
I've been trying to convert pure message packages (only consisting of
.msg
files in the/msg
dir) from ROS 1 to ROS 2 and have been running into multiple issues. To investigate, I made a minimal example:package.xml:
CMakeLists.txt:
My custom message, located in
msg/DumbMessage.msg
:When I run:
colcon build --packages-select blah_msgs --symlink-install
, I get:I'm pretty sure I have other problems when working with custom messages beyond this one, but I'm stuck here for now.
Installed packages
Environment info