Bp2build-convert droiddoc_exported_dir

Bug: 283299388
Test: `m bp2build` and manual inspection
Change-Id: Ieec2094e446bb030f30103a7e1a06e35cbdcc72e
This commit is contained in:
usta 2023-08-30 17:18:01 -04:00
parent 7ab127f7c7
commit 72c6c6c8be
4 changed files with 87 additions and 0 deletions

View file

@ -903,6 +903,7 @@ var (
"aidl_interface_headers",
"bpf",
"combined_apis",
"droiddoc_exported_dir",
"license",
"linker_config",
"java_import",

View file

@ -62,6 +62,7 @@ bootstrap_go_package {
"cc_test_conversion_test.go",
"cc_yasm_conversion_test.go",
"conversion_test.go",
"droiddoc_exported_dir_conversion_test.go",
"filegroup_conversion_test.go",
"genrule_conversion_test.go",
"gensrcs_conversion_test.go",

View file

@ -0,0 +1,60 @@
// 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 (
"regexp"
"testing"
"android/soong/java"
)
func TestDroiddocExportedDir(t *testing.T) {
bp := `
droiddoc_exported_dir {
name: "test-module",
path: "docs",
}
`
p := regexp.MustCompile(`\t*\|`)
dedent := func(s string) string {
return p.ReplaceAllString(s, "")
}
expectedBazelTargets := []string{
MakeBazelTargetNoRestrictions(
"droiddoc_exported_dir",
"test-module",
AttrNameToString{
"dir": `"docs"`,
"srcs": dedent(`[
| "docs/android/1.txt",
| "docs/android/nested-1/2.txt",
| "//docs/android/nested-2:3.txt",
| "//docs/android/nested-2:Android.bp",
| ]`),
}),
//note we are not excluding Android.bp files from subpackages for now
}
RunBp2BuildTestCase(t, java.RegisterDocsBuildComponents, Bp2buildTestCase{
Blueprint: bp,
ExpectedBazelTargets: expectedBazelTargets,
Filesystem: map[string]string{
"docs/android/1.txt": "",
"docs/android/nested-1/2.txt": "",
"docs/android/nested-2/Android.bp": "",
"docs/android/nested-2/3.txt": "",
},
})
}

View file

@ -22,6 +22,7 @@ import (
"github.com/google/blueprint/proptools"
"android/soong/android"
"android/soong/bazel"
"android/soong/java/config"
)
@ -844,6 +845,7 @@ type ExportedDroiddocDirProperties struct {
type ExportedDroiddocDir struct {
android.ModuleBase
android.BazelModuleBase
properties ExportedDroiddocDirProperties
@ -856,6 +858,7 @@ func ExportedDroiddocDirFactory() android.Module {
module := &ExportedDroiddocDir{}
module.AddProperties(&module.properties)
android.InitAndroidModule(module)
android.InitBazelModule(module)
return module
}
@ -867,6 +870,28 @@ func (d *ExportedDroiddocDir) GenerateAndroidBuildActions(ctx android.ModuleCont
d.deps = android.PathsForModuleSrc(ctx, []string{filepath.Join(path, "**/*")})
}
// ConvertWithBp2build implements android.BazelModule.
func (d *ExportedDroiddocDir) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
props := bazel.BazelTargetModuleProperties{
// Use the native py_library rule.
Rule_class: "droiddoc_exported_dir",
Bzl_load_location: "//build/bazel/rules/droiddoc:droiddoc_exported_dir.bzl",
}
type BazelAttrs struct {
Dir *string
Srcs bazel.LabelListAttribute
}
attrs := &BazelAttrs{
Dir: proptools.StringPtr(*d.properties.Path),
Srcs: bazel.MakeLabelListAttribute(android.BazelLabelForModuleSrc(ctx, []string{filepath.Join(*d.properties.Path, "**/*")})),
}
ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: d.Name()}, attrs)
}
// Defaults
type DocDefaults struct {
android.ModuleBase