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

Commit d058f918 authored by Colin Cross's avatar Colin Cross Committed by Automerger Merge Worker
Browse files

Merge "Remove bp2build from frameworks/base/api/" into main am: 46f743d1

parents c2c34a8a 46f743d1
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -31,12 +31,10 @@ bootstrap_go_package {
        "blueprint",
        "soong",
        "soong-android",
        "soong-bp2build",
        "soong-genrule",
        "soong-java",
    ],
    srcs: ["api.go"],
    testSrcs: ["api_test.go"],
    pluginFor: ["soong_build"],
}

+27 −109
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import (
	"github.com/google/blueprint/proptools"

	"android/soong/android"
	"android/soong/bazel"
	"android/soong/genrule"
	"android/soong/java"
)
@@ -65,7 +64,6 @@ type CombinedApisProperties struct {

type CombinedApis struct {
	android.ModuleBase
	android.BazelModuleBase

	properties CombinedApisProperties
}
@@ -115,20 +113,6 @@ type defaultsProps struct {
	Previous_api        *string
}

type Bazel_module struct {
	Label              *string
	Bp2build_available *bool
}
type bazelProperties struct {
	*Bazel_module
}

var bp2buildNotAvailable = bazelProperties{
	&Bazel_module{
		Bp2build_available: proptools.BoolPtr(false),
	},
}

// Struct to pass parameters for the various merged [current|removed].txt file modules we create.
type MergedTxtDefinition struct {
	// "current.txt" or "removed.txt"
@@ -143,8 +127,6 @@ type MergedTxtDefinition struct {
	ModuleTag string
	// public, system, module-lib or system-server
	Scope string
	// True if there is a bp2build definition for this module
	Bp2buildDefined bool
}

func createMergedTxt(ctx android.LoadHookContext, txt MergedTxtDefinition) {
@@ -178,20 +160,7 @@ func createMergedTxt(ctx android.LoadHookContext, txt MergedTxtDefinition) {
		},
	}
	props.Visibility = []string{"//visibility:public"}
	bazelProps := bazelProperties{
		&Bazel_module{
			Bp2build_available: proptools.BoolPtr(false),
		},
	}
	if txt.Bp2buildDefined {
		moduleDir := ctx.ModuleDir()
		if moduleDir == android.Bp2BuildTopLevel {
			moduleDir = ""
		}
		label := fmt.Sprintf("//%s:%s", moduleDir, moduleName)
		bazelProps.Label = &label
	}
	ctx.CreateModule(genrule.GenRuleFactory, &props, &bazelProps)
	ctx.CreateModule(genrule.GenRuleFactory, &props)
}

func createMergedAnnotationsFilegroups(ctx android.LoadHookContext, modules, system_server_modules []string) {
@@ -221,7 +190,7 @@ func createMergedAnnotationsFilegroups(ctx android.LoadHookContext, modules, sys
		props := fgProps{}
		props.Name = proptools.StringPtr(i.name)
		props.Srcs = createSrcs(i.modules, i.tag)
		ctx.CreateModule(android.FileGroupFactory, &props, &bp2buildNotAvailable)
		ctx.CreateModule(android.FileGroupFactory, &props)
	}
}

@@ -315,7 +284,7 @@ func createPublicStubsSourceFilegroup(ctx android.LoadHookContext, modules []str
	props.Name = proptools.StringPtr("all-modules-public-stubs-source")
	props.Srcs = createSrcs(modules, "{.public.stubs.source}")
	props.Visibility = []string{"//frameworks/base"}
	ctx.CreateModule(android.FileGroupFactory, &props, &bp2buildNotAvailable)
	ctx.CreateModule(android.FileGroupFactory, &props)
}

func createMergedTxts(ctx android.LoadHookContext, bootclasspath, system_server_classpath []string) {
@@ -323,7 +292,6 @@ func createMergedTxts(ctx android.LoadHookContext, bootclasspath, system_server_

	tagSuffix := []string{".api.txt}", ".removed-api.txt}"}
	distFilename := []string{"android.txt", "android-removed.txt"}
	bp2BuildDefined := []bool{true, false}
	for i, f := range []string{"current.txt", "removed.txt"} {
		textFiles = append(textFiles, MergedTxtDefinition{
			TxtFilename:  f,
@@ -332,7 +300,6 @@ func createMergedTxts(ctx android.LoadHookContext, bootclasspath, system_server_
			Modules:      bootclasspath,
			ModuleTag:    "{.public" + tagSuffix[i],
			Scope:        "public",
			Bp2buildDefined: bp2BuildDefined[i],
		})
		textFiles = append(textFiles, MergedTxtDefinition{
			TxtFilename:  f,
@@ -341,7 +308,6 @@ func createMergedTxts(ctx android.LoadHookContext, bootclasspath, system_server_
			Modules:      bootclasspath,
			ModuleTag:    "{.system" + tagSuffix[i],
			Scope:        "system",
			Bp2buildDefined: bp2BuildDefined[i],
		})
		textFiles = append(textFiles, MergedTxtDefinition{
			TxtFilename:  f,
@@ -350,7 +316,6 @@ func createMergedTxts(ctx android.LoadHookContext, bootclasspath, system_server_
			Modules:      bootclasspath,
			ModuleTag:    "{.module-lib" + tagSuffix[i],
			Scope:        "module-lib",
			Bp2buildDefined: bp2BuildDefined[i],
		})
		textFiles = append(textFiles, MergedTxtDefinition{
			TxtFilename:  f,
@@ -359,7 +324,6 @@ func createMergedTxts(ctx android.LoadHookContext, bootclasspath, system_server_
			Modules:      system_server_classpath,
			ModuleTag:    "{.system-server" + tagSuffix[i],
			Scope:        "system-server",
			Bp2buildDefined: bp2BuildDefined[i],
		})
	}
	for _, txt := range textFiles {
@@ -446,55 +410,9 @@ func combinedApisModuleFactory() android.Module {
	module.AddProperties(&module.properties)
	android.InitAndroidModule(module)
	android.AddLoadHook(module, func(ctx android.LoadHookContext) { module.createInternalModules(ctx) })
	android.InitBazelModule(module)
	return module
}

type bazelCombinedApisAttributes struct {
	Scope bazel.StringAttribute
	Base  bazel.LabelAttribute
	Deps  bazel.LabelListAttribute
}

// combined_apis bp2build converter
func (a *CombinedApis) ConvertWithBp2build(ctx android.Bp2buildMutatorContext) {
	basePrefix := "non-updatable"
	scopeToSuffix := map[string]string{
		"public":        "-current.txt",
		"system":        "-system-current.txt",
		"module-lib":    "-module-lib-current.txt",
		"system-server": "-system-server-current.txt",
	}

	for scopeName, suffix := range scopeToSuffix {
		name := a.Name() + suffix

		var scope bazel.StringAttribute
		scope.SetValue(scopeName)

		var base bazel.LabelAttribute
		base.SetValue(android.BazelLabelForModuleDepSingle(ctx, basePrefix+suffix))

		var deps bazel.LabelListAttribute
		classpath := a.properties.Bootclasspath
		if scopeName == "system-server" {
			classpath = a.properties.System_server_classpath
		}
		deps = bazel.MakeLabelListAttribute(android.BazelLabelForModuleDeps(ctx, classpath))

		attrs := bazelCombinedApisAttributes{
			Scope: scope,
			Base:  base,
			Deps:  deps,
		}
		props := bazel.BazelTargetModuleProperties{
			Rule_class:        "merged_txts",
			Bzl_load_location: "//build/bazel/rules/java:merged_txts.bzl",
		}
		ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: name}, &attrs)
	}
}

// Various utility methods below.

// Creates an array of ":<m><tag>" for each m in <modules>.

api/api_test.go

deleted100644 → 0
+0 −115
Original line number Diff line number Diff line
// Copyright (C) 2023 The Android Open Source Project
//
// 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 api

import (
	"testing"

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

func runCombinedApisTestCaseWithRegistrationCtxFunc(t *testing.T, tc bp2build.Bp2buildTestCase, registrationCtxFunc func(ctx android.RegistrationContext)) {
	t.Helper()
	(&tc).ModuleTypeUnderTest = "combined_apis"
	(&tc).ModuleTypeUnderTestFactory = combinedApisModuleFactory
	bp2build.RunBp2BuildTestCase(t, registrationCtxFunc, tc)
}

func runCombinedApisTestCase(t *testing.T, tc bp2build.Bp2buildTestCase) {
	t.Helper()
	runCombinedApisTestCaseWithRegistrationCtxFunc(t, tc, func(ctx android.RegistrationContext) {
		ctx.RegisterModuleType("java_defaults", java.DefaultsFactory)
		ctx.RegisterModuleType("java_sdk_library", java.SdkLibraryFactory)
		ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
	})
}

func TestCombinedApisGeneral(t *testing.T) {
	runCombinedApisTestCase(t, bp2build.Bp2buildTestCase{
		Description: "combined_apis, general case",
		Blueprint: `combined_apis {
    name: "foo",
    bootclasspath: ["bcp"],
    system_server_classpath: ["ssc"],
}

java_sdk_library {
		name: "bcp",
		srcs: ["a.java", "b.java"],
		shared_library: false,
}
java_sdk_library {
		name: "ssc",
		srcs: ["a.java", "b.java"],
		shared_library: false,
}
filegroup {
    name: "non-updatable-current.txt",
    srcs: ["current.txt"],
}
filegroup {
    name: "non-updatable-system-current.txt",
    srcs: ["system-current.txt"],
}
filegroup {
    name: "non-updatable-module-lib-current.txt",
    srcs: ["system-removed.txt"],
}
filegroup {
    name: "non-updatable-system-server-current.txt",
    srcs: ["system-lint-baseline.txt"],
}
`,
		Filesystem: map[string]string{
			"a/Android.bp": `
			java_defaults {
				name: "android.jar_defaults",
			}
			`,
			"api/current.txt":        "",
			"api/removed.txt":        "",
			"api/system-current.txt": "",
			"api/system-removed.txt": "",
			"api/test-current.txt":   "",
			"api/test-removed.txt":   "",
		},
		StubbedBuildDefinitions:    []string{"bcp", "ssc", "non-updatable-current.txt", "non-updatable-system-current.txt", "non-updatable-module-lib-current.txt", "non-updatable-system-server-current.txt"},
		ExpectedHandcraftedModules: []string{"foo-current.txt", "foo-system-current.txt", "foo-module-lib-current.txt", "foo-system-server-current.txt"},
		ExpectedBazelTargets: []string{
			bp2build.MakeBazelTargetNoRestrictions("merged_txts", "foo-current.txt", bp2build.AttrNameToString{
				"scope": `"public"`,
				"base":  `":non-updatable-current.txt"`,
				"deps":  `[":bcp"]`,
			}),
			bp2build.MakeBazelTargetNoRestrictions("merged_txts", "foo-system-current.txt", bp2build.AttrNameToString{
				"scope": `"system"`,
				"base":  `":non-updatable-system-current.txt"`,
				"deps":  `[":bcp"]`,
			}),
			bp2build.MakeBazelTargetNoRestrictions("merged_txts", "foo-module-lib-current.txt", bp2build.AttrNameToString{
				"scope": `"module-lib"`,
				"base":  `":non-updatable-module-lib-current.txt"`,
				"deps":  `[":bcp"]`,
			}),
			bp2build.MakeBazelTargetNoRestrictions("merged_txts", "foo-system-server-current.txt", bp2build.AttrNameToString{
				"scope": `"system-server"`,
				"base":  `":non-updatable-system-server-current.txt"`,
				"deps":  `[":ssc"]`,
			}),
		},
	})
}
+0 −2
Original line number Diff line number Diff line
@@ -6,7 +6,5 @@ require (
	android/soong v0.0.0
	github.com/google/blueprint v0.0.0
	google.golang.org/protobuf v0.0.0
	prebuilts/bazel/common/proto/analysis_v2 v0.0.0
	prebuilts/bazel/common/proto/build v0.0.0
	go.starlark.net v0.0.0
)
+0 −2
Original line number Diff line number Diff line
@@ -13,7 +13,5 @@ replace (
	google.golang.org/protobuf v0.0.0 => ../../../external/golang-protobuf
	github.com/google/blueprint v0.0.0 => ../../../build/blueprint
	github.com/google/go-cmp v0.0.0 => ../../../external/go-cmp
	prebuilts/bazel/common/proto/analysis_v2 v0.0.0 => ../../../prebuilts/bazel/common/proto/analysis_v2
	prebuilts/bazel/common/proto/build v0.0.0 => ../../../prebuilts/bazel/common/proto/build
	go.starlark.net v0.0.0 => ../../../external/starlark-go
)