+18
−1
Loading
Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more
The sbox tool is used to wrap genrule actions, and run them in a temporary directory. Afterwards, the outputs are moved into their proper location in the output tree. However, some tools embed the file name of the output file (as passed to the tool) into the output file. For example, the perfetto code generator script uses the output file name to generate a C header guard when it generates perfetto_src_base_version_gen_h/gen/perfetto_version.gen.h. When using remote execution / remote caching, these genrule actions are run locally whenever the output file doesn't exist, effectively making them unique (across time and between users). They then cause cache misses on all actions depending on these output files as well as on transitive actions. In the above example, this causes libperfetto.so to differ, which then causes all actions depending on libperfetto.so to be rerun unnecessarily. As a fix, this commit changes the sbox tool to use the sha1 hash of the manifest path. The tool already seems to assume that there are no concurrent runs of the same tool with the same manifest (otherwise it would fail flakily depending on exact timing). It seems therefore safe to use a temporary path deterministically derived from the manifest path. Test: ran multiple builds w/ remote execution; observe proper caching Change-Id: I5b73ffd3b7f85cbb0336dfa1675de7ac0e2fd1a8