Implement bp2build for java_sdk_library_import
Test: go test bp2build conversion tests
Test: enable modules build from prebuilt and m nothing
Bug: 300640274
Change-Id: I8c015aec546d052bef6c42869e12db4e87d39780
diff --git a/java/sdk_library.go b/java/sdk_library.go
index 6349d92..e3e2427 100644
--- a/java/sdk_library.go
+++ b/java/sdk_library.go
@@ -2276,11 +2276,11 @@
}
type bazelSdkLibraryAttributes struct {
- Public bazel.StringAttribute
- System bazel.StringAttribute
- Test bazel.StringAttribute
- Module_lib bazel.StringAttribute
- System_server bazel.StringAttribute
+ Public *bazel.Label
+ System *bazel.Label
+ Test *bazel.Label
+ Module_lib *bazel.Label
+ System_server *bazel.Label
}
// java_sdk_library bp2build converter
@@ -2290,13 +2290,11 @@
return
}
- nameToAttr := make(map[string]bazel.StringAttribute)
+ nameToAttr := make(map[string]*bazel.Label)
for _, scope := range module.getGeneratedApiScopes(ctx) {
- apiSurfaceFile := path.Join(module.getApiDir(), scope.apiFilePrefix+"current.txt")
- var scopeStringAttribute bazel.StringAttribute
- scopeStringAttribute.SetValue(apiSurfaceFile)
- nameToAttr[scope.name] = scopeStringAttribute
+ apiSurfaceFile := android.BazelLabelForModuleSrcSingle(ctx, path.Join(module.getApiDir(), scope.apiFilePrefix+"current.txt"))
+ nameToAttr[scope.name] = &apiSurfaceFile
}
attrs := bazelSdkLibraryAttributes{
@@ -2355,6 +2353,7 @@
type SdkLibraryImport struct {
android.ModuleBase
android.DefaultableModuleBase
+ android.BazelModuleBase
prebuilt android.Prebuilt
android.ApexModuleBase
@@ -2438,6 +2437,7 @@
android.InitPrebuiltModule(module, &[]string{""})
android.InitApexModule(module)
+ android.InitBazelModule(module)
InitJavaModule(module, android.HostAndDeviceSupported)
module.SetDefaultableHook(func(mctx android.DefaultableHookContext) {
@@ -2448,6 +2448,33 @@
return module
}
+// java_sdk_library bp2build converter
+func (i *SdkLibraryImport) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
+ nameToAttr := make(map[string]*bazel.Label)
+
+ for scope, props := range i.scopeProperties {
+ if api := proptools.String(props.Current_api); api != "" {
+ apiSurfaceFile := android.BazelLabelForModuleSrcSingle(ctx, api)
+ nameToAttr[scope.name] = &apiSurfaceFile
+ }
+ }
+
+ attrs := bazelSdkLibraryAttributes{
+ Public: nameToAttr["public"],
+ System: nameToAttr["system"],
+ Test: nameToAttr["test"],
+ Module_lib: nameToAttr["module-lib"],
+ System_server: nameToAttr["system-server"],
+ }
+ props := bazel.BazelTargetModuleProperties{
+ Rule_class: "java_sdk_library",
+ Bzl_load_location: "//build/bazel/rules/java:sdk_library.bzl",
+ }
+
+ name := android.RemoveOptionalPrebuiltPrefix(i.Name())
+ ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: name}, &attrs)
+}
+
var _ PermittedPackagesForUpdatableBootJars = (*SdkLibraryImport)(nil)
func (module *SdkLibraryImport) PermittedPackagesForUpdatableBootJars() []string {