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

fcl: 0.6.1-1 in 'noetic/distribution.yaml' [bloom] #26706

Merged
merged 1 commit into from
Oct 9, 2020

Conversation

rhaschke
Copy link
Contributor

Increasing version of package(s) in repository fcl to 0.6.1-1:

@rhaschke rhaschke requested a review from sloretz as a code owner September 26, 2020 00:11
@rhaschke
Copy link
Contributor Author

This addresses #26527 by releasing fcl as a ROS package as suggested in #26527 (comment).

@mabelzhang
Copy link
Contributor

I read the discussion there but couldn't decide whether the discussion is finished and final.
I'll let @sloretz or someone more familiar with the matter merge this PR.

Copy link
Contributor

@ivanpauno ivanpauno left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!
I would like @sloretz to confirm if this PR resolves #26527 correctly.

@rhaschke
Copy link
Contributor Author

rhaschke commented Oct 9, 2020

@sloretz, friendly ping: Is there anything blocking this release? Do you have objections?

@sloretz
Copy link
Contributor

sloretz commented Oct 9, 2020

@sloretz, friendly ping: Is there anything blocking this release? Do you have objections?

Nothing blocking, just on my TODO list to look closely at before the next sync.

@tfoote
Copy link
Member

tfoote commented Oct 9, 2020

Since the sync just came out. I'm going to merge this so we can get testing of it in the majority of this cycle.

@sloretz
Copy link
Contributor

sloretz commented Oct 23, 2020

It looks like there were some build failures on armhf and aarch64, which appears to have caused MoveIt to not build. I opened a PR upstream: flexible-collision-library/fcl#506

@peci1
Copy link
Contributor

peci1 commented Apr 23, 2021

@rhaschke I understand the need for newer (and the same) versions of fcl on noetic. However, the situation it created is pretty non-straightforward for people not seeing into the reasons why there are these two different versions.

See e.g. flexible-collision-library/fcl#533 where I got pretty confused :)

So, to prevent this confusion, I suggest adding a few lines to http://wiki.ros.org/noetic/Migration . I think this definitely is a thing people migrating from Melodic need to take special care of. Ideally, with examples what CMake commands should be used to always get the system version, and what commands should be used to always get the ROS version. Because if you do it "somehow", you can pretty easily get a mixed version that doesn't work and is hard to debug. I'm sorry, but I don't have the knowledge to write these lines myself...

@rhaschke
Copy link
Contributor Author

@peci1, I'm not sure how you managed to get a mix of two different versions. There are no special cmake commands to get one or the other version. By default, overlaying /opt/ros/noetic, you should get the ROS version by default, shouldn't you?
The (only?) way to switch between the two versions is to change your package.xml:

  <depend condition="$ROS_DISTRO != noetic">libfcl-dev</depend>
  <depend condition="$ROS_DISTRO == noetic">fcl</depend>

I don't understand what exactly failed on the buildfarm. I think, you should first try to fully understand this, before we can provide some more hints.

@peci1
Copy link
Contributor

peci1 commented Apr 24, 2021

It's actually pretty easy to get a mix of versions.

This line in a package that found FCL 0.6 via CMake:

#include <fcl/BV/OBB.h>

will pull the 0.5 header, because the 0.6 header would be:

#include <fcl/math/bv/OBB.h>

If you assume the default system install location, the 0.5 headers will be in /usr/include, which is practically always on the include path.

That's why I say it is important to mention this in migration.

If a developer just plainly does the migration in the way "try to build it and hammer it until it builds", there might be surprises. Without the notice in Migration guide, the developer would leave the libfcl-dev dependency in package.xml. And the system will find FCL 0.5. UNLESS - some other (even unrelated) program installs ros-noetic-fcl. Then the program would find FCL 0.6 without the developer knowing why. And apt show libfcl-dev is still showing 0.5...

@peci1
Copy link
Contributor

peci1 commented Apr 24, 2021

I see two options for a developer:

  1. keep depending on libfcl-dev... then the code has to be properly ifdefed to work correctly with both 0.5 and 0.6
  2. explicitly depend on fcl ROS package for Noetic... then 0.6 should be sure in all places

@rhaschke
Copy link
Contributor Author

Ok, the key issue here is that fcl changed its includes, such that you find wrong includes when both, system fcl 0.5 and ROS fcl 0.6 are installed. I suggest to always depend on fcl instead of libfcl-dev. Otherwise, combining any two libraries, that were linked against different fcl versions, in a downstream application will cause obscure issues. Hence, I suggest the following addition to noetic/Migration:

Use fcl rosdep key instead of libfcl-dev

ROS Noetic provides FCL 0.6, which is ABI and API-incompatible to the system-installed FCL 0.5. To avoid any conflicts in downstream packages, when linking package libraries that are in turn linked against different FCL versions, we suggest to upgrade to FCL 0.6 and use the new rosdep key fcl instead of libfcl-dev.

If you agree, @peci1, please add this (or any augmented version) to the migration notes. Thanks.

@peci1
Copy link
Contributor

peci1 commented Apr 27, 2021

Thanks for the inspiration, added: http://wiki.ros.org/action/info/noetic/Migration?action=diff&rev2=9&rev1=8 .

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

Successfully merging this pull request may close these issues.

6 participants