Merge "Delete ApiBp2build soong_build mode" into main
diff --git a/android/bazel.go b/android/bazel.go
index 37e9219..e764b18 100644
--- a/android/bazel.go
+++ b/android/bazel.go
@@ -510,12 +510,6 @@
}
module := p.module
- // In api_bp2build mode, all soong modules that can provide API contributions should be converted
- // This is irrespective of its presence/absence in bp2build allowlists
- if ctx.Config().BuildMode == ApiBp2build {
- _, providesApis := module.(ApiProvider)
- return providesApis
- }
propValue := b.bazelProperties.Bazel_module.Bp2build_available
packagePath := moduleDirWithPossibleOverride(ctx, module, p.moduleDir)
diff --git a/android/config.go b/android/config.go
index 01c39f0..645a263 100644
--- a/android/config.go
+++ b/android/config.go
@@ -87,7 +87,6 @@
SymlinkForestMarker string
Bp2buildMarker string
BazelQueryViewDir string
- BazelApiBp2buildDir string
ModuleGraphFile string
ModuleActionsFile string
DocFile string
@@ -121,9 +120,6 @@
// express build semantics.
GenerateQueryView
- // Generate BUILD files for API contributions to API surfaces
- ApiBp2build
-
// Create a JSON representation of the module graph and exit.
GenerateModuleGraph
@@ -641,7 +637,6 @@
setBuildMode(cmdArgs.SymlinkForestMarker, SymlinkForest)
setBuildMode(cmdArgs.Bp2buildMarker, Bp2build)
setBuildMode(cmdArgs.BazelQueryViewDir, GenerateQueryView)
- setBuildMode(cmdArgs.BazelApiBp2buildDir, ApiBp2build)
setBuildMode(cmdArgs.ModuleGraphFile, GenerateModuleGraph)
setBuildMode(cmdArgs.DocFile, GenerateDocFile)
setBazelMode(cmdArgs.BazelMode, "--bazel-mode", BazelProdMode)
diff --git a/android/register.go b/android/register.go
index 64b0207..df97c75 100644
--- a/android/register.go
+++ b/android/register.go
@@ -197,13 +197,6 @@
RegisterMutatorsForBazelConversion(ctx, bp2buildPreArchMutators)
}
-// RegisterForApiBazelConversion is similar to RegisterForBazelConversion except that
-// it only generates API targets in the generated workspace
-func (ctx *Context) RegisterForApiBazelConversion() {
- registerModuleTypes(ctx)
- RegisterMutatorsForApiBazelConversion(ctx, bp2buildPreArchMutators)
-}
-
// Register the pipeline of singletons, module types, and mutators for
// generating build.ninja and other files for Kati, from Android.bp files.
func (ctx *Context) Register() {
diff --git a/android/testing.go b/android/testing.go
index 5ad7ad0..32357db 100644
--- a/android/testing.go
+++ b/android/testing.go
@@ -467,12 +467,6 @@
RegisterMutatorsForBazelConversion(ctx.Context, ctx.bp2buildPreArch)
}
-// RegisterForApiBazelConversion prepares a test context for API bp2build conversion.
-func (ctx *TestContext) RegisterForApiBazelConversion() {
- ctx.config.BuildMode = ApiBp2build
- RegisterMutatorsForApiBazelConversion(ctx.Context, ctx.bp2buildPreArch)
-}
-
func (ctx *TestContext) ParseFileList(rootDir string, filePaths []string) (deps []string, errs []error) {
// This function adapts the old style ParseFileList calls that are spread throughout the tests
// to the new style that takes a config.
diff --git a/bp2build/Android.bp b/bp2build/Android.bp
index 6b50a2e..b675e5e 100644
--- a/bp2build/Android.bp
+++ b/bp2build/Android.bp
@@ -62,7 +62,6 @@
"cc_test_conversion_test.go",
"cc_yasm_conversion_test.go",
"conversion_test.go",
- "droidstubs_conversion_test.go",
"filegroup_conversion_test.go",
"genrule_conversion_test.go",
"gensrcs_conversion_test.go",
diff --git a/bp2build/build_conversion.go b/bp2build/build_conversion.go
index cd1bc7f..9060363 100644
--- a/bp2build/build_conversion.go
+++ b/bp2build/build_conversion.go
@@ -175,9 +175,6 @@
// This mode is used for discovering and introspecting the existing Soong
// module graph.
QueryView
-
- // ApiBp2build - generate BUILD files for API contribution targets
- ApiBp2build
)
type unconvertedDepsMode int
@@ -196,8 +193,6 @@
return "Bp2Build"
case QueryView:
return "QueryView"
- case ApiBp2build:
- return "ApiBp2build"
default:
return fmt.Sprintf("%d", mode)
}
@@ -774,10 +769,6 @@
errs = append(errs, err)
}
targets = append(targets, t)
- case ApiBp2build:
- if aModule, ok := m.(android.Module); ok && aModule.IsConvertedByBp2build() {
- targets, errs = generateBazelTargets(bpCtx, aModule)
- }
default:
errs = append(errs, fmt.Errorf("Unknown code-generation mode: %s", ctx.Mode()))
return
diff --git a/bp2build/build_conversion_test.go b/bp2build/build_conversion_test.go
index 8ee0439..3887c5d 100644
--- a/bp2build/build_conversion_test.go
+++ b/bp2build/build_conversion_test.go
@@ -1879,30 +1879,6 @@
})
}
-func TestGenerateApiBazelTargets(t *testing.T) {
- bp := `
- custom {
- name: "foo",
- api: "foo.txt",
- }
- `
- expectedBazelTarget := MakeBazelTarget(
- "custom_api_contribution",
- "foo",
- AttrNameToString{
- "api": `"foo.txt"`,
- },
- )
- registerCustomModule := func(ctx android.RegistrationContext) {
- ctx.RegisterModuleType("custom", customModuleFactoryHostAndDevice)
- }
- RunApiBp2BuildTestCase(t, registerCustomModule, Bp2buildTestCase{
- Blueprint: bp,
- ExpectedBazelTargets: []string{expectedBazelTarget},
- Description: "Generating API contribution Bazel targets for custom module",
- })
-}
-
func TestGenerateConfigSetting(t *testing.T) {
bp := `
custom {
diff --git a/bp2build/cc_library_conversion_test.go b/bp2build/cc_library_conversion_test.go
index 890acc6..246f169 100644
--- a/bp2build/cc_library_conversion_test.go
+++ b/bp2build/cc_library_conversion_test.go
@@ -2839,205 +2839,6 @@
)
}
-func TestCcApiContributionsWithHdrs(t *testing.T) {
- bp := `
- cc_library {
- name: "libfoo",
- stubs: { symbol_file: "libfoo.map.txt", versions: ["28", "29", "current"] },
- llndk: { symbol_file: "libfoo.map.txt", override_export_include_dirs: ["dir2"]},
- export_include_dirs: ["dir1"],
- }
- `
- expectedBazelTargets := []string{
- MakeBazelTarget(
- "cc_api_library_headers",
- "libfoo.module-libapi.headers",
- AttrNameToString{
- "export_includes": `["dir1"]`,
- }),
- MakeBazelTarget(
- "cc_api_library_headers",
- "libfoo.vendorapi.headers",
- AttrNameToString{
- "export_includes": `["dir2"]`,
- }),
- MakeBazelTarget(
- "cc_api_contribution",
- "libfoo.contribution",
- AttrNameToString{
- "api": `"libfoo.map.txt"`,
- "library_name": `"libfoo"`,
- "api_surfaces": `[
- "module-libapi",
- "vendorapi",
- ]`,
- "hdrs": `[
- ":libfoo.module-libapi.headers",
- ":libfoo.vendorapi.headers",
- ]`,
- }),
- }
- RunApiBp2BuildTestCase(t, cc.RegisterLibraryBuildComponents, Bp2buildTestCase{
- Blueprint: bp,
- Description: "cc API contributions to module-libapi and vendorapi",
- ExpectedBazelTargets: expectedBazelTargets,
- })
-}
-
-func TestCcApiSurfaceCombinations(t *testing.T) {
- testCases := []struct {
- bp string
- expectedApi string
- expectedApiSurfaces string
- description string
- }{
- {
- bp: `
- cc_library {
- name: "a",
- stubs: {symbol_file: "a.map.txt"},
- }`,
- expectedApi: `"a.map.txt"`,
- expectedApiSurfaces: `["module-libapi"]`,
- description: "Library that contributes to module-libapi",
- },
- {
- bp: `
- cc_library {
- name: "a",
- llndk: {symbol_file: "a.map.txt"},
- }`,
- expectedApi: `"a.map.txt"`,
- expectedApiSurfaces: `["vendorapi"]`,
- description: "Library that contributes to vendorapi",
- },
- {
- bp: `
- cc_library {
- name: "a",
- llndk: {symbol_file: "a.map.txt"},
- stubs: {symbol_file: "a.map.txt"},
- }`,
- expectedApi: `"a.map.txt"`,
- expectedApiSurfaces: `[
- "module-libapi",
- "vendorapi",
- ]`,
- description: "Library that contributes to module-libapi and vendorapi",
- },
- }
- for _, testCase := range testCases {
- expectedBazelTargets := []string{
- MakeBazelTarget(
- "cc_api_contribution",
- "a.contribution",
- AttrNameToString{
- "library_name": `"a"`,
- "hdrs": `[]`,
- "api": testCase.expectedApi,
- "api_surfaces": testCase.expectedApiSurfaces,
- },
- ),
- }
- RunApiBp2BuildTestCase(t, cc.RegisterLibraryBuildComponents, Bp2buildTestCase{
- Blueprint: testCase.bp,
- Description: testCase.description,
- ExpectedBazelTargets: expectedBazelTargets,
- })
- }
-}
-
-// llndk struct property in Soong provides users with several options to configure the exported include dirs
-// Test the generated bazel targets for the different configurations
-func TestCcVendorApiHeaders(t *testing.T) {
- testCases := []struct {
- bp string
- expectedIncludes string
- expectedSystemIncludes string
- description string
- }{
- {
- bp: `
- cc_library {
- name: "a",
- export_include_dirs: ["include"],
- export_system_include_dirs: ["base_system_include"],
- llndk: {
- symbol_file: "a.map.txt",
- export_headers_as_system: true,
- },
- }
- `,
- expectedIncludes: "",
- expectedSystemIncludes: `[
- "base_system_include",
- "include",
- ]`,
- description: "Headers are exported as system to API surface",
- },
- {
- bp: `
- cc_library {
- name: "a",
- export_include_dirs: ["include"],
- export_system_include_dirs: ["base_system_include"],
- llndk: {
- symbol_file: "a.map.txt",
- override_export_include_dirs: ["llndk_include"],
- },
- }
- `,
- expectedIncludes: `["llndk_include"]`,
- expectedSystemIncludes: `["base_system_include"]`,
- description: "Non-system Headers are ovverriden before export to API surface",
- },
- {
- bp: `
- cc_library {
- name: "a",
- export_include_dirs: ["include"],
- export_system_include_dirs: ["base_system_include"],
- llndk: {
- symbol_file: "a.map.txt",
- override_export_include_dirs: ["llndk_include"],
- export_headers_as_system: true,
- },
- }
- `,
- expectedIncludes: "", // includes are set to nil
- expectedSystemIncludes: `[
- "base_system_include",
- "llndk_include",
- ]`,
- description: "System Headers are extended before export to API surface",
- },
- }
- for _, testCase := range testCases {
- attrs := AttrNameToString{}
- if testCase.expectedIncludes != "" {
- attrs["export_includes"] = testCase.expectedIncludes
- }
- if testCase.expectedSystemIncludes != "" {
- attrs["export_system_includes"] = testCase.expectedSystemIncludes
- }
-
- expectedBazelTargets := []string{
- MakeBazelTarget("cc_api_library_headers", "a.vendorapi.headers", attrs),
- // Create a target for cc_api_contribution target
- MakeBazelTarget("cc_api_contribution", "a.contribution", AttrNameToString{
- "api": `"a.map.txt"`,
- "api_surfaces": `["vendorapi"]`,
- "hdrs": `[":a.vendorapi.headers"]`,
- "library_name": `"a"`,
- }),
- }
- RunApiBp2BuildTestCase(t, cc.RegisterLibraryBuildComponents, Bp2buildTestCase{
- Blueprint: testCase.bp,
- ExpectedBazelTargets: expectedBazelTargets,
- })
- }
-}
-
func TestCcLibraryStubsAcrossConfigsDuplicatesRemoved(t *testing.T) {
runCcLibraryTestCase(t, Bp2buildTestCase{
Description: "stub target generation of the same lib across configs should not result in duplicates",
diff --git a/bp2build/cc_library_headers_conversion_test.go b/bp2build/cc_library_headers_conversion_test.go
index 072f5b3..a592ca9 100644
--- a/bp2build/cc_library_headers_conversion_test.go
+++ b/bp2build/cc_library_headers_conversion_test.go
@@ -123,69 +123,6 @@
})
}
-func TestCcApiHeaders(t *testing.T) {
- fs := map[string]string{
- "bar/Android.bp": `cc_library_headers { name: "bar_headers", }`,
- }
- bp := `
- cc_library_headers {
- name: "foo_headers",
- export_include_dirs: ["dir1", "dir2"],
- export_header_lib_headers: ["bar_headers"],
-
- arch: {
- arm: {
- export_include_dirs: ["dir_arm"],
- },
- x86: {
- export_include_dirs: ["dir_x86"],
- },
- },
-
- target: {
- android: {
- export_include_dirs: ["dir1", "dir_android"],
- },
- windows: {
- export_include_dirs: ["dir_windows"],
- },
- }
- }
- `
- expectedBazelTargets := []string{
- MakeBazelTarget("cc_api_library_headers", "foo_headers.contribution.arm", AttrNameToString{
- "export_includes": `["dir_arm"]`,
- "arch": `"arm"`,
- }),
- MakeBazelTarget("cc_api_library_headers", "foo_headers.contribution.x86", AttrNameToString{
- "export_includes": `["dir_x86"]`,
- "arch": `"x86"`,
- }),
- MakeBazelTarget("cc_api_library_headers", "foo_headers.contribution.androidos", AttrNameToString{
- "export_includes": `["dir_android"]`, // common includes are deduped
- }),
- // Windows headers are not exported
- MakeBazelTarget("cc_api_library_headers", "foo_headers.contribution", AttrNameToString{
- "export_includes": `[
- "dir1",
- "dir2",
- ]`,
- "deps": `[
- "//bar:bar_headers.contribution",
- ":foo_headers.contribution.arm",
- ":foo_headers.contribution.x86",
- ":foo_headers.contribution.androidos",
- ]`,
- }),
- }
- RunApiBp2BuildTestCase(t, cc.RegisterLibraryHeadersBuildComponents, Bp2buildTestCase{
- Blueprint: bp,
- Description: "Header library contributions to API surfaces",
- ExpectedBazelTargets: expectedBazelTargets,
- Filesystem: fs,
- })
-}
-
// header_libs has "variant_prepend" tag. In bp2build output,
// variant info(select) should go before general info.
func TestCcLibraryHeadersOsSpecificHeader(t *testing.T) {
diff --git a/bp2build/conversion.go b/bp2build/conversion.go
index 35a1400..da4b5cf 100644
--- a/bp2build/conversion.go
+++ b/bp2build/conversion.go
@@ -145,7 +145,7 @@
targets.sort()
var content string
- if mode == Bp2Build || mode == ApiBp2build {
+ if mode == Bp2Build {
content = `# READ THIS FIRST:
# This file was automatically generated by bp2build for the Bazel migration project.
# Feel free to edit or test it, but do *not* check it into your version control system.
diff --git a/bp2build/droidstubs_conversion_test.go b/bp2build/droidstubs_conversion_test.go
deleted file mode 100644
index 12c1cfe..0000000
--- a/bp2build/droidstubs_conversion_test.go
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright 2022 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 registerJavaApiModules(ctx android.RegistrationContext) {
- java.RegisterSdkLibraryBuildComponents(ctx)
- java.RegisterStubsBuildComponents(ctx)
-}
-
-func TestDroidstubsApiContributions(t *testing.T) {
- bp := `
- droidstubs {
- name: "framework-stubs",
- check_api: {
- current: {
- api_file: "framework.current.txt",
- },
- },
- }
-
- // Modules without check_api should not generate a Bazel API target
- droidstubs {
- name: "framework-docs",
- }
-
- // java_sdk_library is a macro that creates droidstubs
- java_sdk_library {
- name: "module-stubs",
- srcs: ["A.java"],
-
- // These api surfaces are added by default, but add them explicitly to make
- // this test hermetic
- public: {
- enabled: true,
- },
- system: {
- enabled: true,
- },
-
- // Disable other api surfaces to keep unit test scope limited
- module_lib: {
- enabled: false,
- },
- test: {
- enabled: false,
- },
- }
- `
- expectedBazelTargets := []string{
- MakeBazelTargetNoRestrictions(
- "java_api_contribution",
- "framework-stubs.contribution",
- AttrNameToString{
- "api": `"framework.current.txt"`,
- "api_surface": `"publicapi"`,
- "target_compatible_with": `["//build/bazel/platforms/os:android"]`,
- }),
- MakeBazelTargetNoRestrictions(
- "java_api_contribution",
- "module-stubs.stubs.source.contribution",
- AttrNameToString{
- "api": `"api/current.txt"`,
- "api_surface": `"publicapi"`,
- "target_compatible_with": `["//build/bazel/platforms/os:android"]`,
- }),
- MakeBazelTargetNoRestrictions(
- "java_api_contribution",
- "module-stubs.stubs.source.system.contribution",
- AttrNameToString{
- "api": `"api/system-current.txt"`,
- "api_surface": `"systemapi"`,
- "target_compatible_with": `["//build/bazel/platforms/os:android"]`,
- }),
- }
- RunApiBp2BuildTestCase(t, registerJavaApiModules, Bp2buildTestCase{
- Blueprint: bp,
- ExpectedBazelTargets: expectedBazelTargets,
- Filesystem: map[string]string{
- "api/current.txt": "",
- "api/removed.txt": "",
- "api/system-current.txt": "",
- "api/system-removed.txt": "",
- },
- })
-}
diff --git a/bp2build/testing.go b/bp2build/testing.go
index 42d955e..997df64 100644
--- a/bp2build/testing.go
+++ b/bp2build/testing.go
@@ -108,15 +108,6 @@
runBp2BuildTestCaseWithSetup(t, bp2buildSetup, tc)
}
-func RunApiBp2BuildTestCase(t *testing.T, registerModuleTypes func(ctx android.RegistrationContext), tc Bp2buildTestCase) {
- t.Helper()
- apiBp2BuildSetup := android.GroupFixturePreparers(
- android.FixtureRegisterWithContext(registerModuleTypes),
- SetApiBp2BuildTestRunner,
- )
- runBp2BuildTestCaseWithSetup(t, apiBp2BuildSetup, tc)
-}
-
func runBp2BuildTestCaseWithSetup(t *testing.T, extraPreparer android.FixturePreparer, tc Bp2buildTestCase) {
t.Helper()
dir := "."
@@ -180,27 +171,14 @@
}
// SetBp2BuildTestRunner customizes the test fixture mechanism to run tests in Bp2Build mode.
-var SetBp2BuildTestRunner = android.FixtureSetTestRunner(&bazelTestRunner{Bp2Build})
+var SetBp2BuildTestRunner = android.FixtureSetTestRunner(&bazelTestRunner{})
-// SetApiBp2BuildTestRunner customizes the test fixture mechanism to run tests in ApiBp2build mode.
-var SetApiBp2BuildTestRunner = android.FixtureSetTestRunner(&bazelTestRunner{ApiBp2build})
-
-// bazelTestRunner customizes the test fixture mechanism to run tests of the bp2build and
-// apiBp2build build modes.
-type bazelTestRunner struct {
- mode CodegenMode
-}
+// bazelTestRunner customizes the test fixture mechanism to run tests of the bp2build build mode.
+type bazelTestRunner struct{}
func (b *bazelTestRunner) FinalPreparer(result *android.TestResult) android.CustomTestResult {
ctx := result.TestContext
- switch b.mode {
- case Bp2Build:
- ctx.RegisterForBazelConversion()
- case ApiBp2build:
- ctx.RegisterForApiBazelConversion()
- default:
- panic(fmt.Errorf("unknown build mode: %d", b.mode))
- }
+ ctx.RegisterForBazelConversion()
return &BazelTestResult{TestResult: result}
}
@@ -214,11 +192,7 @@
return
}
- codegenMode := Bp2Build
- if ctx.Config().BuildMode == android.ApiBp2build {
- codegenMode = ApiBp2build
- }
- codegenCtx := NewCodegenContext(config, ctx.Context, codegenMode, "")
+ codegenCtx := NewCodegenContext(config, ctx.Context, Bp2Build, "")
res, errs := GenerateBazelTargets(codegenCtx, false)
if bazelResult.CollateErrs(errs) {
return
diff --git a/cmd/soong_build/main.go b/cmd/soong_build/main.go
index 20e366e..626f076 100644
--- a/cmd/soong_build/main.go
+++ b/cmd/soong_build/main.go
@@ -27,7 +27,6 @@
"android/soong/android"
"android/soong/android/allowlists"
- "android/soong/bazel"
"android/soong/bp2build"
"android/soong/shared"
"android/soong/ui/metrics/bp2build_metrics_proto"
@@ -76,7 +75,6 @@
flag.StringVar(&cmdlineArgs.ModuleActionsFile, "module_actions_file", "", "JSON file to output inputs/outputs of actions of modules")
flag.StringVar(&cmdlineArgs.DocFile, "soong_docs", "", "build documentation file to output")
flag.StringVar(&cmdlineArgs.BazelQueryViewDir, "bazel_queryview_dir", "", "path to the bazel queryview directory relative to --top")
- flag.StringVar(&cmdlineArgs.BazelApiBp2buildDir, "bazel_api_bp2build_dir", "", "path to the bazel api_bp2build directory relative to --top")
flag.StringVar(&cmdlineArgs.Bp2buildMarker, "bp2build_marker", "", "If set, run bp2build, touch the specified marker file then exit")
flag.StringVar(&cmdlineArgs.SymlinkForestMarker, "symlink_forest_marker", "", "If set, create the bp2build symlink forest, touch the specified marker file, then exit")
flag.StringVar(&cmdlineArgs.OutFile, "o", "build.ninja", "the Ninja file to output")
@@ -169,120 +167,6 @@
touch(shared.JoinPath(topDir, queryviewMarker))
}
-// Run the code-generation phase to convert API contributions to BUILD files.
-// Return marker file for the new synthetic workspace
-func runApiBp2build(ctx *android.Context, extraNinjaDeps []string) string {
- ctx.EventHandler.Begin("api_bp2build")
- defer ctx.EventHandler.End("api_bp2build")
- // api_bp2build does not run the typical pipeline of soong mutators.
- // Hoevever, it still runs the defaults mutator which can create dependencies.
- // These dependencies might not always exist (e.g. in tests)
- ctx.SetAllowMissingDependencies(ctx.Config().AllowMissingDependencies())
- ctx.RegisterForApiBazelConversion()
-
- // Register the Android.bp files in the tree
- // Add them to the workspace's .d file
- ctx.SetModuleListFile(cmdlineArgs.ModuleListFile)
- if paths, err := ctx.ListModulePaths("."); err == nil {
- extraNinjaDeps = append(extraNinjaDeps, paths...)
- } else {
- panic(err)
- }
-
- // Run the loading and analysis phase
- ninjaDeps, err := bootstrap.RunBlueprint(cmdlineArgs.Args,
- bootstrap.StopBeforePrepareBuildActions,
- ctx.Context,
- ctx.Config())
- maybeQuit(err, "")
- ninjaDeps = append(ninjaDeps, extraNinjaDeps...)
-
- // Add the globbed dependencies
- ninjaDeps = append(ninjaDeps, writeBuildGlobsNinjaFile(ctx)...)
-
- // Run codegen to generate BUILD files
- codegenContext := bp2build.NewCodegenContext(ctx.Config(), ctx, bp2build.ApiBp2build, topDir)
- absoluteApiBp2buildDir := shared.JoinPath(topDir, cmdlineArgs.BazelApiBp2buildDir)
- // Always generate bp2build_all_srcs filegroups in api_bp2build.
- // This is necessary to force each Android.bp file to create an equivalent BUILD file
- // and prevent package boundray issues.
- // e.g.
- // Source
- // f/b/Android.bp
- // java_library{
- // name: "foo",
- // api: "api/current.txt",
- // }
- //
- // f/b/api/Android.bp <- will cause package boundary issues
- //
- // Gen
- // f/b/BUILD
- // java_contribution{
- // name: "foo.contribution",
- // api: "//f/b/api:current.txt",
- // }
- //
- // If we don't generate f/b/api/BUILD, foo.contribution will be unbuildable.
- err = createBazelWorkspace(codegenContext, absoluteApiBp2buildDir, true)
- maybeQuit(err, "")
- ninjaDeps = append(ninjaDeps, codegenContext.AdditionalNinjaDeps()...)
-
- // Create soong_injection repository
- soongInjectionFiles, workspaceFiles, err := bp2build.CreateSoongInjectionDirFiles(codegenContext, bp2build.CreateCodegenMetrics())
- maybeQuit(err, "")
- absoluteSoongInjectionDir := shared.JoinPath(topDir, ctx.Config().SoongOutDir(), bazel.SoongInjectionDirName)
- for _, file := range soongInjectionFiles {
- // The API targets in api_bp2build workspace do not have any dependency on api_bp2build.
- // But we need to create these files to prevent errors during Bazel analysis.
- // These need to be created in Read-Write mode.
- // This is because the subsequent step (bp2build in api domain analysis) creates them in Read-Write mode
- // to allow users to edit/experiment in the synthetic workspace.
- writeReadWriteFile(absoluteSoongInjectionDir, file)
- }
- for _, file := range workspaceFiles {
- writeReadWriteFile(absoluteApiBp2buildDir, file)
- }
-
- workspace := shared.JoinPath(ctx.Config().SoongOutDir(), "api_bp2build")
- // Create the symlink forest
- symlinkDeps, _, _ := bp2build.PlantSymlinkForest(
- ctx.Config().IsEnvTrue("BP2BUILD_VERBOSE"),
- topDir,
- workspace,
- cmdlineArgs.BazelApiBp2buildDir,
- apiBuildFileExcludes(ctx))
- ninjaDeps = append(ninjaDeps, symlinkDeps...)
-
- workspaceMarkerFile := workspace + ".marker"
- writeDepFile(workspaceMarkerFile, ctx.EventHandler, ninjaDeps)
- touch(shared.JoinPath(topDir, workspaceMarkerFile))
- return workspaceMarkerFile
-}
-
-// With some exceptions, api_bp2build does not have any dependencies on the checked-in BUILD files
-// Exclude them from the generated workspace to prevent unrelated errors during the loading phase
-func apiBuildFileExcludes(ctx *android.Context) []string {
- ret := bazelArtifacts()
- srcs, err := getExistingBazelRelatedFiles(topDir)
- maybeQuit(err, "Error determining existing Bazel-related files")
- for _, src := range srcs {
- // Exclude all src BUILD files
- if src != "WORKSPACE" &&
- src != "BUILD" &&
- src != "BUILD.bazel" &&
- !strings.HasPrefix(src, "build/bazel") &&
- !strings.HasPrefix(src, "external/bazel-skylib") &&
- !strings.HasPrefix(src, "prebuilts/clang") {
- ret = append(ret, src)
- }
- }
- // Android.bp files for api surfaces are mounted to out/, but out/ should not be a
- // dep for api_bp2build. Otherwise, api_bp2build will be run every single time
- ret = append(ret, ctx.Config().OutDir())
- return ret
-}
-
func writeNinjaHint(ctx *android.Context) error {
ctx.BeginEvent("ninja_hint")
defer ctx.EndEvent("ninja_hint")
@@ -551,9 +435,6 @@
// Run the alternate pipeline of bp2build mutators and singleton to convert
// Blueprint to BUILD files before everything else.
finalOutputFile = runBp2Build(ctx, extraNinjaDeps, metricsDir)
- case android.ApiBp2build:
- finalOutputFile = runApiBp2build(ctx, extraNinjaDeps)
- writeMetrics(configuration, ctx.EventHandler, metricsDir)
default:
ctx.Register()
isMixedBuildsEnabled := configuration.IsMixedBuildsEnabled()
diff --git a/tests/bp2build_bazel_test.sh b/tests/bp2build_bazel_test.sh
index 090114b..8a64a56 100755
--- a/tests/bp2build_bazel_test.sh
+++ b/tests/bp2build_bazel_test.sh
@@ -407,38 +407,6 @@
fi
}
-# Smoke test to verify api_bp2build worksapce does not contain any errors
-function test_api_bp2build_empty_build() {
- setup
- run_soong api_bp2build
- run_bazel build --config=android --config=api_bp2build //:empty
-}
-
-# Verify that an *_api_contribution target can refer to an api file from
-# another Bazel package.
-function test_api_export_from_another_bazel_package() {
- setup
- # Parent dir Android.bp
- mkdir -p foo
- cat > foo/Android.bp << 'EOF'
-cc_library {
- name: "libfoo",
- stubs: {
- symbol_file: "api/libfoo.map.txt",
- },
-}
-EOF
- # Child dir Android.bp
- mkdir -p foo/api
- cat > foo/api/Android.bp << 'EOF'
-package{}
-EOF
- touch foo/api/libfoo.map.txt
- # Run test
- run_soong api_bp2build
- run_bazel build --config=android --config=api_bp2build //foo:libfoo.contribution
-}
-
function test_bazel_standalone_output_paths_contain_product_name {
setup
mkdir -p a
diff --git a/ui/build/config.go b/ui/build/config.go
index 5d1505a..084d28d 100644
--- a/ui/build/config.go
+++ b/ui/build/config.go
@@ -70,7 +70,6 @@
checkbuild bool
dist bool
jsonModuleGraph bool
- apiBp2build bool // Generate BUILD files for Soong modules that contribute APIs
bp2build bool
queryview bool
reportMkMetrics bool // Collect and report mk2bp migration progress metrics.
@@ -869,8 +868,6 @@
c.jsonModuleGraph = true
} else if arg == "bp2build" {
c.bp2build = true
- } else if arg == "api_bp2build" {
- c.apiBp2build = true
} else if arg == "queryview" {
c.queryview = true
} else if arg == "soong_docs" {
@@ -970,7 +967,7 @@
return true
}
- if !c.JsonModuleGraph() && !c.Bp2Build() && !c.Queryview() && !c.SoongDocs() && !c.ApiBp2build() {
+ if !c.JsonModuleGraph() && !c.Bp2Build() && !c.Queryview() && !c.SoongDocs() {
// Command line was empty, the default Ninja target is built
return true
}
@@ -1068,10 +1065,6 @@
return shared.JoinPath(c.SoongOutDir(), "queryview.marker")
}
-func (c *configImpl) ApiBp2buildMarkerFile() string {
- return shared.JoinPath(c.SoongOutDir(), "api_bp2build.marker")
-}
-
func (c *configImpl) ModuleGraphFile() string {
return shared.JoinPath(c.SoongOutDir(), "module-graph.json")
}
@@ -1113,10 +1106,6 @@
return c.bp2build
}
-func (c *configImpl) ApiBp2build() bool {
- return c.apiBp2build
-}
-
func (c *configImpl) Queryview() bool {
return c.queryview
}
@@ -1308,7 +1297,7 @@
func (c *configImpl) UseRBE() bool {
// These alternate modes of running Soong do not use RBE / reclient.
- if c.Bp2Build() || c.Queryview() || c.ApiBp2build() || c.JsonModuleGraph() {
+ if c.Bp2Build() || c.Queryview() || c.JsonModuleGraph() {
return false
}
diff --git a/ui/build/soong.go b/ui/build/soong.go
index b8543d9..44c20a0 100644
--- a/ui/build/soong.go
+++ b/ui/build/soong.go
@@ -41,7 +41,6 @@
bp2buildWorkspaceTag = "bp2build_workspace"
jsonModuleGraphTag = "modulegraph"
queryviewTag = "queryview"
- apiBp2buildTag = "api_bp2build"
soongDocsTag = "soong_docs"
// bootstrapEpoch is used to determine if an incremental build is incompatible with the current
@@ -264,7 +263,6 @@
config.NamedGlobFile(bp2buildFilesTag),
config.NamedGlobFile(jsonModuleGraphTag),
config.NamedGlobFile(queryviewTag),
- config.NamedGlobFile(apiBp2buildTag),
config.NamedGlobFile(soongDocsTag),
}
}
@@ -305,9 +303,6 @@
}
queryviewDir := filepath.Join(config.SoongOutDir(), "queryview")
- // The BUILD files will be generated in out/soong/.api_bp2build (no symlinks to src files)
- // The final workspace will be generated in out/soong/api_bp2build
- apiBp2buildDir := filepath.Join(config.SoongOutDir(), ".api_bp2build")
pbfs := []PrimaryBuilderFactory{
{
@@ -355,15 +350,6 @@
),
},
{
- name: apiBp2buildTag,
- description: fmt.Sprintf("generating BUILD files for API contributions at %s", apiBp2buildDir),
- config: config,
- output: config.ApiBp2buildMarkerFile(),
- specificArgs: append(baseArgs,
- "--bazel_api_bp2build_dir", apiBp2buildDir,
- ),
- },
- {
name: soongDocsTag,
description: fmt.Sprintf("generating Soong docs at %s", config.SoongDocsHtml()),
config: config,
@@ -533,10 +519,6 @@
checkEnvironmentFile(ctx, soongBuildEnv, config.UsedEnvFile(queryviewTag))
}
- if config.ApiBp2build() {
- checkEnvironmentFile(ctx, soongBuildEnv, config.UsedEnvFile(apiBp2buildTag))
- }
-
if config.SoongDocs() {
checkEnvironmentFile(ctx, soongBuildEnv, config.UsedEnvFile(soongDocsTag))
}
@@ -608,10 +590,6 @@
targets = append(targets, config.QueryviewMarkerFile())
}
- if config.ApiBp2build() {
- targets = append(targets, config.ApiBp2buildMarkerFile())
- }
-
if config.SoongDocs() {
targets = append(targets, config.SoongDocsHtml())
}