diff --git a/android/Android.bp b/android/Android.bp index ad07fdaa0..e73f35574 100644 --- a/android/Android.bp +++ b/android/Android.bp @@ -37,6 +37,7 @@ bootstrap_go_package { "api_levels.go", "arch.go", "arch_list.go", + "arch_module_context.go", "base_module_context.go", "buildinfo_prop.go", "config.go", diff --git a/android/arch_module_context.go b/android/arch_module_context.go new file mode 100644 index 000000000..3cf4b4115 --- /dev/null +++ b/android/arch_module_context.go @@ -0,0 +1,83 @@ +// 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 android + +// ArchModuleContext can be embedded in other contexts to provide information about the module set by +// the archMutator. +type ArchModuleContext interface { + Target() Target + TargetPrimary() bool + + // The additional arch specific targets (e.g. 32/64 bit) that this module variant is + // responsible for creating. + MultiTargets() []Target + Arch() Arch + Os() OsType + Host() bool + Device() bool + Darwin() bool + Windows() bool + PrimaryArch() bool +} + +type archModuleContext struct { + // TODO: these should eventually go through a (possibly cached) provider like any other configuration instead + // of being special cased. + os OsType + target Target + targetPrimary bool + multiTargets []Target + primaryArch bool +} + +func (a *archModuleContext) Target() Target { + return a.target +} + +func (a *archModuleContext) TargetPrimary() bool { + return a.targetPrimary +} + +func (a *archModuleContext) MultiTargets() []Target { + return a.multiTargets +} + +func (a *archModuleContext) Arch() Arch { + return a.target.Arch +} + +func (a *archModuleContext) Os() OsType { + return a.os +} + +func (a *archModuleContext) Host() bool { + return a.os.Class == Host +} + +func (a *archModuleContext) Device() bool { + return a.os.Class == Device +} + +func (a *archModuleContext) Darwin() bool { + return a.os == Darwin +} + +func (a *archModuleContext) Windows() bool { + return a.os == Windows +} + +func (b *archModuleContext) PrimaryArch() bool { + return b.primaryArch +} diff --git a/android/base_module_context.go b/android/base_module_context.go index 0cf5d7779..b9c115349 100644 --- a/android/base_module_context.go +++ b/android/base_module_context.go @@ -26,6 +26,7 @@ import ( // instead of a blueprint.Module, plus some extra methods that return Android-specific information // about the current module. type BaseModuleContext interface { + ArchModuleContext EarlyModuleContext blueprintBaseModuleContext() blueprint.BaseModuleContext @@ -213,29 +214,12 @@ type BaseModuleContext interface { // getMissingDependencies returns the list of missing dependencies. // Calling this function prevents adding new dependencies. getMissingDependencies() []string - - Target() Target - TargetPrimary() bool - - // The additional arch specific targets (e.g. 32/64 bit) that this module variant is - // responsible for creating. - MultiTargets() []Target - Arch() Arch - Os() OsType - Host() bool - Device() bool - Darwin() bool - Windows() bool - PrimaryArch() bool } type baseModuleContext struct { bp blueprint.BaseModuleContext earlyModuleContext - os OsType - target Target - multiTargets []Target - targetPrimary bool + archModuleContext walkPath []Module tagPath []blueprint.DependencyTag @@ -580,46 +564,3 @@ func (b *baseModuleContext) GetPathString(skipFirst bool) string { } return sb.String() } - -func (b *baseModuleContext) Target() Target { - return b.target -} - -func (b *baseModuleContext) TargetPrimary() bool { - return b.targetPrimary -} - -func (b *baseModuleContext) MultiTargets() []Target { - return b.multiTargets -} - -func (b *baseModuleContext) Arch() Arch { - return b.target.Arch -} - -func (b *baseModuleContext) Os() OsType { - return b.os -} - -func (b *baseModuleContext) Host() bool { - return b.os.Class == Host -} - -func (b *baseModuleContext) Device() bool { - return b.os.Class == Device -} - -func (b *baseModuleContext) Darwin() bool { - return b.os == Darwin -} - -func (b *baseModuleContext) Windows() bool { - return b.os == Windows -} - -func (b *baseModuleContext) PrimaryArch() bool { - if len(b.config.Targets[b.target.Os]) <= 1 { - return true - } - return b.target.Arch.ArchType == b.config.Targets[b.target.Os][0].Arch.ArchType -} diff --git a/android/module.go b/android/module.go index 1abc6aa53..6fd8657ff 100644 --- a/android/module.go +++ b/android/module.go @@ -1641,14 +1641,31 @@ func (m *ModuleBase) earlyModuleContextFactory(ctx blueprint.EarlyModuleContext) func (m *ModuleBase) baseModuleContextFactory(ctx blueprint.BaseModuleContext) baseModuleContext { return baseModuleContext{ bp: ctx, + archModuleContext: m.archModuleContextFactory(ctx), earlyModuleContext: m.earlyModuleContextFactory(ctx), - os: m.commonProperties.CompileOS, - target: m.commonProperties.CompileTarget, - targetPrimary: m.commonProperties.CompilePrimary, - multiTargets: m.commonProperties.CompileMultiTargets, } } +func (m *ModuleBase) archModuleContextFactory(ctx blueprint.IncomingTransitionContext) archModuleContext { + config := ctx.Config().(Config) + target := m.Target() + primaryArch := false + if len(config.Targets[target.Os]) <= 1 { + primaryArch = true + } else { + primaryArch = target.Arch.ArchType == config.Targets[target.Os][0].Arch.ArchType + } + + return archModuleContext{ + os: m.commonProperties.CompileOS, + target: m.commonProperties.CompileTarget, + targetPrimary: m.commonProperties.CompilePrimary, + multiTargets: m.commonProperties.CompileMultiTargets, + primaryArch: primaryArch, + } + +} + func (m *ModuleBase) GenerateBuildActions(blueprintCtx blueprint.ModuleContext) { ctx := &moduleContext{ module: m.module, diff --git a/android/mutator.go b/android/mutator.go index 5b76d209c..22e91603c 100644 --- a/android/mutator.go +++ b/android/mutator.go @@ -365,15 +365,21 @@ func (x *registerMutatorsContext) BottomUpBlueprint(name string, m blueprint.Bot } type IncomingTransitionContext interface { + ArchModuleContext + // Module returns the target of the dependency edge for which the transition // is being computed Module() Module // Config returns the configuration for the build. Config() Config + + DeviceConfig() DeviceConfig } type OutgoingTransitionContext interface { + ArchModuleContext + // Module returns the target of the dependency edge for which the transition // is being computed Module() Module @@ -381,9 +387,14 @@ type OutgoingTransitionContext interface { // DepTag() Returns the dependency tag through which this dependency is // reached DepTag() blueprint.DependencyTag + + // Config returns the configuration for the build. + Config() Config + + DeviceConfig() DeviceConfig } -// Transition mutators implement a top-down mechanism where a module tells its +// TransitionMutator implements a top-down mechanism where a module tells its // direct dependencies what variation they should be built in but the dependency // has the final say. // @@ -448,18 +459,18 @@ type TransitionMutator interface { // called on. Split(ctx BaseModuleContext) []string - // Called on a module to determine which variation it wants from its direct - // dependencies. The dependency itself can override this decision. This method - // should not mutate the module itself. + // OutgoingTransition is called on a module to determine which variation it wants + // from its direct dependencies. The dependency itself can override this decision. + // This method should not mutate the module itself. OutgoingTransition(ctx OutgoingTransitionContext, sourceVariation string) string - // Called on a module to determine which variation it should be in based on - // the variation modules that depend on it want. This gives the module a final - // say about its own variations. This method should not mutate the module + // IncomingTransition is called on a module to determine which variation it should + // be in based on the variation modules that depend on it want. This gives the module + // a final say about its own variations. This method should not mutate the module // itself. IncomingTransition(ctx IncomingTransitionContext, incomingVariation string) string - // Called after a module was split into multiple variations on each variation. + // Mutate is called after a module was split into multiple variations on each variation. // It should not split the module any further but adding new dependencies is // fine. Unlike all the other methods on TransitionMutator, this method is // allowed to mutate the module. @@ -481,6 +492,7 @@ func (a *androidTransitionMutator) Split(ctx blueprint.BaseModuleContext) []stri } type outgoingTransitionContextImpl struct { + archModuleContext bp blueprint.OutgoingTransitionContext } @@ -492,15 +504,28 @@ func (c *outgoingTransitionContextImpl) DepTag() blueprint.DependencyTag { return c.bp.DepTag() } -func (a *androidTransitionMutator) OutgoingTransition(ctx blueprint.OutgoingTransitionContext, sourceVariation string) string { - if _, ok := ctx.Module().(Module); ok { - return a.mutator.OutgoingTransition(&outgoingTransitionContextImpl{bp: ctx}, sourceVariation) +func (c *outgoingTransitionContextImpl) Config() Config { + return c.bp.Config().(Config) +} + +func (c *outgoingTransitionContextImpl) DeviceConfig() DeviceConfig { + return DeviceConfig{c.bp.Config().(Config).deviceConfig} +} + +func (a *androidTransitionMutator) OutgoingTransition(bpctx blueprint.OutgoingTransitionContext, sourceVariation string) string { + if m, ok := bpctx.Module().(Module); ok { + ctx := &outgoingTransitionContextImpl{ + archModuleContext: m.base().archModuleContextFactory(bpctx), + bp: bpctx, + } + return a.mutator.OutgoingTransition(ctx, sourceVariation) } else { return "" } } type incomingTransitionContextImpl struct { + archModuleContext bp blueprint.IncomingTransitionContext } @@ -512,9 +537,17 @@ func (c *incomingTransitionContextImpl) Config() Config { return c.bp.Config().(Config) } -func (a *androidTransitionMutator) IncomingTransition(ctx blueprint.IncomingTransitionContext, incomingVariation string) string { - if _, ok := ctx.Module().(Module); ok { - return a.mutator.IncomingTransition(&incomingTransitionContextImpl{bp: ctx}, incomingVariation) +func (c *incomingTransitionContextImpl) DeviceConfig() DeviceConfig { + return DeviceConfig{c.bp.Config().(Config).deviceConfig} +} + +func (a *androidTransitionMutator) IncomingTransition(bpctx blueprint.IncomingTransitionContext, incomingVariation string) string { + if m, ok := bpctx.Module().(Module); ok { + ctx := &incomingTransitionContextImpl{ + archModuleContext: m.base().archModuleContextFactory(bpctx), + bp: bpctx, + } + return a.mutator.IncomingTransition(ctx, incomingVariation) } else { return "" } diff --git a/android/paths_test.go b/android/paths_test.go index bf46c34f3..93b9b9a16 100644 --- a/android/paths_test.go +++ b/android/paths_test.go @@ -268,8 +268,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "host binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: hostTarget.Os, - target: hostTarget, + archModuleContext: archModuleContext{ + os: hostTarget.Os, + target: hostTarget, + }, }, }, in: []string{"bin", "my_test"}, @@ -281,8 +283,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "system binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, }, }, in: []string{"bin", "my_test"}, @@ -293,8 +297,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "vendor binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, earlyModuleContext: earlyModuleContext{ kind: socSpecificModule, }, @@ -308,8 +314,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "odm binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, earlyModuleContext: earlyModuleContext{ kind: deviceSpecificModule, }, @@ -323,8 +331,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "product binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, earlyModuleContext: earlyModuleContext{ kind: productSpecificModule, }, @@ -338,8 +348,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "system_ext binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, earlyModuleContext: earlyModuleContext{ kind: systemExtSpecificModule, }, @@ -353,8 +365,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "root binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, }, inRoot: true, }, @@ -366,8 +380,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "recovery binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, }, inRecovery: true, }, @@ -379,8 +395,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "recovery root binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, }, inRecovery: true, inRoot: true, @@ -394,8 +412,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "ramdisk binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, }, inRamdisk: true, }, @@ -407,8 +427,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "ramdisk root binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, }, inRamdisk: true, inRoot: true, @@ -421,8 +443,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "vendor_ramdisk binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, }, inVendorRamdisk: true, }, @@ -434,8 +458,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "vendor_ramdisk root binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, }, inVendorRamdisk: true, inRoot: true, @@ -448,8 +474,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "debug_ramdisk binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, }, inDebugRamdisk: true, }, @@ -461,8 +489,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "system native test binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, }, inData: true, }, @@ -474,8 +504,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "vendor native test binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, earlyModuleContext: earlyModuleContext{ kind: socSpecificModule, }, @@ -490,8 +522,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "odm native test binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, earlyModuleContext: earlyModuleContext{ kind: deviceSpecificModule, }, @@ -506,8 +540,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "product native test binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, earlyModuleContext: earlyModuleContext{ kind: productSpecificModule, }, @@ -523,8 +559,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "system_ext native test binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, earlyModuleContext: earlyModuleContext{ kind: systemExtSpecificModule, }, @@ -540,8 +578,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "sanitized system binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, }, inSanitizerDir: true, }, @@ -553,8 +593,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "sanitized vendor binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, earlyModuleContext: earlyModuleContext{ kind: socSpecificModule, }, @@ -569,8 +611,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "sanitized odm binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, earlyModuleContext: earlyModuleContext{ kind: deviceSpecificModule, }, @@ -585,8 +629,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "sanitized product binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, earlyModuleContext: earlyModuleContext{ kind: productSpecificModule, }, @@ -602,8 +648,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "sanitized system_ext binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, earlyModuleContext: earlyModuleContext{ kind: systemExtSpecificModule, }, @@ -619,8 +667,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "sanitized system native test binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, }, inData: true, inSanitizerDir: true, @@ -633,8 +683,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "sanitized vendor native test binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, earlyModuleContext: earlyModuleContext{ kind: socSpecificModule, }, @@ -650,8 +702,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "sanitized odm native test binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, earlyModuleContext: earlyModuleContext{ kind: deviceSpecificModule, }, @@ -667,8 +721,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "sanitized product native test binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, earlyModuleContext: earlyModuleContext{ kind: productSpecificModule, }, @@ -684,8 +740,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "sanitized system_ext native test binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, earlyModuleContext: earlyModuleContext{ kind: systemExtSpecificModule, }, @@ -700,8 +758,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "device testcases", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, }, inTestcases: true, }, @@ -712,8 +772,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "host testcases", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: hostTarget.Os, - target: hostTarget, + archModuleContext: archModuleContext{ + os: hostTarget.Os, + target: hostTarget, + }, }, inTestcases: true, }, @@ -724,8 +786,10 @@ func TestPathForModuleInstall(t *testing.T) { name: "forced host testcases", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, }, inTestcases: true, forceOS: &Linux, @@ -771,8 +835,10 @@ func TestPathForModuleInstallRecoveryAsBoot(t *testing.T) { name: "ramdisk binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, }, inRamdisk: true, inRoot: true, @@ -786,8 +852,10 @@ func TestPathForModuleInstallRecoveryAsBoot(t *testing.T) { name: "vendor_ramdisk binary", ctx: &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, }, inVendorRamdisk: true, inRoot: true, @@ -821,8 +889,10 @@ func TestBaseDirForInstallPath(t *testing.T) { ctx := &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, }, } ctx.baseModuleContext.config = testConfig @@ -1491,8 +1561,10 @@ func TestPathRelativeToTop(t *testing.T) { ctx := &testModuleInstallPathContext{ baseModuleContext: baseModuleContext{ - os: deviceTarget.Os, - target: deviceTarget, + archModuleContext: archModuleContext{ + os: deviceTarget.Os, + target: deviceTarget, + }, }, } ctx.baseModuleContext.config = testConfig