ros-infrastructure / rosdoc_lite

A light-weight version of rosdoc that does not rely on ROS infrastructure for crawling packages.
10 stars 31 forks source link

Catkin metapackage not being displayed on contained packages' pages #31

Closed jbohren closed 11 years ago

jbohren commented 11 years ago

Despite joystick_drivers showing it's contained packages, when you click through to any of the member packages, like spacenav_node, it no longer shows the metapackage "joystick_drivers" nor the other peers in the metapackage.

eitanme commented 11 years ago

I have no idea why that ended up happening. I tried to recreate the problem running rosdoc_lite locally, could not, and then re-ran the doc job on jenkins. And, of course, whallah: http://ros.org/wiki/spacenav_node?distro=groovy.

So, yeah, it's fixed, but a cause would be good...

OK, I actually think I have one. Since packages are built and documented in dependency order, the "joystick_drivers" metapackage will only be documented after all of its dependencies. This includes "spacenav_node." So, the first time documentation ever runs on the repository, it's possible that there is no information available on what metpackages "spacenav_node" belongs to because "joystick_drivers" has never been documented.

This would normally be resolved the next time that documentation generation is run on the repository. However, I put in some checks to only run documentation generation when there have been changes to a repository. Since nothing actually changes in code, the repo won't have documentation generation run on it again, and the metapackage issue won't be resolved.

There are two options to fix this:

1) Run documentation generation all the time on everything. This sort of sucks in that we're wasting a lot of cycles documenting things that haven't changed.

2) Track changes that affect a given repository across the entire documentation system. This sucks in that it requires a lot of infrastructure to do things like recognize when a package becomes part of a new metapackage and resolve that event to a repository needing to be documented.

I don't really like either option at the moment, might think a bit more on it.

jbohren commented 11 years ago

Could you say that if rosdoc is run on a package with a <metapackage/> tag in its package.xml to then run on all of it's first-level package deps?

dirk-thomas commented 11 years ago

Seems to be no longer the case. Likely that is has been fixed implicitly since than.