summaryrefslogtreecommitdiffstats
path: root/src/build_log.h
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2017-05-19 00:34:51 (GMT)
committerColin Cross <ccross@android.com>2017-05-22 18:29:06 (GMT)
commit04d886b11041bb59d01df794cce7a1e8cad2250d (patch)
treee56630542064e75e205e85bd97dfd4f6fc693bcd /src/build_log.h
parenta127dda3ee92916ef459b3da7aa9f2920ff1a5ab (diff)
downloadNinja-04d886b11041bb59d01df794cce7a1e8cad2250d.zip
Ninja-04d886b11041bb59d01df794cce7a1e8cad2250d.tar.gz
Ninja-04d886b11041bb59d01df794cce7a1e8cad2250d.tar.bz2
Always rebuild on errors
https://groups.google.com/forum/#!msg/ninja-build/YQuGNrECI-4/ti-lAs9SPv8J discusses a case where an rule updates its output file and then fails. The next run of ninja considers the ouptut file clean and doesn't rebuild it. Always stat output files after they are built, and write the mtime into .ninja_log. Consider output files dirty if the recorded mtime is older than the most recent input file.
Diffstat (limited to 'src/build_log.h')
-rw-r--r--src/build_log.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/build_log.h b/src/build_log.h
index 785961e..5268fab 100644
--- a/src/build_log.h
+++ b/src/build_log.h
@@ -45,7 +45,7 @@ struct BuildLog {
bool OpenForWrite(const string& path, const BuildLogUser& user, string* err);
bool RecordCommand(Edge* edge, int start_time, int end_time,
- TimeStamp restat_mtime = 0);
+ TimeStamp mtime = 0);
void Close();
/// Load the on-disk log.
@@ -56,7 +56,7 @@ struct BuildLog {
uint64_t command_hash;
int start_time;
int end_time;
- TimeStamp restat_mtime;
+ TimeStamp mtime;
static uint64_t HashCommand(StringPiece command);
@@ -64,7 +64,7 @@ struct BuildLog {
bool operator==(const LogEntry& o) {
return output == o.output && command_hash == o.command_hash &&
start_time == o.start_time && end_time == o.end_time &&
- restat_mtime == o.restat_mtime;
+ mtime == o.mtime;
}
explicit LogEntry(const string& output);