ros-infrastructure / ros_buildfarm

ROS buildfarm based on Docker
Apache License 2.0
81 stars 96 forks source link

Failing doc jobs because of non-standard build #292

Open vrabaud opened 8 years ago

vrabaud commented 8 years ago

The cv_bridge job generates warnings: http://build.ros.org/job/Jdoc__vision_opencv__ubuntu_trusty_amd64/20/consoleFull#console-section-30 because the cv_bridge doc build does not build a Boost Python module (cv_bridge_boost.so). Now, the CMake logic for it is hairy and that's probably why it is failing: https://github.com/ros-perception/vision_opencv/blob/indigo/cv_bridge/src/CMakeLists.txt#L43 On the other hand, the doc build does not even install headers (like rgb_colors.h) which are not protected by that ANDROID logic: https://github.com/ros-perception/vision_opencv/blob/kinetic/cv_bridge/CMakeLists.txt#L34

A normal bin build is located here: http://build.ros.org/view/Jbin_uT64/job/Jbin_uT64__cv_bridge__ubuntu_trusty_amd64__binary/5/consoleFull

Are the doc builds non-standard ?

dirk-thomas commented 8 years ago

Yes they are non-standard. Doc jobs don't perform real builds but replace the package CMake file with a simplified template which only tries to generate messages. So all your custom CMake logic is not being used.

This is a duplicate of ros-infrastructure/jenkins_scripts#58. During the development of this new build farm it was decided to not update the doc jobs to perform real builds (to save development time).

In any case it would need to support both cases since for some repos their dependencies are not released and therefore the repo can't be built completely.

vrabaud commented 8 years ago

ok, so to summarize: it only parses Python files and headers, and generates message docs right ?

So generated code (except for messages and I guess dynamic reconfigure and such) is lost ? Anything else we should be aware of ?

dirk-thomas commented 8 years ago

That is a good summary. No custom logic is being executed - so anything custom being done in package CMake code is not happening.

vrabaud commented 8 years ago

FYI, same for tf2: http://build.ros.org/job/Idoc__geometry2__ubuntu_trusty_amd64/15/consoleFull#console-section-29 I fixed the cv_bridge doc jobs that way: https://github.com/ros-perception/vision_opencv/blob/kinetic/cv_bridge/python/cv_bridge/__init__.py#L5

meyerj commented 8 years ago

python_orocos_kdl is also affected by this issue: http://build.ros.org/view/Kdoc/job/Kdoc__orocos_kinematics_dynamics__ubuntu_xenial_amd64/1/consoleFull#console-section-25

The package invokes SIP in its CMakeLists.txt to generate the PyKDL module. Is there anything we can do to fix the documentation built at http://docs.ros.org/kinetic/api/python_orocos_kdl/html/doc/?

dirk-thomas commented 8 years ago

@meyerj sadly there is nothing for a specific job you can do. This requires the implementation of a different logic for doc jobs. Since not for all jobs all dependencies are available as Debian packages you can not always build the code. But in the cases they are there should be an option to build the original CMake code.

At best someone could contribute that. I am not sure if I can get the time approved to work on it myself but I will try to bring it up in an upcoming meeting.

meyerj commented 8 years ago

Thanks, @dirk-thomas! The documentation that would be generated from the SIP module is actually quite limited and basically a list of available classes and functions. So the priority of this is quite low, at least for PyKDL.