Make globs compatible with hash-based ninja semantics
Previously, globs worked by having soong_build rewrite a ninja file that ran the globs, and then dependended on the results of that ninja file. soong_build also pre-filled their outputs so that it wouldn't be immediately rerun on the 2nd build. However, the pre-filling of outputs worked for ninja, because although it updated their timestamps, the soong ninja file was then touched by soong_build after that, so the soong_build ninja file was newer and ninja wouldn't rerun soong. But N2 reruns actions if their inputs' mtimes change in any way, not just if they're newer. Similarly, hashed-based ninja implementations could not enforce an order on file contents, so they would have the same problem. To fix this, lift the glob checking out of ninja and into soong_ui. Soong_build will output a globs report file every time it's run, and every time soong_ui is run it will check the globs file, and if any globs change, update an input to soong_build. soong_ui is essentially doing what was done in ninja with bpglob actions before. Bug: 364749114 Test: m nothing, m nothing again doesn't reanalyze, create a new file under a glob directory, m nothing again reanalyzes Change-Id: I0dbc5ec58c89b869b59cd0602b82215c4972d799
Loading
Please register or sign in to comment