modules: use topological sort with dependencies #223
Merged
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.
Change the concept of init_prio and fini_prio to a single depends_on field. This new field takes a module name that must be equal to another module. When the field is left NULL, the modules will be initialized first and finalized last (in no particular order). Other modules will be initialized after (and finalized before) the modules they depend on.
The topological sort algorithm was inspired from multiple sources and adapted for grout module objects.
Link: https://mohammad-imran.medium.com/understanding-topological-sorting-with-kahns-algo-8af5a588dd0e
Link: https://www.techiedelight.com/kahn-topological-sort-algorithm/