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

Fixing the broken build #560

Merged
merged 2 commits into from
Feb 12, 2019
Merged

Conversation

crdelsey
Copy link
Contributor

Basic Info

Info Please fill out this column
Ticket(s) this addresses NA
Primary OS tested on Ubuntu
Robotic platform tested on Turtlebot 3 on Gazebo

Description of contribution in a few bullet points

Carl Delsey added 2 commits February 11, 2019 10:09
…nly-one-node"

This reverts commit 9767501, reversing
changes made to 1ae4a54.

Changes are no longer needed since the error this fixed has been turned
into a warning.
Copy link
Contributor

@mhpanah mhpanah left a comment

Choose a reason for hiding this comment

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

LGTM.

@crdelsey
Copy link
Contributor Author

@SteveMacenski @ruffsl This is still failing the ROS build farm. I guess it must be building against the Crystal branch of ROS2 instead of master.

I don't see a way to tell the build farm to build master instead of a release branch, but we've got coverage of the master branch already with Travis and CircleCI. Maybe we should just get the ROS 2 build farm to build our crystal-devel branch.

Thoughts?

@crdelsey
Copy link
Contributor Author

@ruffsl Am I correct in thinking we cannot get CircleCI to give a checkmark to this PR? Since it relies on the latest Docker build of master, and master is broken, the docker image won't get updated. As a result Circle CI is always building against an old version of the ROS 2 codebase that doesn't have the new interface?

@ruffsl
Copy link
Member

ruffsl commented Feb 12, 2019

This is still failing the ROS build farm. I guess it must be building against the Crystal branch of ROS2 instead of master.

The build farm from OSRF via Jinkens? I'm not sure which commit it builds against, but I would have thought it'd be master. @nuclearsandwich ?

@ruffsl Am I correct in thinking we cannot get CircleCI to give a checkmark to this PR? Since it relies on the latest Docker build of master, and master is broken, the docker image won't get updated.

Not quite, this PR has modified the .repo file, and has thus broken the "Upstream Cache" wrt that first created by the CI docker image. CircleCI will then attempt to build your upstream workspace using the .repo file in the PR. At present, https://circleci.com/gh/ros-planning/navigation2/46 , it looks like this upstream build is failing:

--- stderr: image_transport
/opt/ros_ws/src/image_common/image_transport/test/test_remapping.cpp: In member function ‘virtual void TestPublisher::SetUp()’:
/opt/ros_ws/src/image_common/image_transport/test/test_remapping.cpp:22:13: error: ‘NodeOptions’ is not a member of ‘rclcpp’
     rclcpp::NodeOptions node_options;
             ^~~~~~~~~~~
/opt/ros_ws/src/image_common/image_transport/test/test_remapping.cpp:22:13: note: suggested alternative: ‘InitOptions’
     rclcpp::NodeOptions node_options;
             ^~~~~~~~~~~
             InitOptions
/opt/ros_ws/src/image_common/image_transport/test/test_remapping.cpp:23:5: error: ‘node_options’ was not declared in this scope
     node_options.arguments(arguments);
     ^~~~~~~~~~~~
/opt/ros_ws/src/image_common/image_transport/test/test_remapping.cpp:23:5: note: suggested alternative: ‘rcl_node_options_t’
     node_options.arguments(arguments);
     ^~~~~~~~~~~~
     rcl_node_options_t
make[2]: *** [CMakeFiles/image_transport-remapping.dir/test/test_remapping.cpp.o] Error 1
make[1]: *** [CMakeFiles/image_transport-remapping.dir/all] Error 2
make: *** [all] Error 2
---
Failed   <<< image_transport	[ Exited with code 2 ]

As a result Circle CI is always building against an old version of the ROS 2 codebase that doesn't have the new interface?

The docker hub repo should auto rebuild whenever a dependent base image repo is rebuilt upstream, that being osrf/ros2:nightly, so should never be more than about 24hrs old.


Oh, I see what you mean now. We have the docker image attempting to build the upstream package, but those themselves were broken. Hmm, ideally it shouldn't come to this; i.e. having our upstream .repo file point to broken branches, but its all is a moving target given out nightly image is shifting underneath the .repos.

I suppose we could short circuit the CI dockerfile build to only rosdep install the upstream/navigation2 dependencies, and skip the colcon builds; thus so rely on the circleci to once a day rebuild the upstream cache for each new CI image. This would just push the upstream failure from dockerhub to circleci, but at least rosplanning/navigation2:master would always keep fresh as long as osrf/ros2:nightly stays fresh as well.

@nuclearsandwich
Copy link
Contributor

The build farm from OSRF via Jinkens? I'm not sure which commit it builds against, but I would have thought it'd be master. @nuclearsandwich ?

the Cpr_* jobs test packages against the Crystal release using debs. We don't currently have a publicly available buildfarm for Dashing.

As changes to ROS 2's core are made which are incompatible with Crystal, we've been creating crystal branches and updating the Crystal release track to point to those branches instead of the development head. This NodeOptions API change might be the first Crystal-incompatible change that has affected navigation2, in which case it might make sense to branch for Crystal here as well. Once that's done we would update the rosdistro source and doc entry for navigation2 in Crystal to reference the crystal branch rather than master. Which would limit pull requests which have the Cpr jobs triggered to PRs actually targeting the crystal branch.

@crdelsey
Copy link
Contributor Author

I suppose we could short circuit the CI dockerfile build to only rosdep install the upstream/navigation2 dependencies, and skip the colcon builds; thus so rely on the circleci to once a day rebuild the upstream cache for each new CI image. This would just push the upstream failure from dockerhub to circleci, but at least rosplanning/navigation2:master would always keep fresh as long as osrf/ros2:nightly stays fresh as well.

I'm OK with keeping it as it is. The master branch failures should be fairly rare. So long as we are aware that the CircleCI build can fail in these circumstances, we can just ignore the build failure and merge anyway.

@crdelsey crdelsey merged commit 0deebc1 into ros-navigation:master Feb 12, 2019
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