-
Notifications
You must be signed in to change notification settings - Fork 97
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
ManifestManager.get_depends_on should not depend on rosdep #103
Comments
How exactly should the question "filtering out non-ROS dependencies" be answered without rosdep in this case? |
Actually, you're right, this is probably not possible for ManifestManager.get_depends, but get_depends_on relies on looking through the manifests of packages on the system. It shouldn't need to check whether the dependencies in those manifests are ROS dependencies since it's looking for a specific dependency name already. |
Updated title. |
That sounds reasonable. Since you seem to have a use case for this could you please consider providing a pull request for this enhancement. |
Ok, will attempt do to so in the next few day. |
This was originally motivated by a plugin discovery use-case, but we have another one now— rosbag_migration uses get_depends_on, and therefore depends on rosdep being present and initialized: https://github.com/ros/ros_comm/blob/kinetic-devel/tools/rosbag/src/rosbag/migration.py#L529 FYI @efernandez @jjekircp |
If I understand well, we need to remove the dependency on I don't fully understand which other tools/libraries can be used instead. If any of you could help me with that, I could try to provide a PR. |
Essentially, these are the only two methods used from So the question is: how can we check if a dependency is a ros OR a system dependency w/o @abencz Could you elaborate a little more on why we don't need to filter ros from system dependencies for Note that |
ping @abencz @dirk-thomas |
The proposal made above is that This should be pretty easy— it's essentially popping open each The main questions I'd have for @dirk-thomas about this is:
|
No,
I don't think a patch should call Currently |
I've now gone down the rabbit hole a bit on this, and it's actually a little different than expressed above. Both rosbag migration plugin discovery and roswtf plugin discovery call
The real issue is that the sorting out of rosdeps and system package dependencies happens in the Lines 387 to 410 in 60109b6
It's not at all clear to me that there's a good way forward here:
Maybe the rosdeps/depends attributes could be populated lazily rather than upfront, and the check could become |
Both of these queries can be implemented by examining the the list of packages in the ROS environment and filtering out non-ROS dependencies in the manifest based on this list. This is important because these methods are used in several places at runtime (e.g. to load plugins in roswtf) and runtime behaviour shouldn't depend on rosdeps being up-to-date.
The text was updated successfully, but these errors were encountered: