Merge "Make soong create sourcepath dirs" into sc-dev
diff --git a/java/droidstubs.go b/java/droidstubs.go
index 7bfdc55..28f233e 100644
--- a/java/droidstubs.go
+++ b/java/droidstubs.go
@@ -398,7 +398,17 @@
 	rule.Command().Text("rm -rf").Flag(homeDir.String())
 	rule.Command().Text("mkdir -p").Flag(homeDir.String())
 
-	cmd := rule.Command()
+	var cmd *android.RuleBuilderCommand
+	if len(sourcepaths) > 0 {
+		// We are passing the sourcepaths as an argument to metalava below, but the directories may
+		// not exist already (if they do not contain any listed inputs for metalava). Note that this
+		// is in a rule.SboxInputs()rule, so we are not modifying the actual source tree by creating
+		// these directories.
+		cmd = rule.Command()
+		cmd.Text("mkdir -p").Flags(cmd.PathsForInputs(sourcepaths))
+	}
+
+	cmd = rule.Command()
 	cmd.FlagWithArg("ANDROID_PREFS_ROOT=", homeDir.String())
 
 	if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_METALAVA") {
@@ -432,6 +442,7 @@
 	}
 
 	if len(sourcepaths) > 0 {
+		// TODO(b/153703940): Pass .html files to metalava and remove this argument.
 		cmd.FlagWithList("-sourcepath ", sourcepaths.Strings(), ":")
 	} else {
 		cmd.FlagWithArg("-sourcepath ", `""`)