From 1db4348734acfd0b4a38e2ff49dca2df4bac0d84 Mon Sep 17 00:00:00 2001 From: "Usta (Tsering) Shrestha" Date: Wed, 19 Apr 2023 14:02:52 +0000 Subject: [PATCH] Revert "mixed builds correctly reference stubs libs" This reverts commit ca438e6b72aba8306da500b9426acad1aa767b53. Reason for revert: ci post-submit failures in aosp-master-bazel of targets mixed-droid-clean and mixed-droid-incremental: FAILED: ninja: 'out/target/product/generic_arm64/obj/SHARED_LIBRARIES/libc_intermediates/libc.so.toc', needed by 'out/target/product/generic_arm64/obj/EXECUTABLES/updater_intermediates/LINKED/updater', missing and no known rule to make it 12:21:27 ninja failed with: exit status 1 Change-Id: I081b499d23f2568cdf6227c4e3b0278164086b69 --- bazel/cquery/request_type.go | 3 - bp2build/cc_library_shared_conversion_test.go | 37 ----- cc/bp2build.go | 4 +- cc/cc.go | 19 +-- cc/cc_test.go | 127 ------------------ cc/library.go | 24 +--- 6 files changed, 13 insertions(+), 201 deletions(-) diff --git a/bazel/cquery/request_type.go b/bazel/cquery/request_type.go index 6a3b3c82c..bf3a6b5c6 100644 --- a/bazel/cquery/request_type.go +++ b/bazel/cquery/request_type.go @@ -149,7 +149,6 @@ sharedLibraries = [] rootSharedLibraries = [] shared_info_tag = "//build/bazel/rules/cc:cc_library_shared.bzl%CcSharedLibraryOutputInfo" -stubs_tag = "//build/bazel/rules/cc:cc_stub_library.bzl%CcStubInfo" unstripped_tag = "//build/bazel/rules/cc:stripped_cc_common.bzl%CcUnstrippedInfo" unstripped = "" @@ -161,8 +160,6 @@ if shared_info_tag in p: unstripped = path if unstripped_tag in p: unstripped = p[unstripped_tag].unstripped.path -elif stubs_tag in p: - rootSharedLibraries.extend([f.path for f in target.files.to_list()]) else: for linker_input in linker_inputs: for library in linker_input.libraries: diff --git a/bp2build/cc_library_shared_conversion_test.go b/bp2build/cc_library_shared_conversion_test.go index d78c4a4b3..8e0a728ab 100644 --- a/bp2build/cc_library_shared_conversion_test.go +++ b/bp2build/cc_library_shared_conversion_test.go @@ -1249,40 +1249,3 @@ cc_library_shared { }, }) } - -func TestCcLibrarySharedStubsDessertVersionConversion(t *testing.T) { - runCcLibrarySharedTestCase(t, Bp2buildTestCase{ - Description: "cc_library_shared converts dessert codename versions to numerical versions", - Blueprint: ` -cc_library_shared { - name: "a", - include_build_directory: false, - stubs: { - symbol_file: "a.map.txt", - versions: [ - "Q", - "R", - "31", - "current", - ], - }, -} -`, - ExpectedBazelTargets: []string{ - makeCcStubSuiteTargets("a", AttrNameToString{ - "soname": `"a.so"`, - "source_library_label": `"//:a"`, - "stubs_symbol_file": `"a.map.txt"`, - "stubs_versions": `[ - "29", - "30", - "31", - "current", - ]`, - }), - MakeBazelTarget("cc_library_shared", "a", AttrNameToString{ - "stubs_symbol_file": `"a.map.txt"`, - }), - }, - }) -} diff --git a/cc/bp2build.go b/cc/bp2build.go index 4ac1c203f..c8f516cdc 100644 --- a/cc/bp2build.go +++ b/cc/bp2build.go @@ -762,10 +762,8 @@ func bp2BuildParseBaseProps(ctx android.Bp2buildMutatorContext, module *Module) if libraryProps, ok := archVariantLibraryProperties[axis][cfg].(*LibraryProperties); ok { if axis == bazel.NoConfigAxis { - versions := android.CopyOf(libraryProps.Stubs.Versions) - normalizeVersions(ctx, versions) compilerAttrs.stubsSymbolFile = libraryProps.Stubs.Symbol_file - compilerAttrs.stubsVersions.SetSelectValue(axis, cfg, versions) + compilerAttrs.stubsVersions.SetSelectValue(axis, cfg, libraryProps.Stubs.Versions) } if suffix := libraryProps.Suffix; suffix != nil { compilerAttrs.suffix.SetSelectValue(axis, cfg, suffix) diff --git a/cc/cc.go b/cc/cc.go index 631bc7a8c..9c555a11e 100644 --- a/cc/cc.go +++ b/cc/cc.go @@ -1960,17 +1960,6 @@ func (c *Module) ProcessBazelQueryResponse(ctx android.ModuleContext) { c.maybeInstall(mctx, apexInfo) } -func moduleContextFromAndroidModuleContext(actx android.ModuleContext, c *Module) ModuleContext { - ctx := &moduleContext{ - ModuleContext: actx, - moduleContextImpl: moduleContextImpl{ - mod: c, - }, - } - ctx.ctx = ctx - return ctx -} - func (c *Module) GenerateAndroidBuildActions(actx android.ModuleContext) { // Handle the case of a test module split by `test_per_src` mutator. // @@ -1990,7 +1979,13 @@ func (c *Module) GenerateAndroidBuildActions(actx android.ModuleContext) { c.makeLinkType = GetMakeLinkType(actx, c) - ctx := moduleContextFromAndroidModuleContext(actx, c) + ctx := &moduleContext{ + ModuleContext: actx, + moduleContextImpl: moduleContextImpl{ + mod: c, + }, + } + ctx.ctx = ctx deps := c.depsToPaths(ctx) if ctx.Failed() { diff --git a/cc/cc_test.go b/cc/cc_test.go index 3ae4b1561..b986511f0 100644 --- a/cc/cc_test.go +++ b/cc/cc_test.go @@ -3680,133 +3680,6 @@ func TestStubsForLibraryInMultipleApexes(t *testing.T) { } } -func TestMixedBuildUsesStubs(t *testing.T) { - // TODO(b/275313114): Test exposes non-determinism which should be corrected and the test - // reenabled. - t.Skip() - t.Parallel() - bp := ` - cc_library_shared { - name: "libFoo", - bazel_module: { label: "//:libFoo" }, - srcs: ["foo.c"], - stubs: { - symbol_file: "foo.map.txt", - versions: ["current"], - }, - apex_available: ["bar", "a1"], - } - - cc_library_shared { - name: "libBar", - srcs: ["bar.c"], - shared_libs: ["libFoo"], - apex_available: ["a1"], - } - - cc_library_shared { - name: "libA1", - srcs: ["a1.c"], - shared_libs: ["libFoo"], - apex_available: ["a1"], - } - - cc_library_shared { - name: "libBarA1", - srcs: ["bara1.c"], - shared_libs: ["libFoo"], - apex_available: ["bar", "a1"], - } - - cc_library_shared { - name: "libAnyApex", - srcs: ["anyApex.c"], - shared_libs: ["libFoo"], - apex_available: ["//apex_available:anyapex"], - } - - cc_library_shared { - name: "libBaz", - srcs: ["baz.c"], - shared_libs: ["libFoo"], - apex_available: ["baz"], - } - - cc_library_shared { - name: "libQux", - srcs: ["qux.c"], - shared_libs: ["libFoo"], - apex_available: ["qux", "bar"], - }` - - result := android.GroupFixturePreparers( - prepareForCcTest, - android.FixtureModifyConfig(func(config android.Config) { - config.BazelContext = android.MockBazelContext{ - OutputBaseDir: "out/bazel", - LabelToCcInfo: map[string]cquery.CcInfo{ - "//:libFoo": { - RootDynamicLibraries: []string{"libFoo.so"}, - }, - "//:libFoo_stub_libs-current": { - RootDynamicLibraries: []string{"libFoo_stub_libs-current.so"}, - }, - }, - } - }), - ).RunTestWithBp(t, bp) - ctx := result.TestContext - - variants := ctx.ModuleVariantsForTests("libFoo") - expectedVariants := []string{ - "android_arm64_armv8-a_shared", - "android_arm64_armv8-a_shared_current", - "android_arm_armv7-a-neon_shared", - "android_arm_armv7-a-neon_shared_current", - } - variantsMismatch := false - if len(variants) != len(expectedVariants) { - variantsMismatch = true - } else { - for _, v := range expectedVariants { - if !inList(v, variants) { - variantsMismatch = false - } - } - } - if variantsMismatch { - t.Errorf("variants of libFoo expected:\n") - for _, v := range expectedVariants { - t.Errorf("%q\n", v) - } - t.Errorf(", but got:\n") - for _, v := range variants { - t.Errorf("%q\n", v) - } - } - - linkAgainstFoo := []string{"libBarA1"} - linkAgainstFooStubs := []string{"libBar", "libA1", "libBaz", "libQux", "libAnyApex"} - - libFooPath := "out/bazel/execroot/__main__/libFoo.so" - for _, lib := range linkAgainstFoo { - libLinkRule := ctx.ModuleForTests(lib, "android_arm64_armv8-a_shared").Rule("ld") - libFlags := libLinkRule.Args["libFlags"] - if !strings.Contains(libFlags, libFooPath) { - t.Errorf("%q: %q is not found in %q", lib, libFooPath, libFlags) - } - } - - libFooStubPath := "out/bazel/execroot/__main__/libFoo_stub_libs-current.so" - for _, lib := range linkAgainstFooStubs { - libLinkRule := ctx.ModuleForTests(lib, "android_arm64_armv8-a_shared").Rule("ld") - libFlags := libLinkRule.Args["libFlags"] - if !strings.Contains(libFlags, libFooStubPath) { - t.Errorf("%q: %q is not found in %q", lib, libFooStubPath, libFlags) - } - } -} - func TestVersioningMacro(t *testing.T) { t.Parallel() for _, tc := range []struct{ moduleName, expected string }{ diff --git a/cc/library.go b/cc/library.go index a7f3a0575..7504302fd 100644 --- a/cc/library.go +++ b/cc/library.go @@ -931,17 +931,9 @@ func (handler *ccLibraryBazelHandler) generateSharedBazelBuildActions(ctx androi func (handler *ccLibraryBazelHandler) QueueBazelCall(ctx android.BaseModuleContext, label string) { bazelCtx := ctx.Config().BazelContext bazelCtx.QueueBazelRequest(label, cquery.GetCcInfo, android.GetConfigKeyApexVariant(ctx, GetApexConfigKey(ctx))) - if v := handler.module.library.stubsVersion(); v != "" { - stubsLabel := label + "_stub_libs-" + v - bazelCtx.QueueBazelRequest(stubsLabel, cquery.GetCcInfo, android.GetConfigKeyApexVariant(ctx, GetApexConfigKey(ctx))) - } } func (handler *ccLibraryBazelHandler) ProcessBazelQueryResponse(ctx android.ModuleContext, label string) { - if v := handler.module.library.stubsVersion(); v != "" { - // if we are a stubs variant, just use the Bazel stubs target - label = label + "_stub_libs-" + v - } bazelCtx := ctx.Config().BazelContext ccInfo, err := bazelCtx.GetCcInfo(label, android.GetConfigKeyApexVariant(ctx, GetApexConfigKey(ctx))) if err != nil { @@ -970,9 +962,6 @@ func (handler *ccLibraryBazelHandler) ProcessBazelQueryResponse(ctx android.Modu } handler.module.setAndroidMkVariablesFromCquery(ccInfo.CcAndroidMkInfo) - - cctx := moduleContextFromAndroidModuleContext(ctx, handler.module) - addStubDependencyProviders(cctx) } func (library *libraryDecorator) setFlagExporterInfoFromCcInfo(ctx android.ModuleContext, ccInfo cquery.CcInfo) { @@ -1798,12 +1787,6 @@ func (library *libraryDecorator) linkShared(ctx ModuleContext, Target: ctx.Target(), }) - addStubDependencyProviders(ctx) - - return unstrippedOutputFile -} - -func addStubDependencyProviders(ctx ModuleContext) { stubs := ctx.GetDirectDepsWithTag(stubImplDepTag) if len(stubs) > 0 { var stubsInfo []SharedStubLibrary @@ -1818,9 +1801,12 @@ func addStubDependencyProviders(ctx ModuleContext) { } ctx.SetProvider(SharedLibraryStubsProvider, SharedLibraryStubsInfo{ SharedStubLibraries: stubsInfo, - IsLLNDK: ctx.IsLlndk(), + + IsLLNDK: ctx.IsLlndk(), }) } + + return unstrippedOutputFile } func (library *libraryDecorator) unstrippedOutputFilePath() android.Path { @@ -2662,7 +2648,7 @@ func LinkageMutator(mctx android.BottomUpMutatorContext) { // normalizeVersions modifies `versions` in place, so that each raw version // string becomes its normalized canonical form. // Validates that the versions in `versions` are specified in least to greatest order. -func normalizeVersions(ctx android.BazelConversionPathContext, versions []string) { +func normalizeVersions(ctx android.BaseModuleContext, versions []string) { var previous android.ApiLevel for i, v := range versions { ver, err := android.ApiLevelFromUser(ctx, v)