-
Notifications
You must be signed in to change notification settings - Fork 46
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
Workspace profiles #168
Comments
Having such a feature would indeed be great and improve usability. I don't have a specific recommendation where and how it should be implemented. Before that can be determined it needs to be figured out how it should behave and interoperate with other similar features like:
|
How do those features currently interoperate? Is there a precedence order, or is there something more complex required for mutually exclusive arguments? |
Metadata read from files can be used to set the metadata of packages directly or amend information like dependencies. Since metadata can't be affected through command line arguments it shouldn't matter for the order.
|
I appreciate the effort that has gone into the explanation above and in the previous thread, however, I'm still having trouble wrapping my head around all of these features and the various ways they interact. The ideal scenario from my point of view (as a part-time stakeholder in tooling decisions for a medium-size development team) would be:
I don't want to have to set However, I do wonder if it might be more coherent to just make my own internal |
Me too! My naive understanding is that a 'persistent profile' a-la catkin-tools would sit in the order of precedence:
That sounds like a good use for
Ooh, now that's fancy, but totally outside the scope of what I had conceived. This sounds like it would be closely tied to your custom distribution method - is there a place to inject something like this in the wider hierarchy of colcon plugins? |
I mean, our bundles by and large map into the larger ROS concept of a "distro", with the main caveat being that we identify them by tags and tag-like refs in our rosdistro repo rather than directories, so we have thousands of them (including many feature-branch ones) rather than just a few. The important part of putting build metadata into that asset would be ensuring that it's versioned alongside everything else— we don't want to have some outside authority on metas and CMake flags that can change and then mess up the consistency of older builds. Without having given it too much more thought, my concept would be a utility package similar to It's likely that most of the logic for this could go in the colcon plugin side, and then it would be fairly easy for anyone else to supply their own data package for it. I'll give it some thought and see about knocking together a prototype to understand better how it would work. |
It sounds like putting those options into the defaults.yaml file or setting the environment variable COLCON_DEFAULTS_FILE to point to custom file solves the technical part within
I am not sure if that is generally desirable. I would even expect that as soon as you use two sibling underlays you will quickly run into a situation where those inherited flags may conflict with each other. Are these flags / options different from the above defaults? If yes, could they be declared in a mixin and the user actively decides to use that mixin? At least that would be the already available building blocks. Obviously a custom extension could write information to a file in the install space as well as read that file from underlays to set different default values for overlays. |
Technically I think only two things are missing:
On top of that the questions are how to expose this in a nicer way to the user? E.g. how to pass a specific option and persist it in the current profile? If there is any case around profiles which can't be satisfied with the existing technical building blocks those should be described in detail and being added to the existing building blocks (rather than implementing special logic for profiles). |
I'm fairly confident this was implemented in colcon/colcon-defaults#29. Please feel free to re-open if you believe otherwise. |
Following from #52, it would be fantastic to have a system similar to catkin-tools profiles, which define build settings at the workspace level.
The command line arguments defaults mechanism looks like it provides most of the interesting options I'm familiar with from catkin-tools except one -
--extend
. With catkin-tools, it was extremely useful to be able to statically configure what the current space overlays, in a way that would persist throughclean
operations, and not be affected by a user's environment. Would you have any recommendations at what layer of colcon it would make sense to implement something like that?The text was updated successfully, but these errors were encountered: