Make sure prebuilt modules are exported before attempting to use them
Fixes an issue where prebuilt module under unexported soong
namespace overrides source modules when flag `prefer` was set.
Test: Create two modules under the same name, use cc_library_shared
for first one and cc_prebuilt_library_shared with `prefer` set
to true.
Then put the prebuilt module under `soong_namespace {}` and
attempt to compile it without appending the namespace path to
product namespaces.
Without this change it should fail to resolve the
cc_library_shared module even if it should be available.
Change-Id: I506641218e6af94a0b5f048e09e06d83602e50f5
diff --git a/android/prebuilt.go b/android/prebuilt.go
index 2fc4782..40bcdfd 100644
--- a/android/prebuilt.go
+++ b/android/prebuilt.go
@@ -339,6 +339,13 @@
return false
}
+ // Skip prebuilt modules under unexported namespaces so that we won't
+ // end up shadowing non-prebuilt module when prebuilt module under same
+ // name happens to have a `Prefer` property set to true.
+ if ctx.Config().KatiEnabled() && !prebuilt.ExportedToMake() {
+ return false
+ }
+
// TODO: use p.Properties.Name and ctx.ModuleDir to override preference
if Bool(p.properties.Prefer) {
return true