Add initial BuildStream backend - #300
Conversation
The generated elements do not yet include test dependencies and test suites of packages are not run as part of the build process.
|
Thanks for this contribution. Sorry for the delay. I am just ramping up as the new maintainer. I tested your modifications with the following steps: And got the error: Can you provide any guidance on what is supported? Cheers, |
|
External dependencies can be added to ros2-bst as needed without requiring changes in superflore. |
|
Thanks for the quick reply. Running the following completed successfully: which updated the following files: |
|
What are the future plans for the BuildStream backend? Will you or CodeThink be maintaining it going forward? Since ROS 2 Iron is now end-of-life, will you be adding support for Humble, Jazzy, or Rolling? |
For some buildstream elements generated by superflore we do not want to use the normal source. The way that buildstream includes work means it is not possible to overrite element sources. This commit allows users of superflore-gen-bst to explicitly leave the `sources` of an element blank so that the sources can be specified by an include file.
Add new CLI flag to exclude sources from elements
|
Hi @robwoolley sorry for the delayed reply! I work with @juergbi at Codethink and this is still work we'd like to press forward with, @harrysarson is also actively working on the superflore tooling & ros2-bst. In-terms of the first two questions we're still doing some internal processing, for the last question we have moved the project forward to Jazzy but that's not been pushed publicly yet. Will try to provide an update with specific answers to your questions when we can, and thanks for the interaction so far. |
|
@tom--pollard Thanks for the update. Glad to hear that you have moved the project forward to Jazzy. Whenever you are ready to submit the BuildStream backend, please let me know and I'll be happy to review it. |
This commits adds a new command line flag to force superflore (via the rosdistro python package) to regenerate the distribution information. This is useful when running superflore with $ROSDISTRO_INDEX_URL set to get deterministic codegen. The rosdistro caches are updated to latest and not versioned, see ros/rosdistro#47469.
Allow running superflore with uncached rosdistro
Superflore needs to handle conditional statements when walking dependencies and when extracting package information for generating buildstream elements. This commit achieves this by passing an `evaluate_condition_context` when constructing `PackageMetadata` and `DependencyWalker` objects.
Allow parsing of package.xml's with conditionals
If the .inc file defines the `cmake-extra` variable the element will include the value of that variable in its `cmake-local definition`.
Allow tweaking the cmake flags in an .inc file
|
@tom--pollard I see that you have been busy working on this. Please let me know when you are ready to submit the BuildStream backend for review and inclusion into Super Flore. When you are ready, please help answer the following questions:
|
This adds a generator for BuildStream elements. https://github.com/CodethinkLabs/ros2-bst is a working BuildStream project for a subset of ROS Iron where all elements for ROS packages have been generated by this branch of superflore. It also includes manually written elements for some external dependencies and depends on freedesktop-sdk for the base system and other external dependencies.
It currently cannot generate elements for all packages of a ROS distro as some packages require additional external dependencies. It's thus necessary to invoke superflore-gen-bst with the --only option to specify the target packages. Elements are also generated for internal dependencies of target packages.
The generated elements currently do not include test dependencies and test suites of packages are not run as part of the build process. This should be added as a future enhancement.