Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cd84b4e3 authored by Colin Cross's avatar Colin Cross
Browse files

Give Blueprint modules access to all namespaces

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
parent e77a5733
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -222,6 +222,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
}

+43 −0
Original line number Diff line number Diff line
@@ -91,6 +91,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{
@@ -617,6 +639,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)
@@ -641,6 +664,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
@@ -718,3 +742,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}
}