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)  		}  	}  |