aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2019-06-14 11:26:09 -0700
committerdoc HD <doc.divxm@gmail.com>2019-08-02 00:50:26 +0300
commita04f6c1062983bdfda7fb0f1be3d44f91b306621 (patch)
tree14b715e01231d7f8158942ca890635501dec6403
parentd51de3c1dd28c33217a1f77a2752cfdcccddaf86 (diff)
Give Blueprint modules access to all namespacesp9.0
Don't enforce namespaces on Blueprint modules like bootstrap_go_package, their dependencies are handled before namespaces are initialized in namespaceMutator. Fixes: 135246048 Test: TestDependingOnBlueprintModuleInRootNamespace Change-Id: I7cf1c26bb8512eed59d6b4eb42a49f7080ffa281
-rw-r--r--android/namespace.go5
-rw-r--r--android/namespace_test.go43
2 files changed, 48 insertions, 0 deletions
diff --git a/android/namespace.go b/android/namespace.go
index 023052432..952fd9fdb 100644
--- a/android/namespace.go
+++ b/android/namespace.go
@@ -230,6 +230,11 @@ func (r *NameResolver) parseFullyQualifiedName(name string) (namespaceName strin
}
func (r *NameResolver) getNamespacesToSearchForModule(sourceNamespace *Namespace) (searchOrder []*Namespace) {
+ if sourceNamespace.visibleNamespaces == nil {
+ // When handling dependencies before namespaceMutator, assume they are non-Soong Blueprint modules and give
+ // access to all namespaces.
+ return r.sortedNamespaces.sortedItems()
+ }
return sourceNamespace.visibleNamespaces
}
diff --git a/android/namespace_test.go b/android/namespace_test.go
index 9a791a534..ec392dfcf 100644
--- a/android/namespace_test.go
+++ b/android/namespace_test.go
@@ -93,6 +93,28 @@ func TestImplicitlyImportRootNamespace(t *testing.T) {
// setupTest will report any errors
}
+func TestDependingOnBlueprintModuleInRootNamespace(t *testing.T) {
+ _ = setupTest(t,
+ map[string]string{
+ ".": `
+ blueprint_test_module {
+ name: "a",
+ }
+ `,
+ "dir1": `
+ soong_namespace {
+ }
+ blueprint_test_module {
+ name: "b",
+ deps: ["a"],
+ }
+ `,
+ },
+ )
+
+ // setupTest will report any errors
+}
+
func TestDependingOnModuleInImportedNamespace(t *testing.T) {
ctx := setupTest(t,
map[string]string{
@@ -625,6 +647,7 @@ func setupTestFromFiles(bps map[string][]byte) (ctx *TestContext, errs []error)
ctx.MockFileSystem(bps)
ctx.RegisterModuleType("test_module", ModuleFactoryAdaptor(newTestModule))
ctx.RegisterModuleType("soong_namespace", ModuleFactoryAdaptor(NamespaceFactory))
+ ctx.RegisterModuleType("blueprint_test_module", newBlueprintTestModule)
ctx.PreArchMutators(RegisterNamespaceMutator)
ctx.PreDepsMutators(func(ctx RegisterMutatorsContext) {
ctx.BottomUp("rename", renameMutator)
@@ -649,6 +672,7 @@ func setupTestExpectErrs(bps map[string]string) (ctx *TestContext, errs []error)
}
func setupTest(t *testing.T, bps map[string]string) (ctx *TestContext) {
+ t.Helper()
ctx, errs := setupTestExpectErrs(bps)
FailIfErrored(t, errs)
return ctx
@@ -726,3 +750,22 @@ func newTestModule() Module {
InitAndroidModule(m)
return m
}
+
+type blueprintTestModule struct {
+ blueprint.SimpleName
+ properties struct {
+ Deps []string
+ }
+}
+
+func (b *blueprintTestModule) DynamicDependencies(ctx blueprint.DynamicDependerModuleContext) []string {
+ return b.properties.Deps
+}
+
+func (b *blueprintTestModule) GenerateBuildActions(blueprint.ModuleContext) {
+}
+
+func newBlueprintTestModule() (blueprint.Module, []interface{}) {
+ m := &blueprintTestModule{}
+ return m, []interface{}{&m.properties, &m.SimpleName.Properties}
+}