Build a graph of dependencies and filter optional edges in case of cycles #5614
+1,327
−131
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently we have the situation that we sometimes face a problem of a cycle in project dependencies that is actual cause by an optimization where we want to control the build order in a certain way, e.g a host must be build before a fragment and if we require a capability it should likely be build before. On the other hand when the project is used as a dependency and we require the host, we want all fragments to be attached (most of the time).
With a naive approach this leads to cycles in the build-graph and we currently require some workarounds like disabled requirements with "build.time" flags, but in fact it would be much more useful if Tycho would detect and resolve the situation.
This now introduces a new approach where we do the following: