-
Notifications
You must be signed in to change notification settings - Fork 44
Description
Not sure if there's a better place to be having this discussion, but there are a few ways in which python-rosdistro is starting to get pretty creaky for us. Rather than hacking around its limitations or building a bunch of proprietary parallel infrastructure, we're wondering if there would be any enthusiasm for a more ambitious project to replace it. Some particular goals would be:
- Excise codepaths that handle rosbuild packages, stacks,
manifest.xml, and anything else pre-Groovy. None of this stuff has been relevant in years, and is probably rotted anyway. - Drop Python 2 compatibility.
- Allow packages to be discovered and indexed in the cache without them needing to contain a
package.xmlfile, by reusing the plugin infrastructure that's currently part of colcon. This would mean caching serialized PackageDescriptor instances rather thanpackage.xmlcontents as strings. - Provide a plugin mechanism to hitch additional data onto the distribution at the distribution.yaml layer. Example uses might include storing information about a staging or release branch, or about what the upstream url is when a repo has been forked. Having some flexibility here would also make it easier in the future to add something like
test_pull_requestswithout needing a new REP. - Also provide plugin hooks to add additional data at the cache layer. There are lots of possibilities for how this could be useful, but one would be computing and storing hashes of certain files or groups of files in order for some other process to detect when a particular action must be taken, such as rebuilding documentation or running an ABI checker when headers mutate.
Several of these ideas address pain points that there are other open tickets for, such as #77, #82, and ros-infrastructure/rosinstall_generator#33.
I believe everything proposed here could be done without actually changing anything about REPs 137, 141, or 143, and it's even conceivable that the existing interfaces exposed by rosdistro could be maintained, such that tools like ros_buildfarm, rosinstall_generator, and others would require only minimal porting.