-
Notifications
You must be signed in to change notification settings - Fork 2.6k
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
Noetic: ros-noetic-octomap (1.9) conflicts with system octomap (1.8) required by libfcl.so #26527
Comments
It doesn't seem like removing the liboctomap dependency from fcl in Ubuntu version is an option because that would break ABI by removing symbols from |
This issue has been mentioned on ROS Discourse. There might be relevant details there: https://discourse.ros.org/t/preparing-for-noetic-sync-2020-09-18/16429/3 |
Ubuntu 20.04 provided liboctomap-dev 1.9.3. Could we drop ros-noetic-octomap? |
Thanks for this hint. What about Debian Buster? If that provides octomap 1.9 as well, dropping ros-noetic-octomap might be the solution. |
No, buster has 1.8.1. We could probably do a backport if you need the newer version (either in buster-backports or into ROS). |
Probably, MoveIt doesn't rely on 1.9 in particular. So, if |
@jspricke thanks for tagging me - I only saw this issue now. I released octomap v1.9.x into Noetic in March since there's a difference between the versions available in Debian Buster and Fedora 32 (v1.8.1) and the one available in Ubuntu Focal (v1.9.x). The original discussion whether to release or not is captured in the comments following OctoMap/octomap#285 (comment) |
I guess we either want a ros-noetic-fcl package or define Octomap 1.8.1 as the minimal required version for Noetic. |
It looks like there already is a |
|
@jspricke I would be concerned that downgrading the version of octomap used on Buster would break API/ABI, but I'm not sure that's the case from the changelog Octomap changelog 1.8.1 -> 1.9.5
Also, if
@wxmerkt It sounds like it's not a drop in replacement, but it could be used if by downstream packages if they changed the headers they include fcl from.
@rhaschke I can offer recommendations, but whoever actually does the work gets to make the decisions :) . It sounds like the options discovered so far are @wxmerkt could unrelease |
Note that you probably also want to maintain dart and mrpt then:
|
@jlblancoc FYI it looks like this discussion might affect the ROS Noetic release of mrpt2 |
There were mostly buildsystem-related changes from 1.8.1 to 1.9.x, so the API could be compatible to 1.9.5, while the ABI probably is not (I'm not 100% sure though). The CMake usage could have changed as well, that was the reason for the version increase. |
As we are concerned about ABI, we should go for a new ROS package ros-noetic-fcl. I will have a look at this later this evening. |
Now I'm totally confused: The dependency of libfcl on liboctomap is gone on my 20.04 box now (in contrast to #26527 (comment) and #26527 (comment)):
How is this possible? |
I'm not sure of following the discussion to the point of understanding what's the preferred action to take next, but regarding this:
the mrpt2 package's dependency reported by @jspricke above
makes reference to the Ubuntu's system version of mrpt2, not the Noetic ros package which, as I just checked here had its dependency on octomap removed 2 years ago here because ros2 didn't support octomap by that time (and we apparently forgot to re-enable it!)... so, the Noetic mrpt2 package actually would not even notice any action taken on the octomap package, if I understand the situation correctly. |
I have got MoveIt compiling against the most recent libfcl 0.6.1. As fcl provides a package.xml since version 0.6.0, it should be easy to release it as a 3rd party package into ROS. @v4hn: What do you think about this approach? |
why did the current version 0.6.1 only get released to debian experimental but not testing (and therefore noetic)? @j-rivero could this be promoted for future versions? |
@simonschmeisser afaik there is no noetic for Debian testing. Packages are uploaded to experimental for testing or unstable from where they transition to testing. fcl has build problems on a lot of architectures which need to be resolved first: https://buildd.debian.org/status/package.php?p=fcl&suite=experimental. Anyway, it would not help us for Noetic. |
@jspricke sorry for my lax wording and thanks for the explanations. I saw in the changelog for the debian packaging that 0.6.1 was uploaded to experimental in time for propagation to Ubuntu Focal (which I identified with ROS Noetic) and was therefore wondering why it wasn't uploaded to Debian Unstable/Testing from where it would have propagated. Thanks for linking to buildd Some of those build failures look worrying ... Upstream issue: flexible-collision-library/fcl#474 |
@rhaschke You mean, from the same branch on the source repo? IIRC I think conditional dependencies can do it <depend condition="$ROS_DISTRO == melodic">libfcl-dev</depend>
<depend condition="$ROS_DISTRO == noetic">fcl</depend> |
Ping @v4hn: Could you please vote for sticking with FCL 0.5 or upgrading to FCL 0.6 in Noetic? |
TLDR: In order to have users rely on the current code-base by default it makes a lot of sense to have a ros-specific fcl 0.6 package and I do support this.
Sorry, I did not think you would wait for my input here. I always build MoveIt with a custom FCL 0.6 checkout myself. The test errors of FCL 0.6 on non-AMD64 systems (notably i386 and arm64) should obviously be addressed and it's sad to see upstream did not even properly comment on them in 4 months. Most of them do not seem relevant for MoveIt though, e.g., we don't have capsule support and exceeding thresholds of something like
So I'm not surprised to see it fail if other tests have such problems as well. At least the failing capsule tests seem to be new in 0.6 and the same issues might exist in 0.5.. All in all I'm a big fan of using system libraries wherever possible, but in this case the update got blocked (mostly) because of numeric stability issues on ARM64 which might exist in the old version as well. So I prefer to go with a 0.6 ros specific package. |
I guess because Ubuntu is linking with --as-needed (and Debian switched to it as well after buster). So if you look at the last build log in Debian: https://buildd.debian.org/status/fetch.php?pkg=fcl&arch=amd64&ver=0.5.0-5%2Bb2&stamp=1564953366&raw=0 the dependency is there. But Ubuntu did a rebuild in March where it's gone: https://launchpadlibrarian.net/470268571/buildlog_ubuntu-focal-amd64.fcl_0.5.0-5build1_BUILDING.txt.gz (seems like as-needed is not visible from the build log) |
@sloretz Thanks for pointing this out to me! Regarding DART, building DART from source has been compatible with both FCL 0.5 and FCL 0.6 since something like DART 6.4 (using various |
@mxgrey, building DART from source shouldn't be a problem with neither version of FCL. However, the released binary package necessarily builds against the system FCL 0.5. If a downstream package/user links MoveIt (using FCL 0.6 in future) and DART in a single program, the FCL libs will obviously conflict. I think that's what was pointed out in #26527 (comment) and #26527 (comment). |
We had a |
Note that w.r.t. to the past Gazebo binaries now link against dart (see gazebosim/gazebo-classic#2752), so adding a non-ABI compatible |
I'm now adding FCL-related notes to http://wiki.ros.org/action/login/noetic/Migration . Please, keep in mind that if octomap is also released into noetic as a ROS package, somebody should add it to the migrations notes, too. And maybe (as this is mid-live distro), write about it to discourse. |
Having released |
@sloretz, @ahornung, @tylerjw: I just noticed another issue building MoveIt on Noetic:
ros-noetic-octomap
, which provides octomap 1.9 conflicts with system octomap (1.8), now newly required by systemlibfcl
:On Noetic:
On Melodic:
Our unittests don't complain about broken ABI or the like, but linking two versions of libs into the same binary is never a good idea...
@j-rivero, can you comment why
libfcl
requiresliboctomap
in Noetic?The text was updated successfully, but these errors were encountered: