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

Is run_exports/pin_subpackage with dart necessary? #107

Open
traversaro opened this issue Dec 20, 2021 · 6 comments
Open

Is run_exports/pin_subpackage with dart necessary? #107

traversaro opened this issue Dec 20, 2021 · 6 comments

Comments

@traversaro
Copy link
Contributor

Based on the problem described in robotology/yarp.js#28 (comment), it seems that run_exports/pin_subpackage with dart is necessary as dart is exposed in the public headers of Gazebo. I am just opening this issue to remember this.

@Tobias-Fischer
Copy link
Contributor

So as far as I understand robotology/yarp.js#28 this is not an issue with gazebo which properly specifies the dartsim (and tbb etc) dependencies; see

Instead in this particular case it's gazebo-yarp-plugins that does not have any dependencies on dartsim although it should have it (I'm not sure why that happens).

So I think we can close the issue here?!? Or maybe I'm misunderstanding :)

@traversaro
Copy link
Contributor Author

traversaro commented Feb 5, 2022

So I think we can close the issue here?!? Or maybe I'm misunderstanding :)

It is a bit hairy (and fortunatly a corner case), so mutual misunderstanding is quite possible. :D

Instead in this particular case it's gazebo-yarp-plugins that does not have any dependencies on dartsim although it should have it (I'm not sure why that happens).

The problem is that gazebo-yarp-plugins does not depend on dart directly, it just links dart as dart is contained in GAZEBO_LIBRARIES variable (see https://github.com/robotology/gazebo-yarp-plugins/blob/40ef333672b9cc85cdf50255d229b6bb462237cb/plugins/imu/CMakeLists.txt#L14).
Why dart is listed in GAZEBO_LIBRARIES? Because in theory all the DART-related data structures are installed in public headers (see https://github.com/osrf/gazebo/blob/cc06796b135f03066a96c68dfa4e2f89d5f76b3a/gazebo/physics/dart/CMakeLists.txt#L58), so a downstream project could include this files that itself include DART headers. A similar issue exists for all other libraries that are used in public headers, even more in the APIs that are actually used by plugins (such as boost).

There is a similar issue for tbb, but in that case the actual classes that use tbb objects are limited and I could not find any downstream project that is using them, so I think we can relatively safely ignore the problem for tbb.

@Tobias-Fischer
Copy link
Contributor

Hm. You are probably right, but one more thing: why does the gazebo-yarp-plugins not depend on gazebo, which to my understanding would pull in all the other dependencies? It looks as if it just depends on yarp and libopencv.

@Tobias-Fischer
Copy link
Contributor

@traversaro - have you checked this further?

@traversaro
Copy link
Contributor Author

traversaro commented Jan 30, 2023

@traversaro - have you checked this further?

I finally have an example of recipe that depends on Gazebo on conda-forge, see conda-forge/staged-recipes#21891 .

This is failing with:

["  
ERROR (libgazebo-yarp-plugins,lib/libgazebo_yarp_linkattacher.so): .. but ['tbb'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)", "  
ERROR (libgazebo-yarp-plugins,lib/libgazebo_yarp_showmodelcom.so): .. but ['libprotobuf'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)", "  
ERROR (libgazebo-yarp-plugins,lib/libgazebo_yarp_showmodelcom.so): .. but ['tbb'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)", " 
ERROR (libgazebo-yarp-plugins,lib/libgazebo_yarp_showmodelcom.so): .. but ['libignition-math6'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)", "  
ERROR (libgazebo-yarp-plugins,lib/libgazebo_yarp_camera.so): .. but ['tbb'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)", " 
ERROR (libgazebo-yarp-plugins,lib/libgazebo_yarp_worldinterface.so): .. but ['tbb'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)", "  
ERROR (libgazebo-yarp-plugins,lib/libgazebo_yarp_MultiCameraPlugin.so): .. but ['tbb'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)", "  
ERROR (libgazebo-yarp-plugins,lib/libgazebo_yarp_externalwrench.so): .. but ['libprotobuf'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)", "  
ERROR (libgazebo-yarp-plugins,lib/libgazebo_yarp_externalwrench.so): .. but ['tbb'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)", "  
ERROR (libgazebo-yarp-plugins,lib/libgazebo_yarp_externalwrench.so): .. but ['libignition-math6'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)", "  
ERROR (libgazebo-yarp-plugins,lib/libgazebo_yarp_multicamera.so): .. but ['tbb'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)", "  
ERROR (libgazebo-yarp-plugins,lib/libgazebo_yarp_multicamera.so): .. but ['libignition-math6'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)", "  
ERROR (libgazebo-yarp-plugins,lib/libgazebo_yarp_lasersensor.so): .. but ['libignition-math6'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)", "  
ERROR (libgazebo-yarp-plugins,lib/libgazebo_yarp_fakecontrolboard.so): .. but ['tbb'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)", "  
ERROR (libgazebo-yarp-plugins,lib/libgazebo_yarp_depthCamera.so): .. but ['tbb'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)", "  
ERROR (libgazebo-yarp-plugins,lib/libgazebo_yarp_depthCamera.so): .. but ['libignition-math6'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)", "  
ERROR (libgazebo-yarp-plugins,lib/libgazebo_yarp_videotexture.so): .. but ['ogre'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)", "  
ERROR (libgazebo-yarp-plugins,lib/libgazebo_yarp_videotexture.so): .. but ['tbb'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)", "  
ERROR (libgazebo-yarp-plugins,lib/libgazebo_yarp_maissensor.so): .. but ['tbb'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)", "  
ERROR (libgazebo-yarp-plugins,lib/libgazebo_yarp_controlboard.so): .. but ['tbb'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)"
]

@traversaro
Copy link
Contributor Author

Related proposal: conda/ceps#77 .

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

2 participants