Skip to content

Clang-CXX: copy into the dyndep output on success

When clang-scan-deps fails to scan (e.g., bad source syntax, junk flags, etc.), the redirection unconditionally updates the file. If this fails, the .ddi file timestamp is updated. If the state is then reverted (e.g., the command line returns to the state of the last successful build), the updated file is not useful, but ninja does not rerun because:

  • the command hash matches the last successful run
  • the output file is newer than its inputs

However, since the .ddi file has been updated with bogus contents from a failed scan, collation fails as the rules array is empty (or incomplete from a batch scan).

If clang-scan-deps were properly aware of its output file, it could use this to not write the file if any inner scan fails. Requested in https://github.com/llvm/llvm-project/issues/72875.

See: https://github.com/llvm/llvm-project/issues/72875
Fixes: #25429 (closed)


Cc: @namniav
Backport: release

Edited by Brad King

Merge request reports