Make bazel build //external/... work by only allowing "approved" existing BUILD files in the Bazel workspace.
Test: bazel build //bionic/... //external/... //frameworks/... //system/... Test: ./build/bazel/scripts/run_presubmits.sh Change-Id: I91865ca87c6535053e7a14d2526ff3ce0991bfea
This commit is contained in:
@@ -126,40 +126,21 @@ const (
|
||||
)
|
||||
|
||||
var (
|
||||
// Do not write BUILD files for these directories
|
||||
// NOTE: this is not recursive
|
||||
bp2buildDoNotWriteBuildFileList = []string{
|
||||
// Don't generate these BUILD files - because external BUILD files already exist
|
||||
"external/boringssl",
|
||||
"external/brotli",
|
||||
"external/dagger2",
|
||||
"external/flatbuffers",
|
||||
"external/gflags",
|
||||
"external/google-fruit",
|
||||
"external/grpc-grpc",
|
||||
"external/grpc-grpc/test/core/util",
|
||||
"external/grpc-grpc/test/cpp/common",
|
||||
"external/grpc-grpc/third_party/address_sorting",
|
||||
"external/nanopb-c",
|
||||
"external/nos/host/generic",
|
||||
"external/nos/host/generic/libnos",
|
||||
"external/nos/host/generic/libnos/generator",
|
||||
"external/nos/host/generic/libnos_datagram",
|
||||
"external/nos/host/generic/libnos_transport",
|
||||
"external/nos/host/generic/nugget/proto",
|
||||
"external/perfetto",
|
||||
"external/protobuf",
|
||||
"external/rust/cxx",
|
||||
"external/rust/cxx/demo",
|
||||
"external/ruy",
|
||||
"external/tensorflow",
|
||||
"external/tensorflow/tensorflow/lite",
|
||||
"external/tensorflow/tensorflow/lite/java",
|
||||
"external/tensorflow/tensorflow/lite/kernels",
|
||||
"external/tflite-support",
|
||||
"external/tinyalsa_new",
|
||||
"external/wycheproof",
|
||||
"external/libyuv",
|
||||
// Keep any existing BUILD files (and do not generate new BUILD files) for these directories
|
||||
bp2buildKeepExistingBuildFile = map[string]bool{
|
||||
// This is actually build/bazel/build.BAZEL symlinked to ./BUILD
|
||||
".":/*recrusive = */ false,
|
||||
|
||||
"build/bazel":/* recursive = */ true,
|
||||
"build/pesto":/* recursive = */ true,
|
||||
|
||||
// external/bazelbuild-rules_android/... is needed by mixed builds, otherwise mixed builds analysis fails
|
||||
// e.g. ERROR: Analysis of target '@soong_injection//mixed_builds:buildroot' failed
|
||||
"external/bazelbuild-rules_android":/* recursive = */ true,
|
||||
|
||||
"prebuilts/clang/host/linux-x86":/* recursive = */ false,
|
||||
"prebuilts/sdk":/* recursive = */ false,
|
||||
"prebuilts/sdk/tools":/* recursive = */ false,
|
||||
}
|
||||
|
||||
// Configure modules in these directories to enable bp2build_available: true or false by default.
|
||||
@@ -218,6 +199,7 @@ var (
|
||||
// libcxx
|
||||
"libBionicBenchmarksUtils", // cc_library_static, fatal error: 'map' file not found, from libcxx
|
||||
"fmtlib", // cc_library_static, fatal error: 'cassert' file not found, from libcxx
|
||||
"fmtlib_ndk", // cc_library_static, fatal error: 'cassert' file not found
|
||||
"libbase", // http://b/186826479, cc_library, fatal error: 'memory' file not found, from libcxx
|
||||
|
||||
// http://b/186024507: Includes errors because of the system_shared_libs default value.
|
||||
@@ -229,6 +211,9 @@ var (
|
||||
"note_memtag_heap_async", // http://b/185127353: cc_library_static, error: feature.h not found
|
||||
"note_memtag_heap_sync", // http://b/185127353: cc_library_static, error: feature.h not found
|
||||
|
||||
"libjemalloc5", // cc_library, ld.lld: error: undefined symbol: memset
|
||||
"gwp_asan_crash_handler", // cc_library, ld.lld: error: undefined symbol: memset
|
||||
|
||||
// Tests. Handle later.
|
||||
"libbionic_tests_headers_posix", // http://b/186024507, cc_library_static, sched.h, time.h not found
|
||||
"libjemalloc5_integrationtest",
|
||||
@@ -254,17 +239,12 @@ var (
|
||||
}
|
||||
|
||||
// Used for quicker lookups
|
||||
bp2buildDoNotWriteBuildFile = map[string]bool{}
|
||||
bp2buildModuleDoNotConvert = map[string]bool{}
|
||||
bp2buildCcLibraryStaticOnly = map[string]bool{}
|
||||
mixedBuildsDisabled = map[string]bool{}
|
||||
)
|
||||
|
||||
func init() {
|
||||
for _, moduleName := range bp2buildDoNotWriteBuildFileList {
|
||||
bp2buildDoNotWriteBuildFile[moduleName] = true
|
||||
}
|
||||
|
||||
for _, moduleName := range bp2buildModuleDoNotConvertList {
|
||||
bp2buildModuleDoNotConvert[moduleName] = true
|
||||
}
|
||||
@@ -282,12 +262,21 @@ func GenerateCcLibraryStaticOnly(ctx BazelConversionPathContext) bool {
|
||||
return bp2buildCcLibraryStaticOnly[ctx.Module().Name()]
|
||||
}
|
||||
|
||||
func ShouldWriteBuildFileForDir(dir string) bool {
|
||||
if _, ok := bp2buildDoNotWriteBuildFile[dir]; ok {
|
||||
return false
|
||||
} else {
|
||||
func ShouldKeepExistingBuildFileForDir(dir string) bool {
|
||||
if _, ok := bp2buildKeepExistingBuildFile[dir]; ok {
|
||||
// Exact dir match
|
||||
return true
|
||||
}
|
||||
// Check if subtree match
|
||||
for prefix, recursive := range bp2buildKeepExistingBuildFile {
|
||||
if recursive {
|
||||
if strings.HasPrefix(dir, prefix+"/") {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
// Default
|
||||
return false
|
||||
}
|
||||
|
||||
// MixedBuildsEnabled checks that a module is ready to be replaced by a
|
||||
|
Reference in New Issue
Block a user