From 4f0a75abded278f9a6eade900c0c5abe718a4409 Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Thu, 11 Mar 2021 07:23:27 +0000 Subject: Ensure java_system_modules_import uses prebuilts Make sure that java_system_modules_import always depends on the prebuilt by adding dependencies in the ComponentDepsMutator() method which is called before prebuilts without a corresponding source are renamed from prebuilt_ to . That requires the prebuilt_ prefix to be provided but it ensures that the dependencies are safe. Similar logic also makes sure java_system_modules always depends on the source module and not on a renamed prebuilt module. Bug: 182402568 Test: m nothing Change-Id: I30db95978f5d9b205951011edf40585ee36c0c4c --- java/system_modules.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'java/system_modules.go') 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 } -- cgit v1.2.3-59-g8ed1b