remove depfiles files as they're parsed
authorEvan Martin <martine@danga.com>
Tue, 15 Jan 2013 02:00:52 +0000 (18:00 -0800)
committerEvan Martin <martine@danga.com>
Mon, 8 Apr 2013 22:02:08 +0000 (15:02 -0700)
src/build.cc
src/build_test.cc

index f648584..0d819b2 100644 (file)
@@ -879,6 +879,8 @@ bool Builder::ExtractDeps(CommandRunner::Result* result,
   string content = disk_interface_->ReadFile(depfile, err);
   if (!err->empty())
     return false;
+  if (content.empty())
+    return true;
 
   DepfileParser deps;
   if (!deps.Parse(&content, err))
@@ -893,12 +895,10 @@ bool Builder::ExtractDeps(CommandRunner::Result* result,
     deps_nodes->push_back(state_->GetNode(*i));
   }
 
-  /* TODO: unlink the file via diskinterface.
-  if (unlink(depfile.c_str()) < 0) {
-    *err = string("unlink: ")) + strerror(errno);
+  if (disk_interface_->RemoveFile(depfile) < 0) {
+    *err = string("deleting depfile: ") + strerror(errno);
     return false;
   }
-  */
 #endif
 
   return true;
index 3617439..bcd4d2e 100644 (file)
@@ -762,6 +762,9 @@ TEST_F(BuildTest, OrderOnlyDeps) {
 
   fs_.Tick();
 
+  // Recreate the depfile, as it should have been deleted by the build.
+  fs_.Create("foo.o.d", "foo.o: blah.h bar.h\n");
+
   // implicit dep dirty, expect a rebuild.
   fs_.Create("blah.h", "");
   fs_.Create("bar.h", "");
@@ -774,6 +777,9 @@ TEST_F(BuildTest, OrderOnlyDeps) {
 
   fs_.Tick();
 
+  // Recreate the depfile, as it should have been deleted by the build.
+  fs_.Create("foo.o.d", "foo.o: blah.h bar.h\n");
+
   // order only dep dirty, no rebuild.
   fs_.Create("otherfile", "");
   command_runner_.commands_ran_.clear();