-
Notifications
You must be signed in to change notification settings - Fork 435
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
Make rclcpp in to a library #140
Conversation
src/rclcpp/utilities.cpp | ||
) | ||
add_library(${PROJECT_NAME} SHARED ${${PROJECT_NAME}_SRCS}) | ||
ament_target_dependencies(${PROJECT_NAME} "rmw" "rcl_interfaces") |
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.
Dependencies in alphabetical order.
For a more detailed review I will wait until the PR is rebased since the referenced diff is still difficult to read. Can I also assume that all the created .cpp files contain the exact code extracted from the .hpp files and don't need to be reviewed? |
I don't expect it will be easier to read, after the rebase, than this: allocator_template...rclcpp_library because the only thing the rebase will do is remove @jacquelinekay's commits from this pr.
For the most part that is true. I can summarize the handful of cases where I had to do more:
|
4761732
to
0dd00dd
Compare
Rebased, but I'm still working on comments and fixing the intra process tests. |
Linux build was broken, I added a missing include. |
Thanks @jacquelinekay, I've updated it with fixes for |
Ok, I think I've addressed all of the comments, so here is the Linux and OS X CI: The biggest thing left to do before I think this is ready for merge is to update the Windows CI farm to do a matrix build of the different DDS vendors rather than all in one workspace. The matrix can either be just running N builds back to back in the same job or really using Jenkin's matrix build pattern. I don't know what the best option is in that case. I'll look at it tomorrow morning, but if others have ideas on how that should work, I'd be happy to have some help on that. |
I had to fix a problem that only showed up in isolated builds, where rclcpp had an undeclared dependency on However, there is still and issue with how we are using some of the message related symbols within rclcpp which I haven't sorted out yet. I'll try to figure that out in the morning. |
Why do node.hpp and node_impl.hpp need to be different files? (I'll consider consolidating them in another PR.) |
@@ -122,7 +122,8 @@ class SubscriptionBase | |||
#define Publisher mock::Publisher | |||
#define PublisherBase mock::PublisherBase | |||
#define SubscriptionBase mock::SubscriptionBase | |||
#include <rclcpp/intra_process_manager.hpp> | |||
#include "../src/rclcpp/intra_process_manager.cpp" |
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.
Ah. Interesting workaround.
I think I have fixed the type support problems. |
It's interesting that the Linux CI job failed, because the isolated build actually works on my desktop... maybe I have fpermissive turned on? |
Thanks @jacquelinekay, I'm kicking off new CI jobs: |
21a5582
to
f020cf1
Compare
I spent some time working on the Windows issues, but I've been unable to finish those changes. Instead I've just pushed some changes that should fix Linux's build. The root of the issue on Linux was that sometimes no template functions which use There's still a problem that I introduced while working on Windows which introduces an infinite recursion that I need to track down, and so I won't start new CI. I'll have to tackle that tomorrow. |
I believe I have fixed the infinite recursion issue (it was a consequence of a Windows fix), so I'll do CI for Linux and OS X: |
d6769db
to
37d18da
Compare
Rebased after #142 |
I have this branch building and tests running on all three platforms now, but there are still many warnings that need to be looked at on Windows, but in the mean time new CI: |
Ok I've fixed the linkage warnings on Windows. Now the only thing remaining is figuring out what to do about the dependency structure on Windows. That last CI job failed because http://ci.ros2.org/job/ros2_batch_ci_windows/556/ Strangely
As you can see, both connext rmw implementations come before |
Ok, I added a build dependency on
If the CI looks ok, then we can start to discuss the content of the pull request and I can make any adjustments that we think are necessary. |
With ros2/rmw_opensplice#90 I can build Windows completely. New CI for Windows (the Linux and OS X jobs look good): I'll start a Connext one if that one looks good (and it doesn't interfere with ros2 packaging jobs). |
Ok I squashed and I'll try to get the connext on Windows tests going right after lunch and then it should be good to merge. |
1fa8f68
to
f0988b6
Compare
c80ffeb
to
3dd193e
Compare
Ok, hopefully final CI: |
Ok, they're all green except the connext versions of the Windows jobs. I'm gonna merge. |
👏 👏 👏 🎆 |
🎉 |
This PR results in the following compiler warning: http://ci.ros2.org/view/packaging/job/packaging_linux/51/warnings17Result/package.-1174361695/ |
I've pushed this branch (https://github.com/ros2/rclcpp/tree/avoid_compiler_warning) to hopefully fix the compiler warning. CI jobs: http://ci.ros2.org/job/ci_linux/659/ |
Since the warning is only present in the packaging job but not in the CI job we should run the packaging job if we want to actually check if the patch makes a difference. |
Thanks for looking into it @esteve, you beat me to it. |
@wjwwood no problem, it's been fun to learn about (yet) another GNU extension 😄 |
move time files to rcutils
* Include node namespace in IPC Action service name * Include node namespace in IPC Client/Service service name --------- Co-authored-by: Mauro Passerino <mpasserino@irobot.com>
* Include node namespace in IPC Action service name * Include node namespace in IPC Client/Service service name --------- Co-authored-by: Mauro Passerino <mpasserino@irobot.com>
Connects to #48
This pr currently builds on #137, but I'll rebase it against master once that is merged. In the mean time you can review changes specific to this pr with this link: allocator_template...rclcpp_library
I have not reenabled the intra process manager tests because it was using a somewhat peculiar method of mocking the classes within rclcpp and I'll have to come up with an alternative approach.
On Windows this relies on the unresolved library symbols workaround. The Windows CI job will need to be updated before it can handle the new limitations this puts on Windows, see: #48 (comment)