From 346a1179219d95bcaa17b3f636c3bd8c20572613 Mon Sep 17 00:00:00 2001 From: Jihoon Kang Date: Wed, 17 May 2023 10:17:30 +0000 Subject: [PATCH 1/2] 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 --- bp2build/Android.bp | 1 + .../platform_compat_config_conversion_test.go | 53 +++++++++++++++++++ java/platform_compat_config.go | 23 ++++++++ 3 files changed, 77 insertions(+) create mode 100644 bp2build/platform_compat_config_conversion_test.go 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 } From c44be96f064228827604a896f2e188f9b2340d93 Mon Sep 17 00:00:00 2001 From: Jihoon Kang Date: Tue, 6 Jun 2023 16:35:29 +0000 Subject: [PATCH 2/2] Allowlist process-compat-config module process-compat-config module is required as executable tool to create actions for platform_compat_config rule class. Thus, add process-compat-config Soong module to be always converted to bazel target. Test: TH Bug: 269202028 Change-Id: Ic60ace1a86f3a97927937ee0e2e7385fab756deb --- android/allowlists/allowlists.go | 3 +++ 1 file changed, 3 insertions(+) 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{