瀏覽代碼

Create bp2build converter for platform_compat_config module type

This change adds bp2build converter for platform_compat_config module
type and its corresponding test case.

Bug: 269202028
Test: bp2build unit tests
Change-Id: I17d560c8f0e725efe69e151685d003c3dcb11f2f
Jihoon Kang 1 年之前
父節點
當前提交
346a117921
共有 3 個文件被更改,包括 77 次插入0 次删除
  1. 1 0
      bp2build/Android.bp
  2. 53 0
      bp2build/platform_compat_config_conversion_test.go
  3. 23 0
      java/platform_compat_config.go

+ 1 - 0
bp2build/Android.bp

@@ -74,6 +74,7 @@ bootstrap_go_package {
         "linker_config_conversion_test.go",
         "package_conversion_test.go",
         "performance_test.go",
+        "platform_compat_config_conversion_test.go",
         "prebuilt_etc_conversion_test.go",
         "python_binary_conversion_test.go",
         "python_library_conversion_test.go",

+ 53 - 0
bp2build/platform_compat_config_conversion_test.go

@@ -0,0 +1,53 @@
+// Copyright 2023 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package bp2build
+
+import (
+	"testing"
+
+	"android/soong/android"
+	"android/soong/java"
+)
+
+func runPlatformCompatConfigTestCase(t *testing.T, tc Bp2buildTestCase) {
+	t.Helper()
+	RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {
+		ctx.RegisterModuleType("java_library", java.LibraryFactory)
+		ctx.RegisterModuleType("platform_compat_config", java.PlatformCompatConfigFactory)
+	}, tc)
+}
+
+func TestPlatformCompatConfig(t *testing.T) {
+	runPlatformCompatConfigTestCase(t, Bp2buildTestCase{
+		Description: "platform_compat_config - conversion test",
+		Blueprint: `
+		platform_compat_config {
+			name: "foo",
+			src: ":lib",
+		}`,
+		Filesystem: map[string]string{
+			"a/b/Android.bp": `
+			java_library {
+				name: "lib",
+				srcs: ["a.java"],
+			}`,
+		},
+		ExpectedBazelTargets: []string{
+			MakeBazelTarget("platform_compat_config", "foo", AttrNameToString{
+				"src": `"//a/b:lib"`,
+			}),
+		},
+	})
+}

+ 23 - 0
java/platform_compat_config.go

@@ -19,7 +19,10 @@ import (
 	"path/filepath"
 
 	"android/soong/android"
+	"android/soong/bazel"
+
 	"github.com/google/blueprint"
+	"github.com/google/blueprint/proptools"
 )
 
 func init() {
@@ -54,6 +57,7 @@ type platformCompatConfigProperties struct {
 
 type platformCompatConfig struct {
 	android.ModuleBase
+	android.BazelModuleBase
 
 	properties     platformCompatConfigProperties
 	installDirPath android.InstallPath
@@ -122,10 +126,29 @@ func (p *platformCompatConfig) AndroidMkEntries() []android.AndroidMkEntries {
 	}}
 }
 
+type bazelPlatformCompatConfigAttributes struct {
+	Src bazel.LabelAttribute
+}
+
+func (p *platformCompatConfig) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
+	props := bazel.BazelTargetModuleProperties{
+		Rule_class:        "platform_compat_config",
+		Bzl_load_location: "//build/bazel/rules/java:platform_compat_config.bzl",
+	}
+	attr := &bazelPlatformCompatConfigAttributes{
+		Src: *bazel.MakeLabelAttribute(
+			android.BazelLabelForModuleSrcSingle(ctx, proptools.String(p.properties.Src)).Label),
+	}
+	ctx.CreateBazelTargetModule(props, android.CommonAttributes{
+		Name: p.Name(),
+	}, attr)
+}
+
 func PlatformCompatConfigFactory() android.Module {
 	module := &platformCompatConfig{}
 	module.AddProperties(&module.properties)
 	android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibCommon)
+	android.InitBazelModule(module)
 	return module
 }