Translate python_libray.pkg_path to proto.import_prefix
If a python_library uses a pkg_path foo/bar, then the proto srcs in that libray need to import the dep .proto as foo/bar/proto.proto. This behavior is restricted to python modules. To implement this is in bp2build, this CL creates a new interface with a single method `PkgPath`. Only python module structs implement this interface, and this method is only available during bp2build Test: Added a bp2build unit test Test: TH Change-Id: If8d207c0b321f75337a053795826b283a5eaaf46
This commit is contained in:
@@ -281,6 +281,13 @@ func Bp2buildProtoProperties(ctx Bp2buildMutatorContext, m *ModuleBase, srcs baz
|
||||
}
|
||||
}
|
||||
|
||||
if p, ok := m.module.(PkgPathInterface); ok && p.PkgPath(ctx) != nil {
|
||||
// python_library with pkg_path
|
||||
// proto_library for this module should have the pkg_path as the import_prefix
|
||||
attrs.Import_prefix = p.PkgPath(ctx)
|
||||
attrs.Strip_import_prefix = proptools.StringPtr("")
|
||||
}
|
||||
|
||||
tags := ApexAvailableTagsWithoutTestApexes(ctx.(TopDownMutatorContext), ctx.Module())
|
||||
|
||||
moduleDir := ctx.ModuleDir()
|
||||
@@ -333,6 +340,11 @@ func Bp2buildProtoProperties(ctx Bp2buildMutatorContext, m *ModuleBase, srcs baz
|
||||
return info, true
|
||||
}
|
||||
|
||||
// PkgPathInterface is used as a type assertion in bp2build to get pkg_path property of python_library_host
|
||||
type PkgPathInterface interface {
|
||||
PkgPath(ctx BazelConversionContext) *string
|
||||
}
|
||||
|
||||
var (
|
||||
protoIncludeDirGeneratedSuffix = ".include_dir_bp2build_generated_proto"
|
||||
protoIncludeDirsBp2buildKey = NewOnceKey("protoIncludeDirsBp2build")
|
||||
|
Reference in New Issue
Block a user