Merge "Convert cc_test targets with bp2build."

This commit is contained in:
Treehugger Robot
2022-09-01 17:00:45 +00:00
committed by Gerrit Code Review
6 changed files with 731 additions and 35 deletions

View File

@@ -139,6 +139,7 @@ var (
"external/lzma/C": Bp2BuildDefaultTrueRecursively, "external/lzma/C": Bp2BuildDefaultTrueRecursively,
"external/mdnsresponder": Bp2BuildDefaultTrueRecursively, "external/mdnsresponder": Bp2BuildDefaultTrueRecursively,
"external/minijail": Bp2BuildDefaultTrueRecursively, "external/minijail": Bp2BuildDefaultTrueRecursively,
"external/openscreen": Bp2BuildDefaultTrueRecursively,
"external/pcre": Bp2BuildDefaultTrueRecursively, "external/pcre": Bp2BuildDefaultTrueRecursively,
"external/protobuf": Bp2BuildDefaultTrueRecursively, "external/protobuf": Bp2BuildDefaultTrueRecursively,
"external/python/six": Bp2BuildDefaultTrueRecursively, "external/python/six": Bp2BuildDefaultTrueRecursively,
@@ -225,6 +226,8 @@ var (
"prebuilts/sdk/current/support": Bp2BuildDefaultTrue, "prebuilts/sdk/current/support": Bp2BuildDefaultTrue,
"prebuilts/tools/common/m2": Bp2BuildDefaultTrue, "prebuilts/tools/common/m2": Bp2BuildDefaultTrue,
"platform_testing/tests/example": Bp2BuildDefaultTrueRecursively,
"system/apex": Bp2BuildDefaultFalse, // TODO(b/207466993): flaky failures "system/apex": Bp2BuildDefaultFalse, // TODO(b/207466993): flaky failures
"system/apex/apexer": Bp2BuildDefaultTrue, "system/apex/apexer": Bp2BuildDefaultTrue,
"system/apex/libs": Bp2BuildDefaultTrueRecursively, "system/apex/libs": Bp2BuildDefaultTrueRecursively,
@@ -268,6 +271,7 @@ var (
"system/memory/libion": Bp2BuildDefaultTrueRecursively, "system/memory/libion": Bp2BuildDefaultTrueRecursively,
"system/memory/libmemunreachable": Bp2BuildDefaultTrueRecursively, "system/memory/libmemunreachable": Bp2BuildDefaultTrueRecursively,
"system/sepolicy/apex": Bp2BuildDefaultTrueRecursively, "system/sepolicy/apex": Bp2BuildDefaultTrueRecursively,
"system/testing/gtest_extras": Bp2BuildDefaultTrueRecursively,
"system/timezone/apex": Bp2BuildDefaultTrueRecursively, "system/timezone/apex": Bp2BuildDefaultTrueRecursively,
"system/timezone/output_data": Bp2BuildDefaultTrueRecursively, "system/timezone/output_data": Bp2BuildDefaultTrueRecursively,
"system/tools/sysprop": Bp2BuildDefaultTrue, "system/tools/sysprop": Bp2BuildDefaultTrue,
@@ -432,6 +436,8 @@ var (
// needed for aidl_interface's ndk backend // needed for aidl_interface's ndk backend
"libbinder_ndk", "libbinder_ndk",
"libusb",
} }
Bp2buildModuleTypeAlwaysConvertList = []string{ Bp2buildModuleTypeAlwaysConvertList = []string{
@@ -446,7 +452,13 @@ var (
"libactivitymanager_aidl", // TODO(b/207426160): Unsupported use of aidl sources (via Dactivity_manager_procstate_aidl) in a cc_library "libactivitymanager_aidl", // TODO(b/207426160): Unsupported use of aidl sources (via Dactivity_manager_procstate_aidl) in a cc_library
"gen-kotlin-build-file.py", // TODO(b/198619163) module has same name as source "gen-kotlin-build-file.py", // TODO(b/198619163) module has same name as source
"libgtest_ndk_c++", "libgtest_main_ndk_c++", // TODO(b/201816222): Requires sdk_version support. "libgtest_ndk_c++", "libgtest_main_ndk_c++", // TODO(b/201816222): Requires sdk_version support.
"linkerconfig", "mdnsd", // TODO(b/202876379): has arch-variant static_executable
// TODO(b/202876379): has arch-variant static_executable
"linkerconfig",
"mdnsd",
"libcutils_test_static",
"KernelLibcutilsTest",
"linker", // TODO(b/228316882): cc_binary uses link_crt "linker", // TODO(b/228316882): cc_binary uses link_crt
"libdebuggerd", // TODO(b/228314770): support product variable-specific header_libs "libdebuggerd", // TODO(b/228314770): support product variable-specific header_libs
"versioner", // TODO(b/228313961): depends on prebuilt shared library libclang-cpp_host as a shared library, which does not supply expected providers for a shared library "versioner", // TODO(b/228313961): depends on prebuilt shared library libclang-cpp_host as a shared library, which does not supply expected providers for a shared library
@@ -516,7 +528,6 @@ var (
"generated_android_icu4j_resources", // depends on unconverted modules: android_icu4j_srcgen_binary, soong_zip "generated_android_icu4j_resources", // depends on unconverted modules: android_icu4j_srcgen_binary, soong_zip
"generated_android_icu4j_test_resources", // depends on unconverted modules: android_icu4j_srcgen_binary, soong_zip "generated_android_icu4j_test_resources", // depends on unconverted modules: android_icu4j_srcgen_binary, soong_zip
"host-libprotobuf-java-nano", // b/220869005, depends on libprotobuf-java-nano "host-libprotobuf-java-nano", // b/220869005, depends on libprotobuf-java-nano
"libadb_host", // depends on unconverted modules: AdbWinApi, libopenscreen-discovery, libopenscreen-platform-impl, libusb
"libapexutil", // depends on unconverted modules: apex-info-list-tinyxml "libapexutil", // depends on unconverted modules: apex-info-list-tinyxml
"libart", // depends on unconverted modules: apex-info-list-tinyxml, libtinyxml2, libnativeloader-headers, heapprofd_client_api, art_operator_srcs, libcpu_features, libodrstatslog, libelffile, art_cmdlineparser_headers, cpp-define-generator-definitions, libdexfile, libnativebridge, libnativeloader, libsigchain, libartbase, libprofile, cpp-define-generator-asm-support "libart", // depends on unconverted modules: apex-info-list-tinyxml, libtinyxml2, libnativeloader-headers, heapprofd_client_api, art_operator_srcs, libcpu_features, libodrstatslog, libelffile, art_cmdlineparser_headers, cpp-define-generator-definitions, libdexfile, libnativebridge, libnativeloader, libsigchain, libartbase, libprofile, cpp-define-generator-asm-support
"libart-runtime-gtest", // depends on unconverted modules: libgtest_isolated, libart-compiler, libdexfile, libprofile, libartbase, libartbase-art-gtest "libart-runtime-gtest", // depends on unconverted modules: libgtest_isolated, libart-compiler, libdexfile, libprofile, libartbase, libartbase-art-gtest
@@ -551,23 +562,467 @@ var (
// '//bionic/libc:libc_bp2build_cc_library_static' is duplicated in the 'deps' attribute of rule // '//bionic/libc:libc_bp2build_cc_library_static' is duplicated in the 'deps' attribute of rule
"toybox-static", "toybox-static",
// Do not convert the following modules because of duplicate labels checking in Bazel. // cc_test related.
// See b/241283350. They should be removed from this list once the bug is fixed. // Failing host cc_tests
"libartpalette", "memunreachable_unit_test",
"libartbase", "libprocinfo_test",
"libdexfile", "ziparchive-tests",
"libartbased", "gtest_isolated_tests",
"libdexfile_static", "libunwindstack_unit_test",
"libartbase-testing", "task_profiles_test",
"libartbased-testing", "power_tests", // failing test on server, but not on host
"libdexfile_support",
"libunwindstack", // reflect: call of reflect.Value.NumField on interface Value
"libunwindstack_local", // affects all cc_tests that depend on art_defaults
"libfdtrack", "libnativebridge-tests",
"libc_malloc_debug", "libnativeloader_test",
"libutilscallstack", "art_libnativebridge_cts_tests",
"libunwindstack_utils", "art_standalone_libdexfile_external_tests",
"unwind_for_offline", "art_standalone_libdexfile_support_tests",
"libnativebridge-lazy-tests",
"libnativebridge-test-case",
"libnativebridge2-test-case",
"libnativebridge3-test-case",
"libnativebridge6-test-case",
"libnativebridge6prezygotefork",
// cc_test with unconverted deps, or are device-only (and not verified to pass yet)
"AMRWBEncTest",
"AmrnbDecoderTest", // depends on unconverted modules: libaudioutils, libsndfile
"AmrnbEncoderTest", // depends on unconverted modules: libaudioutils, libsndfile
"AmrwbDecoderTest", // depends on unconverted modules: libsndfile, libaudioutils
"AmrwbEncoderTest", // depends on unconverted modules: libaudioutils, libsndfile
"CtsLiblogTestCases",
"Mp3DecoderTest", // depends on unconverted modules: libsndfile, libaudioutils
"Mpeg4H263DecoderTest", // depends on unconverted modules: libstagefright_foundation
"Mpeg4H263EncoderTest",
"adb_crypto_test",
"adb_pairing_auth_test",
"adb_pairing_connection_test",
"adb_tls_connection_test",
"adbd_test", // depends on unconverted modules: libusb
"avcdec",
"avcenc",
"bionic-benchmarks-tests",
"bionic-fortify-runtime-asan-test",
"bionic-stress-tests",
"bionic-unit-tests",
"bionic-unit-tests-glibc",
"bionic-unit-tests-static",
"boringssl_crypto_test",
"boringssl_ssl_test",
"cfi_test_helper",
"cfi_test_helper2",
"cintltst32",
"cintltst64",
"compare",
"cpuid",
"debuggerd_test", // depends on unconverted modules: libdebuggerd
"elftls_dlopen_ie_error_helper",
"exec_linker_helper",
"fastdeploy_test", // depends on unconverted modules: AdbWinApi, libadb_host, libandroidfw, libfastdeploy_host, libopenscreen-discovery, libopenscreen-platform-impl, libusb
"fdtrack_test",
"google-benchmark-test",
"googletest-param-test-test_ndk", // depends on unconverted modules: libgtest_ndk_c++
"gtest-typed-test_test",
"gtest-typed-test_test_ndk", // depends on unconverted modules: libgtest_ndk_c++, libgtest_main_ndk_c++
"gtest_ndk_tests", // depends on unconverted modules: libgtest_ndk_c++, libgtest_main_ndk_c++
"gtest_ndk_tests_no_main", // depends on unconverted modules: libgtest_ndk_c++
"gtest_prod_test_ndk", // depends on unconverted modules: libgtest_ndk_c++, libgtest_main_ndk_c++
"gtest_tests",
"gtest_tests_no_main",
"gwp_asan_unittest",
"half_test",
"hashcombine_test",
"hevcdec",
"hevcenc",
"hwbinderThroughputTest", // depends on unconverted modules: android.hardware.tests.libhwbinder@1.0-impl.test, android.hardware.tests.libhwbinder@1.0
"i444tonv12_eg",
"icu4c_sample_break",
"intltest32",
"intltest64",
"ion-unit-tests",
"jemalloc5_integrationtests",
"jemalloc5_unittests",
"ld_config_test_helper",
"ld_preload_test_helper",
"libBionicCtsGtestMain", // depends on unconverted modules: libgtest_isolated
"libBionicLoaderTests", // depends on unconverted modules: libmeminfo
"libapexutil_tests", // depends on unconverted modules: apex-info-list-tinyxml, libapexutil
"libavservices_minijail_unittest",
"libcutils_sockets_test",
"libexpectedutils_test",
"libhwbinder_latency",
"liblog-host-test",
"liblog-unit-tests",
"libminijail_test",
"libminijail_unittest_gtest",
"libpackagelistparser_test",
"libprotobuf_vendor_suffix_test",
"libstagefright_amrnbdec_test", // depends on unconverted modules: libsndfile, libaudioutils
"libstagefright_amrnbenc_test",
"libstagefright_amrwbdec_test", // depends on unconverted modules: libsndfile, libaudioutils
"libstagefright_m4vh263enc_test",
"libstagefright_mp3dec_test", // depends on unconverted modules: libsndfile, libaudioutils
"libstatssocket_test",
"libvndksupport-tests",
"libyuv_unittest",
"linker-unit-tests",
"malloc_debug_system_tests",
"malloc_debug_unit_tests",
"malloc_hooks_system_tests",
"mat_test",
"mathtest",
"memunreachable_binder_test", // depends on unconverted modules: libbinder
"memunreachable_test",
"metadata_tests",
"minijail0_cli_unittest_gtest",
"mpeg2dec",
"mvcdec",
"ns_hidden_child_helper",
"pngtest",
"preinit_getauxval_test_helper",
"preinit_syscall_test_helper",
"psnr",
"quat_test",
"rappor-tests", // depends on unconverted modules: jsr305, guava
"scudo_unit_tests",
"stats-log-api-gen-test", // depends on unconverted modules: libstats_proto_host
"syscall_filter_unittest_gtest",
"sysprop_test", // depends on unconverted modules: libcom.android.sysprop.tests
"thread_exit_cb_helper",
"tls_properties_helper",
"ulp",
"vec_test",
"yuvconstants",
"yuvconvert",
"zipalign_tests",
// "zlib_tests",
// cc_test_library
"clang_diagnostic_tests",
"exec_linker_helper_lib",
"fortify_disabled_for_tidy",
"ld_config_test_helper_lib1",
"ld_config_test_helper_lib2",
"ld_config_test_helper_lib3",
"ld_preload_test_helper_lib1",
"ld_preload_test_helper_lib2",
"libBionicElfTlsLoaderTests",
"libBionicElfTlsTests",
"libBionicElfTlsTests",
"libBionicFramePointerTests",
"libBionicFramePointerTests",
"libBionicStandardTests",
"libBionicStandardTests",
"libBionicTests",
"libart-broken",
"libatest_simple_zip",
"libcfi-test",
"libcfi-test-bad",
"libcrash_test",
// "libcrypto_fuzz_unsafe",
"libdl_preempt_test_1",
"libdl_preempt_test_2",
"libdl_test_df_1_global",
"libdlext_test",
"libdlext_test_different_soname",
"libdlext_test_fd",
"libdlext_test_norelro",
"libdlext_test_recursive",
"libdlext_test_zip",
"libfortify1-new-tests-clang",
"libfortify1-new-tests-clang",
"libfortify1-tests-clang",
"libfortify1-tests-clang",
"libfortify2-new-tests-clang",
"libfortify2-new-tests-clang",
"libfortify2-tests-clang",
"libfortify2-tests-clang",
"libgnu-hash-table-library",
"libicutest_static",
"liblinker_reloc_bench_000",
"liblinker_reloc_bench_001",
"liblinker_reloc_bench_002",
"liblinker_reloc_bench_003",
"liblinker_reloc_bench_004",
"liblinker_reloc_bench_005",
"liblinker_reloc_bench_006",
"liblinker_reloc_bench_007",
"liblinker_reloc_bench_008",
"liblinker_reloc_bench_009",
"liblinker_reloc_bench_010",
"liblinker_reloc_bench_011",
"liblinker_reloc_bench_012",
"liblinker_reloc_bench_013",
"liblinker_reloc_bench_014",
"liblinker_reloc_bench_015",
"liblinker_reloc_bench_016",
"liblinker_reloc_bench_017",
"liblinker_reloc_bench_018",
"liblinker_reloc_bench_019",
"liblinker_reloc_bench_020",
"liblinker_reloc_bench_021",
"liblinker_reloc_bench_022",
"liblinker_reloc_bench_023",
"liblinker_reloc_bench_024",
"liblinker_reloc_bench_025",
"liblinker_reloc_bench_026",
"liblinker_reloc_bench_027",
"liblinker_reloc_bench_028",
"liblinker_reloc_bench_029",
"liblinker_reloc_bench_030",
"liblinker_reloc_bench_031",
"liblinker_reloc_bench_032",
"liblinker_reloc_bench_033",
"liblinker_reloc_bench_034",
"liblinker_reloc_bench_035",
"liblinker_reloc_bench_036",
"liblinker_reloc_bench_037",
"liblinker_reloc_bench_038",
"liblinker_reloc_bench_039",
"liblinker_reloc_bench_040",
"liblinker_reloc_bench_041",
"liblinker_reloc_bench_042",
"liblinker_reloc_bench_043",
"liblinker_reloc_bench_044",
"liblinker_reloc_bench_045",
"liblinker_reloc_bench_046",
"liblinker_reloc_bench_047",
"liblinker_reloc_bench_048",
"liblinker_reloc_bench_049",
"liblinker_reloc_bench_050",
"liblinker_reloc_bench_051",
"liblinker_reloc_bench_052",
"liblinker_reloc_bench_053",
"liblinker_reloc_bench_054",
"liblinker_reloc_bench_055",
"liblinker_reloc_bench_056",
"liblinker_reloc_bench_057",
"liblinker_reloc_bench_058",
"liblinker_reloc_bench_059",
"liblinker_reloc_bench_060",
"liblinker_reloc_bench_061",
"liblinker_reloc_bench_062",
"liblinker_reloc_bench_063",
"liblinker_reloc_bench_064",
"liblinker_reloc_bench_065",
"liblinker_reloc_bench_066",
"liblinker_reloc_bench_067",
"liblinker_reloc_bench_068",
"liblinker_reloc_bench_069",
"liblinker_reloc_bench_070",
"liblinker_reloc_bench_071",
"liblinker_reloc_bench_072",
"liblinker_reloc_bench_073",
"liblinker_reloc_bench_074",
"liblinker_reloc_bench_075",
"liblinker_reloc_bench_076",
"liblinker_reloc_bench_077",
"liblinker_reloc_bench_078",
"liblinker_reloc_bench_079",
"liblinker_reloc_bench_080",
"liblinker_reloc_bench_081",
"liblinker_reloc_bench_082",
"liblinker_reloc_bench_083",
"liblinker_reloc_bench_084",
"liblinker_reloc_bench_085",
"liblinker_reloc_bench_086",
"liblinker_reloc_bench_087",
"liblinker_reloc_bench_088",
"liblinker_reloc_bench_089",
"liblinker_reloc_bench_090",
"liblinker_reloc_bench_091",
"liblinker_reloc_bench_092",
"liblinker_reloc_bench_093",
"liblinker_reloc_bench_094",
"liblinker_reloc_bench_095",
"liblinker_reloc_bench_096",
"liblinker_reloc_bench_097",
"liblinker_reloc_bench_098",
"liblinker_reloc_bench_099",
"liblinker_reloc_bench_100",
"liblinker_reloc_bench_101",
"liblinker_reloc_bench_102",
"liblinker_reloc_bench_103",
"liblinker_reloc_bench_104",
"liblinker_reloc_bench_105",
"liblinker_reloc_bench_106",
"liblinker_reloc_bench_107",
"liblinker_reloc_bench_108",
"liblinker_reloc_bench_109",
"liblinker_reloc_bench_110",
"liblinker_reloc_bench_111",
"liblinker_reloc_bench_112",
"liblinker_reloc_bench_113",
"liblinker_reloc_bench_114",
"liblinker_reloc_bench_115",
"liblinker_reloc_bench_116",
"liblinker_reloc_bench_117",
"liblinker_reloc_bench_118",
"liblinker_reloc_bench_119",
"liblinker_reloc_bench_120",
"liblinker_reloc_bench_121",
"liblinker_reloc_bench_122",
"liblinker_reloc_bench_123",
"liblinker_reloc_bench_124",
"liblinker_reloc_bench_125",
"liblinker_reloc_bench_126",
"liblinker_reloc_bench_127",
"liblinker_reloc_bench_128",
"liblinker_reloc_bench_129",
"liblinker_reloc_bench_130",
"liblinker_reloc_bench_131",
"liblinker_reloc_bench_132",
"liblinker_reloc_bench_133",
"liblinker_reloc_bench_134",
"liblinker_reloc_bench_135",
"liblinker_reloc_bench_136",
"liblinker_reloc_bench_137",
"liblinker_reloc_bench_138",
"liblinker_reloc_bench_139",
"liblinker_reloc_bench_140",
"liblinker_reloc_bench_141",
"liblinker_reloc_bench_142",
"liblinker_reloc_bench_143",
"liblinker_reloc_bench_144",
"liblinker_reloc_bench_145",
"liblinker_reloc_bench_146",
"liblinker_reloc_bench_147",
"liblinker_reloc_bench_148",
"liblinker_reloc_bench_149",
"liblinker_reloc_bench_150",
"liblinker_reloc_bench_151",
"liblinker_reloc_bench_152",
"liblinker_reloc_bench_153",
"liblinker_reloc_bench_154",
"liblinker_reloc_bench_155",
"liblinker_reloc_bench_156",
"liblinker_reloc_bench_157",
"liblinker_reloc_bench_158",
"liblinker_reloc_bench_159",
"liblinker_reloc_bench_160",
"liblinker_reloc_bench_161",
"liblinker_reloc_bench_162",
"liblinker_reloc_bench_163",
"liblinker_reloc_bench_164",
"liblinker_reloc_bench_165",
"liblinker_reloc_bench_166",
"liblinker_reloc_bench_167",
"liblinker_reloc_bench_168",
"libns_hidden_child_app",
"libns_hidden_child_global",
"libns_hidden_child_internal",
"libns_hidden_child_public",
"libnstest_dlopened",
"libnstest_ns_a_public1",
"libnstest_ns_a_public1_internal",
"libnstest_ns_b_public2",
"libnstest_ns_b_public3",
"libnstest_private",
"libnstest_private_external",
"libnstest_public",
"libnstest_public_internal",
"libnstest_root",
"libnstest_root_not_isolated",
"librelocations-ANDROID_REL",
"librelocations-ANDROID_RELR",
"librelocations-RELR",
"librelocations-fat",
"libsegment_gap_inner",
"libsegment_gap_outer",
// "libssl_fuzz_unsafe",
"libstatssocket_private",
"libsysv-hash-table-library",
"libtest_atexit",
"libtest_check_order_dlsym",
"libtest_check_order_dlsym_1_left",
"libtest_check_order_dlsym_2_right",
"libtest_check_order_dlsym_3_c",
"libtest_check_order_dlsym_a",
"libtest_check_order_dlsym_b",
"libtest_check_order_dlsym_d",
"libtest_check_order_reloc_root",
"libtest_check_order_reloc_root_1",
"libtest_check_order_reloc_root_2",
"libtest_check_order_reloc_siblings",
"libtest_check_order_reloc_siblings_1",
"libtest_check_order_reloc_siblings_2",
"libtest_check_order_reloc_siblings_3",
"libtest_check_order_reloc_siblings_a",
"libtest_check_order_reloc_siblings_b",
"libtest_check_order_reloc_siblings_c",
"libtest_check_order_reloc_siblings_c_1",
"libtest_check_order_reloc_siblings_c_2",
"libtest_check_order_reloc_siblings_d",
"libtest_check_order_reloc_siblings_e",
"libtest_check_order_reloc_siblings_f",
"libtest_check_rtld_next_from_library",
"libtest_dlopen_df_1_global",
"libtest_dlopen_from_ctor",
"libtest_dlopen_from_ctor_main",
"libtest_dlopen_weak_undefined_func",
"libtest_dlsym_df_1_global",
"libtest_dlsym_from_this",
"libtest_dlsym_from_this_child",
"libtest_dlsym_from_this_grandchild",
"libtest_dlsym_weak_func",
"libtest_dt_runpath_a",
"libtest_dt_runpath_b",
"libtest_dt_runpath_c",
"libtest_dt_runpath_d",
"libtest_dt_runpath_d_zip",
"libtest_dt_runpath_x",
"libtest_dt_runpath_y",
"libtest_elftls_dynamic",
"libtest_elftls_dynamic_filler_1",
"libtest_elftls_dynamic_filler_2",
"libtest_elftls_dynamic_filler_3",
"libtest_elftls_shared_var",
"libtest_elftls_shared_var_ie",
"libtest_elftls_tprel",
"libtest_empty",
"libtest_ifunc",
"libtest_ifunc_variable",
"libtest_ifunc_variable_impl",
"libtest_indirect_thread_local_dtor",
"libtest_init_fini_order_child",
"libtest_init_fini_order_grand_child",
"libtest_init_fini_order_root",
"libtest_init_fini_order_root2",
"libtest_missing_symbol",
"libtest_missing_symbol_child_private",
"libtest_missing_symbol_child_public",
"libtest_missing_symbol_root",
"libtest_nodelete_1",
"libtest_nodelete_2",
"libtest_nodelete_dt_flags_1",
"libtest_pthread_atfork",
"libtest_relo_check_dt_needed_order",
"libtest_relo_check_dt_needed_order_1",
"libtest_relo_check_dt_needed_order_2",
"libtest_simple",
"libtest_thread_local_dtor",
"libtest_thread_local_dtor2",
"libtest_two_parents_child",
"libtest_two_parents_parent1",
"libtest_two_parents_parent2",
"libtest_versioned_lib",
"libtest_versioned_libv1",
"libtest_versioned_libv2",
"libtest_versioned_otherlib",
"libtest_versioned_otherlib_empty",
"libtest_versioned_uselibv1",
"libtest_versioned_uselibv2",
"libtest_versioned_uselibv2_other",
"libtest_versioned_uselibv3_other",
"libtest_with_dependency",
"libtest_with_dependency_loop",
"libtest_with_dependency_loop_a",
"libtest_with_dependency_loop_b",
"libtest_with_dependency_loop_b_tmp",
"libtest_with_dependency_loop_c",
"libtestshared",
} }
Bp2buildCcLibraryStaticOnlyList = []string{} Bp2buildCcLibraryStaticOnlyList = []string{}

View File

@@ -51,6 +51,7 @@ bootstrap_go_package {
"cc_prebuilt_library_conversion_test.go", "cc_prebuilt_library_conversion_test.go",
"cc_prebuilt_library_shared_test.go", "cc_prebuilt_library_shared_test.go",
"cc_prebuilt_library_static_test.go", "cc_prebuilt_library_static_test.go",
"cc_test_conversion_test.go",
"cc_yasm_conversion_test.go", "cc_yasm_conversion_test.go",
"conversion_test.go", "conversion_test.go",
"filegroup_conversion_test.go", "filegroup_conversion_test.go",

View File

@@ -0,0 +1,150 @@
// 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 (
"fmt"
"testing"
"android/soong/android"
"android/soong/cc"
"android/soong/genrule"
)
type ccTestBp2buildTestCase struct {
description string
blueprint string
targets []testBazelTarget
}
func registerCcTestModuleTypes(ctx android.RegistrationContext) {
cc.RegisterCCBuildComponents(ctx)
ctx.RegisterModuleType("cc_binary", cc.BinaryFactory)
ctx.RegisterModuleType("cc_library_static", cc.LibraryStaticFactory)
ctx.RegisterModuleType("cc_library", cc.LibraryFactory)
ctx.RegisterModuleType("cc_test_library", cc.TestLibraryFactory)
ctx.RegisterModuleType("genrule", genrule.GenRuleFactory)
}
func runCcTestTestCase(t *testing.T, testCase ccTestBp2buildTestCase) {
t.Helper()
moduleTypeUnderTest := "cc_test"
description := fmt.Sprintf("%s %s", moduleTypeUnderTest, testCase.description)
t.Run(description, func(t *testing.T) {
t.Helper()
RunBp2BuildTestCase(t, registerCcTestModuleTypes, Bp2buildTestCase{
ExpectedBazelTargets: generateBazelTargetsForTest(testCase.targets, android.HostAndDeviceSupported),
ModuleTypeUnderTest: moduleTypeUnderTest,
ModuleTypeUnderTestFactory: cc.TestFactory,
Description: description,
Blueprint: testCase.blueprint,
})
})
}
func TestBasicCcTest(t *testing.T) {
runCcTestTestCase(t, ccTestBp2buildTestCase{
description: "basic cc_test with commonly used attributes",
blueprint: `
cc_test {
name: "mytest",
host_supported: true,
srcs: ["test.cpp"],
target: {
android: {
srcs: ["android.cpp"],
shared_libs: ["foolib"],
},
linux: {
srcs: ["linux.cpp"],
},
host: {
static_libs: ["hostlib"],
},
},
data: [":data_mod", "file.txt"],
data_bins: [":cc_bin"],
data_libs: [":cc_lib"],
cflags: ["-Wall"],
}
` + simpleModuleDoNotConvertBp2build("cc_library", "foolib") +
simpleModuleDoNotConvertBp2build("cc_library_static", "hostlib") +
simpleModuleDoNotConvertBp2build("genrule", "data_mod") +
simpleModuleDoNotConvertBp2build("cc_binary", "cc_bin") +
simpleModuleDoNotConvertBp2build("cc_test_library", "cc_lib"),
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"copts": `["-Wall"]`,
"data": `[
":data_mod",
"file.txt",
":cc_bin",
":cc_lib",
]`,
"deps": `select({
"//build/bazel/platforms/os:darwin": [":hostlib"],
"//build/bazel/platforms/os:linux": [":hostlib"],
"//build/bazel/platforms/os:linux_bionic": [":hostlib"],
"//build/bazel/platforms/os:linux_musl": [":hostlib"],
"//build/bazel/platforms/os:windows": [":hostlib"],
"//conditions:default": [],
})`,
"gtest": "True",
"isolated": "True",
"local_includes": `["."]`,
"dynamic_deps": `select({
"//build/bazel/platforms/os:android": [":foolib"],
"//conditions:default": [],
})`,
"srcs": `["test.cpp"] + select({
"//build/bazel/platforms/os:android": [
"linux.cpp",
"android.cpp",
],
"//build/bazel/platforms/os:linux": ["linux.cpp"],
"//build/bazel/platforms/os:linux_bionic": ["linux.cpp"],
"//build/bazel/platforms/os:linux_musl": ["linux.cpp"],
"//conditions:default": [],
})`,
},
},
},
})
}
func TestBasicCcTestGtestIsolatedDisabled(t *testing.T) {
runCcTestTestCase(t, ccTestBp2buildTestCase{
description: "cc test with disabled gtest and isolated props",
blueprint: `
cc_test {
name: "mytest",
host_supported: true,
srcs: ["test.cpp"],
gtest: false,
isolated: false,
}
`,
targets: []testBazelTarget{
{"cc_test", "mytest", AttrNameToString{
"gtest": "False",
"isolated": "False",
"local_includes": `["."]`,
"srcs": `["test.cpp"]`,
},
},
},
})
}

View File

@@ -18,6 +18,7 @@ import (
"path/filepath" "path/filepath"
"android/soong/bazel/cquery" "android/soong/bazel/cquery"
"github.com/google/blueprint" "github.com/google/blueprint"
"github.com/google/blueprint/proptools" "github.com/google/blueprint/proptools"
@@ -591,7 +592,7 @@ func (handler *ccBinaryBazelHandler) ProcessBazelQueryResponse(ctx android.Modul
handler.module.linker.(*binaryDecorator).unstrippedOutputFile = outputFilePath handler.module.linker.(*binaryDecorator).unstrippedOutputFile = outputFilePath
} }
func binaryBp2build(ctx android.TopDownMutatorContext, m *Module, typ string) { func binaryBp2buildAttrs(ctx android.TopDownMutatorContext, m *Module) binaryAttributes {
baseAttrs := bp2BuildParseBaseProps(ctx, m) baseAttrs := bp2BuildParseBaseProps(ctx, m)
binaryLinkerAttrs := bp2buildBinaryLinkerProps(ctx, m) binaryLinkerAttrs := bp2buildBinaryLinkerProps(ctx, m)
@@ -601,7 +602,7 @@ func binaryBp2build(ctx android.TopDownMutatorContext, m *Module, typ string) {
baseAttrs.implementationDeps.Add(baseAttrs.protoDependency) baseAttrs.implementationDeps.Add(baseAttrs.protoDependency)
} }
attrs := &binaryAttributes{ attrs := binaryAttributes{
binaryLinkerAttrs: binaryLinkerAttrs, binaryLinkerAttrs: binaryLinkerAttrs,
Srcs: baseAttrs.srcs, Srcs: baseAttrs.srcs,
@@ -644,12 +645,19 @@ func binaryBp2build(ctx android.TopDownMutatorContext, m *Module, typ string) {
sdkAttributes: bp2BuildParseSdkAttributes(m), sdkAttributes: bp2BuildParseSdkAttributes(m),
} }
return attrs
}
func binaryBp2build(ctx android.TopDownMutatorContext, m *Module) {
// shared with cc_test
binaryAttrs := binaryBp2buildAttrs(ctx, m)
ctx.CreateBazelTargetModule(bazel.BazelTargetModuleProperties{ ctx.CreateBazelTargetModule(bazel.BazelTargetModuleProperties{
Rule_class: "cc_binary", Rule_class: "cc_binary",
Bzl_load_location: "//build/bazel/rules/cc:cc_binary.bzl", Bzl_load_location: "//build/bazel/rules/cc:cc_binary.bzl",
}, },
android.CommonAttributes{Name: m.Name()}, android.CommonAttributes{Name: m.Name()},
attrs) &binaryAttrs)
} }
// binaryAttributes contains Bazel attributes corresponding to a cc binary // binaryAttributes contains Bazel attributes corresponding to a cc binary

View File

@@ -3376,6 +3376,15 @@ func (c *Module) testBinary() bool {
return false return false
} }
func (c *Module) testLibrary() bool {
if test, ok := c.linker.(interface {
testLibrary() bool
}); ok {
return test.testLibrary()
}
return false
}
func (c *Module) benchmarkBinary() bool { func (c *Module) benchmarkBinary() bool {
if b, ok := c.linker.(interface { if b, ok := c.linker.(interface {
benchmarkBinary() bool benchmarkBinary() bool
@@ -3654,13 +3663,25 @@ const (
staticLibrary staticLibrary
sharedLibrary sharedLibrary
headerLibrary headerLibrary
testBin // testBinary already declared
) )
func (c *Module) typ() moduleType { func (c *Module) typ() moduleType {
if c.Binary() { if c.testBinary() {
// testBinary is also a binary, so this comes before the c.Binary()
// conditional. A testBinary has additional implicit dependencies and
// other test-only semantics.
return testBin
} else if c.Binary() {
return binary return binary
} else if c.Object() { } else if c.Object() {
return object return object
} else if c.testLibrary() {
// TODO(b/244431896) properly convert cc_test_library to its own macro. This
// will let them add implicit compile deps on gtest, for example.
//
// For now, treat them as regular shared libraries.
return sharedLibrary
} else if c.CcLibrary() { } else if c.CcLibrary() {
static := false static := false
shared := false shared := false
@@ -3689,7 +3710,11 @@ func (c *Module) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
switch c.typ() { switch c.typ() {
case binary: case binary:
if !prebuilt { if !prebuilt {
binaryBp2build(ctx, c, ctx.ModuleType()) binaryBp2build(ctx, c)
}
case testBin:
if !prebuilt {
testBinaryBp2build(ctx, c)
} }
case object: case object:
if !prebuilt { if !prebuilt {

View File

@@ -22,6 +22,7 @@ import (
"github.com/google/blueprint/proptools" "github.com/google/blueprint/proptools"
"android/soong/android" "android/soong/android"
"android/soong/bazel"
"android/soong/tradefed" "android/soong/tradefed"
) )
@@ -133,7 +134,7 @@ func init() {
// specific functionality on a device. The executable binary gets an implicit // specific functionality on a device. The executable binary gets an implicit
// static_libs dependency on libgtests unless the gtest flag is set to false. // static_libs dependency on libgtests unless the gtest flag is set to false.
func TestFactory() android.Module { func TestFactory() android.Module {
module := NewTest(android.HostAndDeviceSupported) module := NewTest(android.HostAndDeviceSupported, true)
return module.Init() return module.Init()
} }
@@ -156,7 +157,7 @@ func BenchmarkFactory() android.Module {
// cc_test_host compiles a test host binary. // cc_test_host compiles a test host binary.
func TestHostFactory() android.Module { func TestHostFactory() android.Module {
module := NewTest(android.HostSupported) module := NewTest(android.HostSupported, true)
return module.Init() return module.Init()
} }
@@ -204,6 +205,10 @@ func (test *testBinary) unsetSrc() {
test.binaryDecorator.Properties.Stem = StringPtr("") test.binaryDecorator.Properties.Stem = StringPtr("")
} }
func (test *testBinary) testBinary() bool {
return true
}
var _ testPerSrc = (*testBinary)(nil) var _ testPerSrc = (*testBinary)(nil)
func TestPerSrcMutator(mctx android.BottomUpMutatorContext) { func TestPerSrcMutator(mctx android.BottomUpMutatorContext) {
@@ -257,16 +262,10 @@ func (test *testDecorator) gtest() bool {
} }
func (test *testDecorator) isolated(ctx BaseModuleContext) bool { func (test *testDecorator) isolated(ctx BaseModuleContext) bool {
if !ctx.Windows() {
return BoolDefault(test.LinkerProperties.Isolated, false)
}
return BoolDefault(test.LinkerProperties.Isolated, false) return BoolDefault(test.LinkerProperties.Isolated, false)
} }
func (test *testDecorator) testBinary() bool { // NOTE: Keep this in sync with cc/cc_test.bzl#gtest_copts
return true
}
func (test *testDecorator) linkerFlags(ctx ModuleContext, flags Flags) Flags { func (test *testDecorator) linkerFlags(ctx ModuleContext, flags Flags) Flags {
if !test.gtest() { if !test.gtest() {
return flags return flags
@@ -480,8 +479,8 @@ func (test *testBinary) install(ctx ModuleContext, file android.Path) {
test.binaryDecorator.baseInstaller.install(ctx, file) test.binaryDecorator.baseInstaller.install(ctx, file)
} }
func NewTest(hod android.HostOrDeviceSupported) *Module { func NewTest(hod android.HostOrDeviceSupported, bazelable bool) *Module {
module, binary := newBinary(hod, false) module, binary := newBinary(hod, bazelable)
module.multilib = android.MultilibBoth module.multilib = android.MultilibBoth
binary.baseInstaller = NewTestInstaller() binary.baseInstaller = NewTestInstaller()
@@ -504,6 +503,10 @@ type testLibrary struct {
*libraryDecorator *libraryDecorator
} }
func (test *testLibrary) testLibrary() bool {
return true
}
func (test *testLibrary) linkerProps() []interface{} { func (test *testLibrary) linkerProps() []interface{} {
var props []interface{} var props []interface{}
props = append(props, test.testDecorator.linkerProps()...) props = append(props, test.testDecorator.linkerProps()...)
@@ -543,6 +546,7 @@ func NewTestLibrary(hod android.HostOrDeviceSupported) *Module {
} }
module.linker = test module.linker = test
module.installer = test module.installer = test
module.bazelable = true
return module return module
} }
@@ -632,3 +636,56 @@ func NewBenchmark(hod android.HostOrDeviceSupported) *Module {
module.installer = benchmark module.installer = benchmark
return module return module
} }
// binaryAttributes contains Bazel attributes corresponding to a cc test
type testBinaryAttributes struct {
binaryAttributes
Gtest bool
Isolated bool
Data bazel.LabelListAttribute
}
// testBinaryBp2build is the bp2build converter for cc_test modules. A cc_test's
// dependency graph and compilation/linking steps are functionally similar to a
// cc_binary, but has additional dependencies on test deps like gtest, and
// produces additional runfiles like XML plans for Tradefed orchestration
//
// TODO(b/244432609): handle `isolated` property.
// TODO(b/244432134): handle custom runpaths for tests that assume runfile layouts not
// default to bazel. (see linkerInit function)
// TODO(b/244432500): handle test.testConfig generation (see install function)
func testBinaryBp2build(ctx android.TopDownMutatorContext, m *Module) {
var testBinaryAttrs testBinaryAttributes
testBinaryAttrs.binaryAttributes = binaryBp2buildAttrs(ctx, m)
testBinaryProps := m.GetArchVariantProperties(ctx, &TestBinaryProperties{})
for axis, configToProps := range testBinaryProps {
for config, props := range configToProps {
if p, ok := props.(*TestBinaryProperties); ok {
// Combine data, data_bins and data_libs into a single 'data' attribute.
var combinedData bazel.LabelList
combinedData.Append(android.BazelLabelForModuleSrc(ctx, p.Data))
combinedData.Append(android.BazelLabelForModuleDeps(ctx, p.Data_bins))
combinedData.Append(android.BazelLabelForModuleDeps(ctx, p.Data_libs))
testBinaryAttrs.Data.SetSelectValue(axis, config, combinedData)
}
}
}
for _, propIntf := range m.GetProperties() {
if testLinkerProps, ok := propIntf.(*TestLinkerProperties); ok {
testBinaryAttrs.Gtest = proptools.BoolDefault(testLinkerProps.Gtest, true)
testBinaryAttrs.Isolated = proptools.BoolDefault(testLinkerProps.Isolated, true)
break
}
}
ctx.CreateBazelTargetModule(
bazel.BazelTargetModuleProperties{
Rule_class: "cc_test",
Bzl_load_location: "//build/bazel/rules/cc:cc_test.bzl",
},
android.CommonAttributes{Name: m.Name()},
&testBinaryAttrs)
}