diff --git a/android/allowlists/allowlists.go b/android/allowlists/allowlists.go index a5fcee414..5da50cd58 100644 --- a/android/allowlists/allowlists.go +++ b/android/allowlists/allowlists.go @@ -788,6 +788,9 @@ var ( "binderUtilsHostTest", "run_dex2oat_test", "bluetooth-address-unit-tests", + + // for platform_compat_config + "process-compat-config", } Bp2buildModuleTypeAlwaysConvertList = []string{ diff --git a/bp2build/Android.bp b/bp2build/Android.bp index 4ecd05de7..782a88c72 100644 --- a/bp2build/Android.bp +++ b/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", diff --git a/bp2build/platform_compat_config_conversion_test.go b/bp2build/platform_compat_config_conversion_test.go new file mode 100644 index 000000000..4dfcce3a3 --- /dev/null +++ b/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"`, + }), + }, + }) +} diff --git a/java/platform_compat_config.go b/java/platform_compat_config.go index 2197304a5..124827523 100644 --- a/java/platform_compat_config.go +++ b/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 }