diff --git a/OWNERS b/OWNERS index 58edc8935..01025fb65 100644 --- a/OWNERS +++ b/OWNERS @@ -12,4 +12,6 @@ lamontjones@google.com mrziwang@google.com spandandas@google.com weiwli@google.com -yudiliu@google.com \ No newline at end of file +yudiliu@google.com + +per-file build/soong/ui/build/androidmk_denylist.go = joeo@google.com, weiwli@google.com \ No newline at end of file diff --git a/ui/build/Android.bp b/ui/build/Android.bp index 21453ba95..ee286f68a 100644 --- a/ui/build/Android.bp +++ b/ui/build/Android.bp @@ -35,6 +35,7 @@ bootstrap_go_package { "blueprint", "blueprint-bootstrap", "blueprint-microfactory", + "soong-android", "soong-finder", "soong-remoteexec", "soong-shared", @@ -46,6 +47,7 @@ bootstrap_go_package { "soong-ui-tracer", ], srcs: [ + "androidmk_denylist.go", "build.go", "cleanbuild.go", "config.go", diff --git a/ui/build/androidmk_denylist.go b/ui/build/androidmk_denylist.go new file mode 100644 index 000000000..b2266b2c0 --- /dev/null +++ b/ui/build/androidmk_denylist.go @@ -0,0 +1,44 @@ +// Copyright 2024 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 build + +import ( + "strings" + + "android/soong/android" +) + +var androidmk_denylist []string = []string{ + "chained_build_config/", + "cts/", + "dalvik/", + "developers/", + "kernel/", + "libcore/", + "libnativehelper/", + "pdk/", + "toolchain/", +} + +func blockAndroidMks(androidMks []string) []string { + return android.FilterListPred(androidMks, func(s string) bool { + for _, d := range androidmk_denylist { + if strings.HasPrefix(s, d) { + return false + } + } + return true + }) +} diff --git a/ui/build/finder.go b/ui/build/finder.go index d0bcf4060..a114079ff 100644 --- a/ui/build/finder.go +++ b/ui/build/finder.go @@ -128,6 +128,7 @@ func FindSources(ctx Context, config Config, f *finder.Finder) { // Stop searching a subdirectory recursively after finding an Android.mk. androidMks := f.FindFirstNamedAt(".", "Android.mk") + androidMks = blockAndroidMks(androidMks) err := dumpListToFile(ctx, config, androidMks, filepath.Join(dumpDir, "Android.mk.list")) if err != nil { ctx.Fatalf("Could not export module list: %v", err)