-
Notifications
You must be signed in to change notification settings - Fork 138
ordered interface include dirs and use privately to ensure workspace order #260
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
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll let @clalancette confirm that this fixes the connected issue.
So, this moves the problem around, but doesn't solve it (as far as I can tell). Going back to the example in ros2/geometry2#268, I built my ros2 workspace in merged install mode with this patch. I then tried to build the
It's another manifestation of the same problem; There may be a bug in the tf2_ros CMakeLists.txt; I'm still looking at that. I just thought I'd give early feedback. |
It turns out that there were a bunch of bugs in the tf2_ros CMakeLists.txt, mostly having to do with the dependencies being incorrect. ros2/geometry2@7116b34 fixes a lot of them. Unfortunately, that's not enough. Even with those fixes, I still fail to build:
time_reset_test.cpp does not have a direct dependency on tf2, so that isn't listed in the @dirk-thomas any thoughts? |
@clalancette I don't see how calling So to me it is not obvious how this would have ever worked in the case where this repo is in an overlay and relies on changes on sibling packages from this repo. |
@clalancette Something like ros2/geometry2@626e2e1 would be necessary to specify the missing dependencies in |
My understanding is that with modern CMake, it would consider include directories when you use
This doesn't work in Eloquent either, so this has probably been broken all along. It was just reported to us recently.
Yep, that's correct. In point of fact, with just the changes on https://github.com/ros2/geometry2/tree/clalancette/overlay-include-problem (and not using this PR), I can get the overlay to work properly. So maybe the fixes are just in there and we don't need this one? In any case, I'm going to open a PR to geometry2 to fix tf2_ros. |
I had the same understanding as @clalancette. IIUC when Is this patch ordering transitive include directories? Something seems off if |
…order Signed-off-by: Dirk Thomas <[email protected]>
5a4e4fb
to
cab1399
Compare
I just gave the use case from ros2/geometry2#268 another try. I still fails with Foxy and still passes with this patch for me. |
@clalancette Please feel free to update the previous geometry PR to demonstrate that the use case works with only that without requiring this change. Then we can close this PR without merging. |
I did a CI packaging build with just ros2/geometry2#269 in place, and tested it out. It does not work in the problematic case. So I think we still need to do something else, whether it be this PR or something else. |
@clalancette I didn't mention / use ros2/geometry2#269. I literally followed the steps described in ros2/geometry2#268 and without this PR it fails and with this PR is works for me. Please try to reproduce the exact same use case. |
I was responding to the previous comment:
So I verified that the "previous geometry PR" is not enough. I can run another packaging job with this PR in place. |
Got it now. Thanks for clarifying. |
So I finally got back to looking at this. I ran a packaging job with the latest ros2 code plus this PR on bionic: https://ci.ros2.org/job/ci_packaging_linux/384/ I then downloaded and sourced the resulting package. I then created a workspace with https://github.com/ros2/geometry2/tree/clalancette/overlay-include-problem2 . This differs from the previous attempts in that it just has the new methods, and no other changes in geometry2 (it is also rebased on the latest). When trying to build in that system, I get past the previous error in building buffer_client.cpp, but now I fail further along. Here's the output when building with
The include order is still wrong, with the system one coming before the overlay ones. |
However, if I combine it with ros2/geometry2#269, it then does work properly. So now I think we need both. |
Fixes ros2/geometry2#268.