Merge "don't touch `bp2build_workspace_marker` file if it exists"
diff --git a/cmd/soong_build/main.go b/cmd/soong_build/main.go
index 5174570..87710c0 100644
--- a/cmd/soong_build/main.go
+++ b/cmd/soong_build/main.go
@@ -519,6 +519,12 @@
 	}
 }
 
+func touchIfDoesNotExist(path string) {
+	if _, err := os.Stat(path); os.IsNotExist(err) {
+		touch(path)
+	}
+}
+
 // Find BUILD files in the srcDir which are not in the allowlist
 // (android.Bp2BuildConversionAllowlist#ShouldKeepExistingBuildFileForDir)
 // and return their paths so they can be left out of the Bazel workspace dir (i.e. ignored)
@@ -674,8 +680,9 @@
 
 		writeDepFile(bp2buildMarker, eventHandler, ninjaDeps)
 
-		// Create an empty bp2build marker file.
-		touch(shared.JoinPath(topDir, bp2buildMarker))
+		// Create an empty bp2build marker file, if it does not already exist.
+		// Note the relevant rule has `restat = true`
+		touchIfDoesNotExist(shared.JoinPath(topDir, bp2buildMarker))
 	})
 
 	// Only report metrics when in bp2build mode. The metrics aren't relevant