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

Compile on ROS2 Foxy #153

Merged
merged 7 commits into from
Aug 5, 2020
Merged

Compile on ROS2 Foxy #153

merged 7 commits into from
Aug 5, 2020

Conversation

henningkayser
Copy link
Member

@henningkayser henningkayser commented Jul 18, 2020

This branch is in preparation of the foxy release including following changes:

  • Suppress assimp CMP0012 policy warning (see Fix CMake import assimp/assimp#2722, should be fixed with 5.1)
  • Removes ASSIMP as (redundant) export dependency to prevent warnings in downstream dependencies
  • Disables clang-format check until we found a new format version
  • Fixes OCTOMAP target ([ROS 2] Use octomap target directly #150)
  • Removed Eloquent from CI (I don't think we want to maintain this when MoveIt 2 runs on Foxy only, this allows us to remove explicit linking of the resource_retriever dependency)

I think we can remove dashing-devel after merging this as we would only support Foxy just like MoveIt 2.

@codecov
Copy link

codecov bot commented Jul 18, 2020

Codecov Report

Merging #153 into ros2 will decrease coverage by 0.16%.
The diff coverage is n/a.

Impacted file tree graph

@@            Coverage Diff             @@
##             ros2     #153      +/-   ##
==========================================
- Coverage   55.78%   55.62%   -0.17%     
==========================================
  Files          12       12              
  Lines        1719     1697      -22     
==========================================
- Hits          959      944      -15     
+ Misses        760      753       -7     
Impacted Files Coverage Δ
src/shapes.cpp 55.33% <0.00%> (-0.99%) ⬇️
src/mesh_operations.cpp 43.47% <0.00%> (-0.30%) ⬇️
src/shape_operations.cpp 32.35% <0.00%> (-0.20%) ⬇️
src/bodies.cpp 69.60% <0.00%> (-0.20%) ⬇️
include/geometric_shapes/shapes.h 100.00% <0.00%> (ø)
include/geometric_shapes/check_isometry.h 100.00% <0.00%> (ø)
include/geometric_shapes/bodies.h 91.30% <0.00%> (+0.39%) ⬆️
src/body_operations.cpp 48.42% <0.00%> (+0.94%) ⬆️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update ae12298...c054af9. Read the comment docs.

* Remove ASSIMP export dependency
* Fix OCTOMAP dependency
* Remove redundant linking of resource_retriever
Copy link
Contributor

@v4hn v4hn left a comment

Choose a reason for hiding this comment

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

feedback inline.

per se this looks good to merge, so feel free to do so after addressing my comments.

README.md Show resolved Hide resolved
CMakeLists.txt Show resolved Hide resolved
@@ -28,7 +28,7 @@
<depend>rclcpp</depend>
<depend>boost</depend>
<depend>eigen_stl_containers</depend>
<depend>libconsole-bridge-dev</depend>
<depend>console_bridge_vendor</depend>
Copy link
Contributor

Choose a reason for hiding this comment

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

First they make quite a fuss about having console-bridge as a ROS-agnostic library and now people rely on a bad, i.e. using externalproject in cmake instead of adapting the package, wrapper to build it in their workspaces???

Is this really required and the official way to do so?

Copy link
Member Author

Choose a reason for hiding this comment

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

I'm also a bit confused about this. What I noticed is that you might end up with different console_bridge versions so you should use one or the other dependency consistently. Since the vendor package is used by several upstream dependencies of MoveIt (i.e. urdfdom) I adapted it in all ros-planning packages. I'm not aware of any "official" way, though.

Copy link
Contributor

Choose a reason for hiding this comment

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

@ahcorde @clalancette could one of you enlighten us on why this is needed and why you did not adapt the upstream repository (which is the recommended way to package ros-agnostic packages at least in ROS) but go for the ExternalProject approach?

@henningkayser This question is independent of my approval here though.

Choose a reason for hiding this comment

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

Sorry, I don't really have much context here. Can you clarify your question a bit more?

Copy link
Contributor

Choose a reason for hiding this comment

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

@clalancette thanks for asking back. My question is whether and why all ROS2 projects should switch to console_bridge_vendor (packaged in ROS distributions) in favor of libconsole-bridge-dev (packaged in your linux distribution).

The second part of the question is why console_bridge_vendor relies on cmake's ExternalProject (downloading the actual code tarball at build-time) instead of following the ROS-established release procedure for third-party packages.

I highlighted you because you are involved with the console_bridge_vendor package according to the commit log. :)

Copy link
Member Author

Choose a reason for hiding this comment

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

Just to add, urdfdom is depending on both console_bridge_vendor and libconsole-bridge-dev (https://github.com/ros2/urdfdom/blob/ros2/package.xml#L15). Isn't the dev package redundant or should it be added here as welll? btw, I just noticed that urdfdom still depends on libconsole-bridge0.4 while console_bridge_vendor now provides 0.5. This seems to cause some conflicts with the library versions when using the debians (https://travis-ci.com/github/ros-planning/moveit2/jobs/368602160#L993) so we might need a new release for MoveIt.

Choose a reason for hiding this comment

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

@clalancette thanks for asking back. My question is whether and why all ROS2 projects should switch to console_bridge_vendor (packaged in ROS distributions) in favor of libconsole-bridge-dev (packaged in your linux distribution).

I wasn't involved in the original vendoring. However, I believe the original reason we ended up vendoring console_bridge was for support on macOS and Windows. I believe that there is now a macOS brew package for it, so that reason may have gone away there, but it is still valid for Windows. We are also vendoring it because we are currently depending on a newer version than what is available in the Ubuntu repositories (we use 1.0.1, while Ubuntu is only providing 0.4).

Just to add, urdfdom is depending on both console_bridge_vendor and libconsole-bridge-dev (https://github.com/ros2/urdfdom/blob/ros2/package.xml#L15). Isn't the dev package redundant or should it be added here as welll?

My understanding is that you need both, but I don't have a good explanation of why. Maybe @dirk-thomas can comment on why https://github.com/ros2/urdfdom/blob/ros2/package.xml depends on both.

Copy link
Contributor

Choose a reason for hiding this comment

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

My understanding is that you need both, but I don't have a good explanation of why.

Since libconsole-bridge-dev is a run dependency of console_bridge_vendor I don't see why you would need to declare it in addition to depending on console_bridge_vendor.

* switch to *.com for Travis CI
* Temporarily comment ROS1 Devel/Debian Job tags
Copy link
Member

@davetcoleman davetcoleman left a comment

Choose a reason for hiding this comment

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

overall looks good to me

- TEST="clang-format, ament_lint"
- ROS_DISTRO=dashing
- ROS_DISTRO=eloquent TEST=code-coverage
- TEST="ament_lint" # TODO(henningkayser): re-enable clang-format
Copy link
Member

Choose a reason for hiding this comment

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

clang format does not work yet for ROS 2? Is this because there isn't an agreement on version number yet?

Copy link
Member Author

Choose a reason for hiding this comment

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

It's not about the version number, we need a new configuration that should be applied to all repos. clang-format-3.9 is not available on Ubuntu 20.04 so I disabled it in CI. We could temporarily run clang-format-3.9 on the eloquent image (like moveit/moveit2@7aea7a7)

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.

5 participants