Add deps of protos to bp2build.

Update BazelOutPath to implement genPathProvider. This allows Bazel
outputs (incl filegroup) to be used as an input to generating a file
(e.g. proto).

Test: bp2build.sh
Test: mixed_build.sh
Bug: 200601772
Change-Id: I5ad67ade193025652100b214996b26ce9ca9bf83
diff --git a/android/bazel.go b/android/bazel.go
index 4d887ca..737533a 100644
--- a/android/bazel.go
+++ b/android/bazel.go
@@ -187,7 +187,10 @@
 		"external/libcxx":                   Bp2BuildDefaultTrueRecursively,
 		"external/libcxxabi":                Bp2BuildDefaultTrueRecursively,
 		"external/lz4/lib":                  Bp2BuildDefaultTrue,
+		"external/protobuf":                 Bp2BuildDefaultTrueRecursively,
+		"external/python/six":               Bp2BuildDefaultTrueRecursively,
 		"external/scudo":                    Bp2BuildDefaultTrueRecursively,
+		"external/zlib":                     Bp2BuildDefaultTrueRecursively,
 		"prebuilts/clang/host/linux-x86":    Bp2BuildDefaultTrueRecursively,
 		"system/core/libasyncio":            Bp2BuildDefaultTrue,
 		"system/core/libcutils":             Bp2BuildDefaultTrueRecursively,
@@ -233,6 +236,10 @@
 
 		"libfdtrack", // depends on liblzma and libbase
 
+		"libprotobuf-python",               // contains .proto sources
+		"libprotobuf-internal-protos",      // we don't handle path property for fileegroups
+		"libprotobuf-internal-python-srcs", // we don't handle path property for fileegroups
+
 		"libseccomp_policy", // depends on libbase
 
 		"gwp_asan_crash_handler", // cc_library, ld.lld: error: undefined symbol: memset
@@ -271,6 +278,7 @@
 		"libseccomp_policy_app_zygote_sources", // http://b/200899432, bazel-built cc_genrule does not work in mixed build when it is a dependency of another soong module.
 		"libseccomp_policy_app_sources",        // http://b/200899432, bazel-built cc_genrule does not work in mixed build when it is a dependency of another soong module.
 		"libseccomp_policy_system_sources",     // http://b/200899432, bazel-built cc_genrule does not work in mixed build when it is a dependency of another soong module.
+
 	}
 
 	// Used for quicker lookups
diff --git a/android/bazel_paths.go b/android/bazel_paths.go
index b5746f7..9957369 100644
--- a/android/bazel_paths.go
+++ b/android/bazel_paths.go
@@ -393,9 +393,19 @@
 	OutputPath
 }
 
+// ensure BazelOutPath implements Path
 var _ Path = BazelOutPath{}
+
+// ensure BazelOutPath implements genPathProvider
+var _ genPathProvider = BazelOutPath{}
+
+// ensure BazelOutPath implements objPathProvider
 var _ objPathProvider = BazelOutPath{}
 
+func (p BazelOutPath) genPathWithExt(ctx ModuleOutPathContext, subdir, ext string) ModuleGenPath {
+	return PathForModuleGen(ctx, subdir, pathtools.ReplaceExtension(p.path, ext))
+}
+
 func (p BazelOutPath) objPathWithExt(ctx ModuleOutPathContext, subdir, ext string) ModuleObjPath {
 	return PathForModuleObj(ctx, subdir, pathtools.ReplaceExtension(p.path, ext))
 }