commit | 9793b0a5e0fd75bc956230a7b262e14947799d2e | [log] [tgz] |
---|---|---|
author | Colin Cross <ccross@android.com> | Tue Apr 27 15:20:15 2021 -0700 |
committer | Colin Cross <ccross@android.com> | Wed Apr 28 09:40:47 2021 -0700 |
tree | dfadde4729dc704bd33da6cb672f20d7b1fbf42c | |
parent | 9021eef07bd99c1dfb70db51d5d8a98491899ec3 [diff] |
Speed up finding dependency cycles parallelVisit supports mutating the dependency graph while it is being visited by proceeding until there are no modules with their dependencies satisfied, and then checking if there are modules that haven't been visited yet. If so, it assumes there was a newly introduced dependency cycle and tries to find it to return as an error. Finding the dependency cycle could traverse outside of the cycle. If the dependency cycle occurs near the bottom of the dependency graph, that traversal could be both long and wide, leading to very long runtimes. Memoize traversed modules that were not found to be part of the dependency cycle to prevent repeated traversals. Fixes: 186572387 Test: introduce cycle into libc, m nothing Test: Test_parallelVisit Change-Id: I38d0749dbedffbe8a39e433d97fbe08486451321
Blueprint is being archived on 2021 May 3.
On 2021 May 3, we will be archiving the Blueprint project. This means it will not be possible to file new issues or open new pull requests for this GitHub project. As the project is being archived, patches -- including security patches -- will not be applied after May 3. The source tree will remain available, but changes to Blueprint in AOSP will not be merged here and Blueprint's source tree in AOSP will eventually stop being usable outside of Android.
Whereas there are no meta-build systems one can use as a drop-in replacement for Blueprint, there are a number of build systems that can be used: