ethz-asl / yaml_cpp_catkin

Yaml cpp catkin package
5 stars 26 forks source link

Fixed the conflict between system-installed yaml-cpp 0.3 and this yaml-cpp 0.5 #6

Closed peci1 closed 8 years ago

peci1 commented 8 years ago

This fixes the issue where (for example) rviz on indigo depends on yaml-cpp 0.3, and some other package uses yaml_cpp_catkin to get yaml-cpp 0.5. Both of these libraries have the same name of the shared object file, libyaml-cpp.so, so only one version of yaml-cpp can be in the system at one time. An example of the problem caused to rviz can be seen here: https://github.com/ros-visualization/rviz/issues/1000 .

This PR renames the shared object file to libyaml-cpp0.5.so, which is no longer conflicting with the older one.

I'd bet just using a different library name should not break existing code, if it depends just on yaml_cpp_catkin (or YAML_CPP_CATKIN_EXPORTED_TARGETS) and not directly on yaml-cpp target. In the latter case, all target_link_libraries(... yaml-cpp) need to be rewritten to target_link_libraries(... yaml-cpp0.5).

All projects depending on this package need to be rebuilt, and especially the devel directory to be deleted (or at least devel/lib/libyaml-cpp.so* ). Maybe also build/yaml_cpp_catkin (not sure about this one).

@rdube and @gawela might be interested in testing if it doesn't break their code.

I'm not quite sure if this is the right way to go, but I think it definitely needs to be solved in some way, so that this package doesn't break rviz.

peci1 commented 8 years ago

My bad, rviz doesn't depend on yaml-cpp 0.3, but on yaml-cpp 0.5.1... however, the rationale remain the same - once you introduce a library in a different than the system-installed version, it should be named differently.

Based on this, it might be better not to rename to yaml-cpp0.5, but to yaml-cpp-catkin or something like that.

peci1 commented 8 years ago

Another option would be detecting if there is a system-installed yaml-cpp >= 0.5 library, and if there is, using that one. I've tried to achieve something like that a while ago, but I didn't succeed.

rdube commented 8 years ago

@peci1 thanks for looking into this! I never had this rviz issue before and since I pulled the last version of yaml_cpp_catkin I do have it now. The patch does not seem to solve it for me. I'll check if it is still working on the previous version of yaml_cpp_catkin.

rdube commented 8 years ago

@peci1 the patch actually worked for me (I forgot to clean the build and devel folders). Thanks! I propose we stay on tradr-project:fix_yaml_cpp_conflict for now until this is resolved.

@ZacharyTaylor @hitimo you did the latest changes. Whos maintaining this package?

ZacharyTaylor commented 8 years ago

I just merged a pull request when the old yaml-cpp link died. I don't know who is actually responsible for the package

magehrig commented 8 years ago

This works on Ubuntu 16.04 with ROS Kinetic. It seems that nobody is maintaining it anymore. Any volunteers (I don't think I am experienced enough yet)?

rdube commented 8 years ago

@dymczykm as discussed we did not test this extensively but if it works out on your side I'm happy that it helped! :-)