diff options
Diffstat (limited to 'python/python.go')
-rw-r--r-- | python/python.go | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/python/python.go b/python/python.go index 836416947..daf7c14a0 100644 --- a/python/python.go +++ b/python/python.go @@ -120,6 +120,15 @@ type BaseProperties struct { // whether the binary is required to be built with embedded launcher for this actual_version. // this is set by the python version mutator based on version-specific properties Embedded_launcher *bool `blueprint:"mutated"` + + Proto struct { + // Whether generated python protos should include the pkg_path in + // their import statements. This is a temporary flag to help transition to + // the new behavior where this is always true. It will be removed after all + // usages of protos with pkg_path have been updated. The default is currently + // false. + Respect_pkg_path *bool + } } type baseAttributes struct { @@ -672,8 +681,26 @@ func (p *Module) createSrcsZip(ctx android.ModuleContext, pkgPath string) androi protoFlags := android.GetProtoFlags(ctx, &p.protoProperties) protoFlags.OutTypeFlag = "--python_out" + // TODO(b/247578564): Change the default to true, and then eventually remove respect_pkg_path + protosRespectPkgPath := proptools.BoolDefault(p.properties.Proto.Respect_pkg_path, false) + pkgPathForProtos := pkgPath + if pkgPathForProtos != "" && protosRespectPkgPath { + pkgPathStagingDir := android.PathForModuleGen(ctx, "protos_staged_for_pkg_path") + rule := android.NewRuleBuilder(pctx, ctx) + var stagedProtoSrcs android.Paths + for _, srcFile := range protoSrcs { + stagedProtoSrc := pkgPathStagingDir.Join(ctx, pkgPath, srcFile.Rel()) + rule.Command().Text("mkdir -p").Flag(filepath.Base(stagedProtoSrc.String())) + rule.Command().Text("cp -f").Input(srcFile).Output(stagedProtoSrc) + stagedProtoSrcs = append(stagedProtoSrcs, stagedProtoSrc) + } + rule.Build("stage_protos_for_pkg_path", "Stage protos for pkg_path") + protoSrcs = stagedProtoSrcs + pkgPathForProtos = "" + } + for _, srcFile := range protoSrcs { - zip := genProto(ctx, srcFile, protoFlags, pkgPath) + zip := genProto(ctx, srcFile, protoFlags, pkgPathForProtos) zips = append(zips, zip) } } |