From 6b29f593eaa4f4fdffa23def8b255e38177dd4df Mon Sep 17 00:00:00 2001 From: Cole Faust Date: Tue, 9 Aug 2022 09:50:56 -0700 Subject: [PATCH] Bp2build support for runtime_libs Bug: 213201180 Test: Updated the minimal apex in the build/bazel cl to include runtime_libs so the apex diff test will test it Change-Id: I10add1895cfa122a370d24196a33ec2dcfafccfc --- android/allowlists/allowlists.go | 4 +- bp2build/cc_binary_conversion_test.go | 38 +++++++++++++++++++ bp2build/cc_library_conversion_test.go | 26 +++++++++++++ bp2build/cc_library_shared_conversion_test.go | 22 +++++++++++ bp2build/cc_library_static_conversion_test.go | 28 ++++++++++++-- cc/binary.go | 2 + cc/bp2build.go | 7 ++++ cc/library.go | 3 ++ 8 files changed, 125 insertions(+), 5 deletions(-) diff --git a/android/allowlists/allowlists.go b/android/allowlists/allowlists.go index 9bd0693af..9c6ee34fc 100644 --- a/android/allowlists/allowlists.go +++ b/android/allowlists/allowlists.go @@ -328,6 +328,8 @@ var ( "libpdx_headers", "libprocpartition", "libruy_static", + "libandroidio", + "libandroidio_srcs", "libserviceutils", "libstagefright_enc_common", "libstagefright_foundation_headers", @@ -487,8 +489,6 @@ var ( "libartd-runtime-gtest", // depends on unconverted modules: libgtest_isolated, libartd-compiler, libdexfiled, libprofiled, libartbased, libartbased-art-gtest "libdebuggerd_handler", // depends on unconverted module libdebuggerd_handler_core "libdebuggerd_handler_core", "libdebuggerd_handler_fallback", // depends on unconverted module libdebuggerd - "libdexfile", // depends on unconverted modules: dexfile_operator_srcs, libartbase, libartpalette, - "libdexfile_static", // depends on unconverted modules: libartbase, libdexfile "libdexfiled", // depends on unconverted modules: dexfile_operator_srcs, libartbased, libartpalette "libfastdeploy_host", // depends on unconverted modules: libandroidfw, libusb, AdbWinApi "libgmock_main_ndk", // depends on unconverted modules: libgtest_ndk_c++ diff --git a/bp2build/cc_binary_conversion_test.go b/bp2build/cc_binary_conversion_test.go index 95869dd87..1f69b5add 100644 --- a/bp2build/cc_binary_conversion_test.go +++ b/bp2build/cc_binary_conversion_test.go @@ -543,3 +543,41 @@ func TestCcBinaryConvertLex(t *testing.T) { }, }) } + +func TestCcBinaryRuntimeLibs(t *testing.T) { + runCcBinaryTests(t, ccBinaryBp2buildTestCase{ + description: "cc_binary with runtime libs", + blueprint: ` +cc_library { + name: "bar", + srcs: ["b.cc"], +} + +{rule_name} { + name: "foo", + srcs: ["a.cc"], + runtime_libs: ["bar"], +} +`, + targets: []testBazelTarget{ + {"cc_library_static", "bar_bp2build_cc_library_static", AttrNameToString{ + "local_includes": `["."]`, + "srcs": `["b.cc"]`, + "target_compatible_with": `["//build/bazel/platforms/os:android"]`, + }, + }, + {"cc_library_shared", "bar", AttrNameToString{ + "local_includes": `["."]`, + "srcs": `["b.cc"]`, + "target_compatible_with": `["//build/bazel/platforms/os:android"]`, + }, + }, + {"cc_binary", "foo", AttrNameToString{ + "local_includes": `["."]`, + "srcs": `["a.cc"]`, + "runtime_deps": `[":bar"]`, + }, + }, + }, + }) +} diff --git a/bp2build/cc_library_conversion_test.go b/bp2build/cc_library_conversion_test.go index 6c56d4188..f6d50679d 100644 --- a/bp2build/cc_library_conversion_test.go +++ b/bp2build/cc_library_conversion_test.go @@ -2514,3 +2514,29 @@ func TestCcLibraryConvertLex(t *testing.T) { })...), }) } + +func TestCCLibraryRuntimeDeps(t *testing.T) { + runCcLibrarySharedTestCase(t, Bp2buildTestCase{ + Blueprint: `cc_library_shared { + name: "bar", +} + +cc_library { + name: "foo", + runtime_libs: ["foo"], +}`, + ExpectedBazelTargets: []string{ + makeBazelTarget("cc_library_shared", "bar", AttrNameToString{ + "local_includes": `["."]`, + }), + makeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{ + "runtime_deps": `[":foo"]`, + "local_includes": `["."]`, + }), + makeBazelTarget("cc_library_shared", "foo", AttrNameToString{ + "runtime_deps": `[":foo"]`, + "local_includes": `["."]`, + }), + }, + }) +} diff --git a/bp2build/cc_library_shared_conversion_test.go b/bp2build/cc_library_shared_conversion_test.go index 6a4786254..de57e5adc 100644 --- a/bp2build/cc_library_shared_conversion_test.go +++ b/bp2build/cc_library_shared_conversion_test.go @@ -624,3 +624,25 @@ func TestCCLibraryFlagSpaceSplitting(t *testing.T) { }, }) } + +func TestCCLibrarySharedRuntimeDeps(t *testing.T) { + runCcLibrarySharedTestCase(t, Bp2buildTestCase{ + Blueprint: `cc_library_shared { + name: "bar", +} + +cc_library_shared { + name: "foo", + runtime_libs: ["foo"], +}`, + ExpectedBazelTargets: []string{ + makeBazelTarget("cc_library_shared", "bar", AttrNameToString{ + "local_includes": `["."]`, + }), + makeBazelTarget("cc_library_shared", "foo", AttrNameToString{ + "runtime_deps": `[":foo"]`, + "local_includes": `["."]`, + }), + }, + }) +} diff --git a/bp2build/cc_library_static_conversion_test.go b/bp2build/cc_library_static_conversion_test.go index ddb7bf94b..1c160ec6a 100644 --- a/bp2build/cc_library_static_conversion_test.go +++ b/bp2build/cc_library_static_conversion_test.go @@ -15,12 +15,12 @@ package bp2build import ( + "fmt" + "testing" + "android/soong/android" "android/soong/cc" "android/soong/genrule" - "fmt" - - "testing" ) const ( @@ -1559,3 +1559,25 @@ func TestCcLibraryStaticStl(t *testing.T) { }) } } + +func TestCCLibraryStaticRuntimeDeps(t *testing.T) { + runCcLibrarySharedTestCase(t, Bp2buildTestCase{ + Blueprint: `cc_library_shared { + name: "bar", +} + +cc_library_static { + name: "foo", + runtime_libs: ["foo"], +}`, + ExpectedBazelTargets: []string{ + makeBazelTarget("cc_library_shared", "bar", AttrNameToString{ + "local_includes": `["."]`, + }), + makeBazelTarget("cc_library_static", "foo", AttrNameToString{ + "runtime_deps": `[":foo"]`, + "local_includes": `["."]`, + }), + }, + }) +} diff --git a/cc/binary.go b/cc/binary.go index b2f248282..849aafaaa 100644 --- a/cc/binary.go +++ b/cc/binary.go @@ -617,6 +617,7 @@ func binaryBp2build(ctx android.TopDownMutatorContext, m *Module, typ string) { Dynamic_deps: baseAttrs.implementationDynamicDeps, Whole_archive_deps: baseAttrs.wholeArchiveDeps, System_deps: baseAttrs.systemDynamicDeps, + Runtime_deps: baseAttrs.runtimeDeps, Local_includes: baseAttrs.localIncludes, Absolute_includes: baseAttrs.absoluteIncludes, @@ -667,6 +668,7 @@ type binaryAttributes struct { Dynamic_deps bazel.LabelListAttribute Whole_archive_deps bazel.LabelListAttribute System_deps bazel.LabelListAttribute + Runtime_deps bazel.LabelListAttribute Local_includes bazel.StringListAttribute Absolute_includes bazel.StringListAttribute diff --git a/cc/bp2build.go b/cc/bp2build.go index 61a55ee69..ba9343995 100644 --- a/cc/bp2build.go +++ b/cc/bp2build.go @@ -52,6 +52,7 @@ type staticOrSharedAttributes struct { Implementation_dynamic_deps bazel.LabelListAttribute Whole_archive_deps bazel.LabelListAttribute Implementation_whole_archive_deps bazel.LabelListAttribute + Runtime_deps bazel.LabelListAttribute System_dynamic_deps bazel.LabelListAttribute @@ -710,6 +711,7 @@ type linkerAttributes struct { implementationDeps bazel.LabelListAttribute dynamicDeps bazel.LabelListAttribute implementationDynamicDeps bazel.LabelListAttribute + runtimeDeps bazel.LabelListAttribute wholeArchiveDeps bazel.LabelListAttribute implementationWholeArchiveDeps bazel.LabelListAttribute systemDynamicDeps bazel.LabelListAttribute @@ -825,6 +827,11 @@ func (la *linkerAttributes) bp2buildForAxisAndConfig(ctx android.BazelConversion if axisFeatures != nil { la.features.SetSelectValue(axis, config, axisFeatures) } + + runtimeDeps := android.BazelLabelForModuleDepsExcludes(ctx, props.Runtime_libs, props.Exclude_runtime_libs) + if !runtimeDeps.IsEmpty() { + la.runtimeDeps.SetSelectValue(axis, config, runtimeDeps) + } } func (la *linkerAttributes) convertStripProps(ctx android.BazelConversionPathContext, module *Module) { diff --git a/cc/library.go b/cc/library.go index 897b57261..c3c587d89 100644 --- a/cc/library.go +++ b/cc/library.go @@ -319,6 +319,7 @@ func libraryBp2Build(ctx android.TopDownMutatorContext, m *Module) { Implementation_whole_archive_deps: linkerAttrs.implementationWholeArchiveDeps, Whole_archive_deps: *linkerAttrs.wholeArchiveDeps.Clone().Append(staticAttrs.Whole_archive_deps), System_dynamic_deps: *linkerAttrs.systemDynamicDeps.Clone().Append(staticAttrs.System_dynamic_deps), + Runtime_deps: linkerAttrs.runtimeDeps, sdkAttributes: bp2BuildParseSdkAttributes(m), } @@ -335,6 +336,7 @@ func libraryBp2Build(ctx android.TopDownMutatorContext, m *Module) { Implementation_dynamic_deps: *linkerAttrs.implementationDynamicDeps.Clone().Append(sharedAttrs.Implementation_dynamic_deps), Whole_archive_deps: *linkerAttrs.wholeArchiveDeps.Clone().Append(sharedAttrs.Whole_archive_deps), System_dynamic_deps: *linkerAttrs.systemDynamicDeps.Clone().Append(sharedAttrs.System_dynamic_deps), + Runtime_deps: linkerAttrs.runtimeDeps, sdkAttributes: bp2BuildParseSdkAttributes(m), } @@ -2552,6 +2554,7 @@ func sharedOrStaticLibraryBp2Build(ctx android.TopDownMutatorContext, module *Mo Implementation_whole_archive_deps: linkerAttrs.implementationWholeArchiveDeps, System_dynamic_deps: linkerAttrs.systemDynamicDeps, sdkAttributes: bp2BuildParseSdkAttributes(module), + Runtime_deps: linkerAttrs.runtimeDeps, } var attrs interface{}