-
Notifications
You must be signed in to change notification settings - Fork 49
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
[question] Incremental builds #417
Comments
In a CI setting, it's possible you have more information than colcon does, and you may know (from your vcs diffs or whatever else) that particular packages have experienced no change at all since your last build. In that case, you could use colcon's various package selection capabilities to tell it to skip those ones, and then they're a true no-op. We use a scheme like this at Clearpath to get fast incremental builds, but unfortunately it's pretty tied to a bunch of internal details on our end, so it's not really something we can open up in its present state. |
How would the approach of updating the repos and running colcon build work if the dependencies changed or repos were added or removed from the workspace? I'm wondering if the case where a repo is removed from a workspace would be particularly bad because any packages it contained would still be in the build folder and other packages could be built on top of those build products when you instead intend them to be built on Debian installed packages. |
Adding packages to the workspace may require manually forcing CMake to rerun ( Changed deps will be picked up automatically as the timestamp on the Removing packages is definitely the trickiest case; I would imagine that your safest path there would be to a clean build of any package that's down the dependency tree from a removed one. |
I'm curious if this would be something colcon should try to handle nicely (through some sort of statefulness from build/tests) or if we should look to build external tooling for deciding when to do what. This is related to knowing when things have changed in repositories. In this case, since the last build. In my other use-case, since the last test run. |
This is partially related to colcon/colcon-package-selection#25. I am trying to understand when a we wouldn't be able to depend on cmake/make/ninja to handle the situation of the incremental building and would need more control over when to clean (start over) on specific targets and their dependencies. I'd like to be able to use incremental builds in CI, caching the whole workspace.
The text was updated successfully, but these errors were encountered: