-
Notifications
You must be signed in to change notification settings - Fork 1.7k
This commit will fix issue#2653. #2675
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
base: master
Are you sure you want to change the base?
Conversation
This commit will reflect that dynamic dependencies may change the graph during recomputeDirty of nodes. A newly added dyndep output may be dirty and can cause other targets to be dirty as well. This shall take effect if those nodes has been visited before. A new algorithm to iterate over the graph to make nodes dirty has been added.
Test BenchExample build file for testing:
now do the following commands:
In the master branch are issues, not the required processes are always started. The solution of this Pull Request works well. Analysisthe next figure reports the dependency graph without dyndep[noDyndep]: The next figure reports the dependency graph with dyndep[complete], using this Pull Request, and target The red means The next figure reports the dependency graph using master branch, and target It can be easily seen that targets with Scanning Algorithm Master branch
The algorithm does not reflect that the graph may change. This issue occurs if a dyndep adds an output target (here Proposed Scanning Algorithm enhancementif the dyndep is applied, there is an additional iterating algorithm across the graph following the outputs. The outputs are only followed if they have been visited before. Therefore a node can now be dirty, clean and spare. This does prevent to mark nodes as dirty which are not requested to be built. The additional iterating over the graph starts here: iterating |
If dyndep applied, the algorithm will check any input instead of only one. Dyndep may have changed it.
The recently pushed commit will address issue#2641, it is a simular dyndep issue as #2653. Test BenchSimilar as reported in the issue, just one target was added
Following graph with proposed solution blue is not build, red is build.
|
This Pull request will reflect that dynamic dependencies may change the graph during recomputeDirty of nodes. A newly added dyndep output may be dirty and can cause other targets to be dirty as well. This shall take effect if those nodes has been visited before. A new algorithm to iterate over the graph to make nodes dirty has been added.
For a detailed problem description, see issue#2635