Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dependency error on ament_cmake #213

Closed
akihikoy opened this issue Oct 15, 2020 · 9 comments
Closed

Dependency error on ament_cmake #213

akihikoy opened this issue Oct 15, 2020 · 9 comments

Comments

@akihikoy
Copy link

Hello,
When building my package, I got a dependency error of eigenpy on ament_cmake.
My ROS version is kinetic.

Details:
The error message was:

[rospack] Error: package 'eigenpy' depends on non-existent package 'ament_cmake' and rosdep claims that it is not a system dependency. Check the ROS_PACKAGE_PATH or try calling 'rosdep update

eigenpy is referred to in moveit_ros_planning_interface, which my package depends on.

Since I installed moveit_ros_planning_interface and eigenpy from binary repository, I expected ament_cmake is provided as a binary package, but I cannot find it.
Furthermore, I'm not sure if this information is correct, but according to this website, ament_cmake is not provided for kinetic.

As a quick solution, I commented out the dependency on ament_cmake in /opt/ros/kinetic/share/eigenpy/package.xml, I could compile my package.

<!-- <exec_depend condition="$ROS_VERSION == 2">ament_cmake</exec_depend> -->

Probably this is a dependency bug of eigenpy.

Thanks,

@olivier-stasse
Copy link
Member

olivier-stasse commented Oct 15, 2020

Dear @akihikoy,
Thanks for the feedback.
The package.xml file of eigenpy is following format 3 as described in the related ROS specifications. This allow the build system to switch between catkin in ROS1 and ament on ROS2.

Switching between one or the other depends on the value of the base ROS_VERSION environment variable, and here in your case this condition should happen only if ROS_VERSION is set to 2.

So I would recommend to check your bash variables first. Using Kinetic ROS_VERSION should be set to 1 according to ros_environnement

Hope it helps.

@akihikoy
Copy link
Author

Dear @olivier-stasse ,
Thank you for your support!
I checked the ROS_VERSION and it was already set to be 1.

$ echo $ROS_VERSION
1

I also tried to write set(ROS_VERSION "1") in my CMake file, but the error was the same. But package.xml looks correct. Then, would this error be caused by the build system...?

Regards,

@olivier-stasse
Copy link
Member

Dear @akihikoy,
Thanks for the information.

According to this PR catkin on kinetic has been upgraded to handle package.xml with the attribute condition. As this is a feature of package format 3 could you confirm that your catkin packages are up to date ?

@akihikoy
Copy link
Author

Dear @olivier-stasse ,
Thank you for the support.

Yes, I executed apt-get update and confirmed ros-kinetic-catkin is the latest version (0.7.20-1xenial-20191213-232805+0000; BTW my OS is Ubuntu 16.04).
Actually I installed the OS and ROS just a week ago. Most of the packages should be latest.

Definitely the binary package version of catkin (for kinetic or Ubuntu 16.04) is older than the latest version, which could be a reason of this issue.
So I quickly checked the updates of catkin ver 0.7.20 (comparing 0.7.10 vs. 0.7.20); it seems that 0.7.20 already has updates for the dependency conditions, including PR#1025 that you mentioned.

@olivier-stasse
Copy link
Member

Dear @akihikoy,
Thanks again for the feedback. I'll try to check and get back to you. But in the meantime if you could provide a minimal package example that exhibit the problem it will help to find a solution.

@jcarpent
Copy link
Contributor

Any news on this issue?

@olivier-stasse
Copy link
Member

olivier-stasse commented Oct 22, 2020

Well, we checked with @nim65s but ros-kinetic-pinocchio depends on ros-kinetic-eigenpy and the ROS buildfarm is not complaining.

In addition, today I quickly installed https://github.com/ros-planning/moveit_tutorials inside a catkin workspace. The installation located was done in the docker osrf/ros:kinetic-full-desktop. The tutorials depends on the package moveit_ros_planning_interface and i was able to perform catkin_make without any problem. Therefore without a docker on which test can be done, I do not see what more can be done in our side.

@jcarpent
Copy link
Contributor

Thanks @olivier-stasse for your quick and detailed feedback. @akihikoy Could you give us your status on this issue?

@jcarpent
Copy link
Contributor

I will close this issue since there is no activity so far. @akihikoy Feel free to reopen it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants