diff --git a/java/system_modules.go b/java/system_modules.go index 95f71b80f..8c69051ae 100644 --- a/java/system_modules.go +++ b/java/system_modules.go @@ -169,7 +169,13 @@ func (system *SystemModules) GenerateAndroidBuildActions(ctx android.ModuleConte system.outputDir, system.outputDeps = TransformJarsToSystemModules(ctx, jars) } -func (system *SystemModules) DepsMutator(ctx android.BottomUpMutatorContext) { +// ComponentDepsMutator is called before prebuilt modules without a corresponding source module are +// renamed so unless the supplied libs specifically includes the prebuilt_ prefix this is guaranteed +// to only add dependencies on source modules. +// +// The systemModuleLibsTag will prevent the prebuilt mutators from replacing this dependency so it +// will never be changed to depend on a prebuilt either. +func (system *SystemModules) ComponentDepsMutator(ctx android.BottomUpMutatorContext) { ctx.AddVariationDependencies(nil, systemModulesLibsTag, system.properties.Libs...) } @@ -225,6 +231,15 @@ func (system *systemModulesImport) Prebuilt() *android.Prebuilt { return &system.prebuilt } +// ComponentDepsMutator is called before prebuilt modules without a corresponding source module are +// renamed so as this adds a prebuilt_ prefix this is guaranteed to only add dependencies on source +// modules. +func (system *systemModulesImport) ComponentDepsMutator(ctx android.BottomUpMutatorContext) { + for _, lib := range system.properties.Libs { + ctx.AddVariationDependencies(nil, systemModulesLibsTag, "prebuilt_"+lib) + } +} + type systemModulesSdkMemberType struct { android.SdkMemberTypeBase } diff --git a/java/system_modules_test.go b/java/system_modules_test.go index a8d7b0210..44049ee6b 100644 --- a/java/system_modules_test.go +++ b/java/system_modules_test.go @@ -107,7 +107,6 @@ func TestJavaSystemModulesMixSourceAndPrebuilt(t *testing.T) { prebuiltInputs := prebuiltSystemModules.Rule("jarsTosystemModules").Inputs // The expected paths are the header jars from the renamed prebuilt input modules. - // TODO(b/182402568) - these should be depending on the prebuilts - expectedPrebuiltPaths := normalizedPathsToHeaderJars(result, "system-module1", "system-module2") + expectedPrebuiltPaths := normalizedPathsToHeaderJars(result, "prebuilt_system-module1", "prebuilt_system-module2") result.AssertArrayString("prebuilt system modules inputs", expectedPrebuiltPaths, result.NormalizePathsForTesting(prebuiltInputs)) }