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

Commit 15807fa7 authored by Romain Jobredeaux's avatar Romain Jobredeaux Committed by Gerrit Code Review
Browse files

Merge "Bp2build converter for java_host_for_device."

parents b2539d08 e7370eab
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -132,6 +132,7 @@ var (
		"external/f2fs-tools":                    Bp2BuildDefaultTrue,
		"external/flac":                          Bp2BuildDefaultTrueRecursively,
		"external/fmtlib":                        Bp2BuildDefaultTrueRecursively,
		"external/guava":                         Bp2BuildDefaultTrueRecursively,
		"external/google-benchmark":              Bp2BuildDefaultTrueRecursively,
		"external/googletest":                    Bp2BuildDefaultTrueRecursively,
		"external/gwp_asan":                      Bp2BuildDefaultTrueRecursively,
@@ -397,7 +398,6 @@ var (
		"external/bazelbuild-rules_license":/* recursive = */ true,
		"external/bazelbuild-kotlin-rules":/* recursive = */ true,
		"external/bazel-skylib":/* recursive = */ true,
		"external/guava":/* recursive = */ true,
		"external/protobuf":/* recursive = */ false,
		"external/python/absl-py":/* recursive = */ true,

@@ -711,6 +711,8 @@ var (

		// allowlisting for kotlinx_coroutines
		"kotlinx_coroutines",
		"kotlinx_coroutines-device",
		"kotlinx_coroutines-host",
		"annotations",
		"kotlinx-coroutines-android-annotation-stubs",

+1 −0
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ bootstrap_go_package {
        "genrule_conversion_test.go",
        "gensrcs_conversion_test.go",
        "java_binary_host_conversion_test.go",
        "java_host_for_device_conversion_test.go",
        "java_import_conversion_test.go",
        "java_library_conversion_test.go",
        "java_library_host_conversion_test.go",
+63 −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 (
	"testing"

	"android/soong/android"
	"android/soong/java"
)

func runJavaHostForDeviceTestCaseWithRegistrationCtxFunc(t *testing.T, tc Bp2buildTestCase, registrationCtxFunc func(ctx android.RegistrationContext)) {
	t.Helper()
	(&tc).ModuleTypeUnderTest = "java_host_for_device"
	(&tc).ModuleTypeUnderTestFactory = java.HostForDeviceFactory
	RunBp2BuildTestCase(t, registrationCtxFunc, tc)
}

func runJavaHostForDeviceTestCase(t *testing.T, tc Bp2buildTestCase) {
	t.Helper()
	runJavaHostForDeviceTestCaseWithRegistrationCtxFunc(t, tc, func(ctx android.RegistrationContext) {
		ctx.RegisterModuleType("java_library", java.LibraryFactory)
	})
}

func TestJavaHostForDevice(t *testing.T) {
	runJavaHostForDeviceTestCase(t, Bp2buildTestCase{
		Description: "java_host_for_device test",
		Blueprint: `java_host_for_device {
    name: "java-lib-1",
    libs: ["java-lib-2"],
    bazel_module: { bp2build_available: true },
}

java_library {
    name: "java-lib-2",
    srcs: ["b.java"],
    bazel_module: { bp2build_available: true },
}`,
		ExpectedBazelTargets: []string{
			MakeBazelTarget("java_host_for_device", "java-lib-1", AttrNameToString{
				"deps": `[":java-lib-2"]`,
			}),
			MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"),
			MakeBazelTarget("java_library", "java-lib-2", AttrNameToString{
				"srcs": `["b.java"]`,
			}),
			MakeNeverlinkDuplicateTarget("java_library", "java-lib-2"),
		},
	})
}
+30 −0
Original line number Diff line number Diff line
@@ -19,12 +19,14 @@ import (
	"io"

	"android/soong/android"
	"android/soong/bazel"
	"android/soong/dexpreopt"
)

type DeviceHostConverter struct {
	android.ModuleBase
	android.DefaultableModuleBase
	android.BazelModuleBase

	properties DeviceHostConverterProperties

@@ -76,6 +78,7 @@ func HostForDeviceFactory() android.Module {
	module.AddProperties(&module.properties)

	InitJavaModule(module, android.DeviceSupported)
	android.InitBazelModule(module)
	return module
}

@@ -186,3 +189,30 @@ func (d *DeviceHostConverter) AndroidMk() android.AndroidMkData {
		},
	}
}

type bazelDeviceHostConverterAttributes struct {
	Deps bazel.LabelListAttribute
}

func (d *DeviceHostConverter) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
	ctx.CreateBazelTargetModule(
		bazel.BazelTargetModuleProperties{
			Rule_class:        "java_host_for_device",
			Bzl_load_location: "//build/bazel/rules/java:host_for_device.bzl",
		},
		android.CommonAttributes{Name: d.Name()},
		&bazelDeviceHostConverterAttributes{
			Deps: bazel.MakeLabelListAttribute(android.BazelLabelForModuleDeps(ctx, d.properties.Libs)),
		},
	)
	neverlinkProp := true
	neverLinkAttrs := &javaLibraryAttributes{
		Exports:   bazel.MakeSingleLabelListAttribute(bazel.Label{Label: ":" + d.Name()}),
		Neverlink: bazel.BoolAttribute{Value: &neverlinkProp},
	}
	ctx.CreateBazelTargetModule(
		javaLibraryBazelTargetModuleProperties(),
		android.CommonAttributes{Name: d.Name() + "-neverlink"},
		neverLinkAttrs)

}