Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 72c6c6c8 authored by usta's avatar usta
Browse files

Bp2build-convert droiddoc_exported_dir

Bug: 283299388
Test: `m bp2build` and manual inspection
Change-Id: Ieec2094e446bb030f30103a7e1a06e35cbdcc72e
parent 7ab127f7
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -903,6 +903,7 @@ var (
		"aidl_interface_headers",
		"bpf",
		"combined_apis",
		"droiddoc_exported_dir",
		"license",
		"linker_config",
		"java_import",
+1 −0
Original line number Diff line number Diff line
@@ -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",
+60 −0
Original line number Diff line number Diff line
// 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":      "",
		},
	})
}
+25 −0
Original line number Diff line number Diff line
@@ -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