From b0c1f0c45a2d105fdcd6cda3f3f841c2a7addf2c Mon Sep 17 00:00:00 2001 From: bralee Date: Mon, 7 Jun 2021 22:49:13 +0800 Subject: [PATCH] AIDEGen: Collect dependencies info from APEX module. Add apex dependencies. Bug: 188004865 Test: 1. aidegen frameworks/base/apex/appsearch frameworks/base/apex/appsearch/testing frameworks/base/services/tests/servicestests frameworks/base/core/tests/coretests cts/tests/appsearch external/icing vendor/google_testing/integration/tests/scenarios 2. The dependency graph shows it is workable to provide the result to let IDE's [Project structure] to include the service-appsearch as source directory. Change-Id: Ifd1548f0a86c1c73f8279e8ecea67756aeb1281e --- apex/apex.go | 14 ++++++++++++++ java/bootclasspath_fragment.go | 12 ++++++++++++ java/systemserver_classpath_fragment.go | 12 ++++++++++++ 3 files changed, 38 insertions(+) diff --git a/apex/apex.go b/apex/apex.go index 926085b4c..442769ad9 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -414,6 +414,9 @@ type apexBundle struct { // Path of API coverage generate file apisUsedByModuleFile android.ModuleOutPath apisBackedByModuleFile android.ModuleOutPath + + // Collect the module directory for IDE info in java/jdeps.go. + modulePaths []string } // apexFileClass represents a type of file that can be included in APEX. @@ -1666,6 +1669,9 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) { handleSpecialLibs := !android.Bool(a.properties.Ignore_system_library_special_case) + // Collect the module directory for IDE info in java/jdeps.go. + a.modulePaths = append(a.modulePaths, ctx.ModuleDir()) + // TODO(jiyong): do this using WalkPayloadDeps // TODO(jiyong): make this clean!!! ctx.WalkDepsBlueprint(func(child, parent blueprint.Module) bool { @@ -2411,6 +2417,14 @@ func (a *apexBundle) checkApexAvailability(ctx android.ModuleContext) { }) } +// Collect information for opening IDE project files in java/jdeps.go. +func (a *apexBundle) IDEInfo(dpInfo *android.IdeInfo) { + dpInfo.Deps = append(dpInfo.Deps, a.properties.Java_libs...) + dpInfo.Deps = append(dpInfo.Deps, a.properties.Bootclasspath_fragments...) + dpInfo.Deps = append(dpInfo.Deps, a.properties.Systemserverclasspath_fragments...) + dpInfo.Paths = append(dpInfo.Paths, a.modulePaths...) +} + var ( apexAvailBaseline = makeApexAvailableBaseline() inverseApexAvailBaseline = invertApexBaseline(apexAvailBaseline) diff --git a/java/bootclasspath_fragment.go b/java/bootclasspath_fragment.go index 792193f9f..7936c2bb4 100644 --- a/java/bootclasspath_fragment.go +++ b/java/bootclasspath_fragment.go @@ -132,6 +132,9 @@ type BootclasspathFragmentModule struct { ClasspathFragmentBase properties bootclasspathFragmentProperties + + // Collect the module directory for IDE info in java/jdeps.go. + modulePaths []string } // commonBootclasspathFragment defines the methods that are implemented by both source and prebuilt @@ -389,6 +392,9 @@ func (b *BootclasspathFragmentModule) GenerateAndroidBuildActions(ctx android.Mo // Generate classpaths.proto config b.generateClasspathProtoBuildActions(ctx) + // Collect the module directory for IDE info in java/jdeps.go. + b.modulePaths = append(b.modulePaths, ctx.ModuleDir()) + // Gather the bootclasspath fragment's contents. var contents []android.Module ctx.VisitDirectDeps(func(module android.Module) { @@ -648,6 +654,12 @@ func (b *BootclasspathFragmentModule) generateBootImageBuildActions(ctx android. return true } +// Collect information for opening IDE project files in java/jdeps.go. +func (b *BootclasspathFragmentModule) IDEInfo(dpInfo *android.IdeInfo) { + dpInfo.Deps = append(dpInfo.Deps, b.properties.Contents...) + dpInfo.Paths = append(dpInfo.Paths, b.modulePaths...) +} + type bootclasspathFragmentMemberType struct { android.SdkMemberTypeBase } diff --git a/java/systemserver_classpath_fragment.go b/java/systemserver_classpath_fragment.go index 7ffb05602..5bd25cd51 100644 --- a/java/systemserver_classpath_fragment.go +++ b/java/systemserver_classpath_fragment.go @@ -64,6 +64,9 @@ type SystemServerClasspathModule struct { ClasspathFragmentBase properties systemServerClasspathFragmentProperties + + // Collect the module directory for IDE info in java/jdeps.go. + modulePaths []string } func (s *SystemServerClasspathModule) ShouldSupportSdkVersion(ctx android.BaseModuleContext, sdkVersion android.ApiLevel) error { @@ -93,6 +96,9 @@ func (s *SystemServerClasspathModule) GenerateAndroidBuildActions(ctx android.Mo classpathJars := configuredJarListToClasspathJars(ctx, s.ClasspathFragmentToConfiguredJarList(ctx), s.classpathType) s.classpathFragmentBase().generateClasspathProtoBuildActions(ctx, classpathJars) + + // Collect the module directory for IDE info in java/jdeps.go. + s.modulePaths = append(s.modulePaths, ctx.ModuleDir()) } func (s *SystemServerClasspathModule) ClasspathFragmentToConfiguredJarList(ctx android.ModuleContext) android.ConfiguredJarList { @@ -139,3 +145,9 @@ func (s *SystemServerClasspathModule) ComponentDepsMutator(ctx android.BottomUpM ctx.AddDependency(module, systemServerClasspathFragmentContentDepTag, name) } } + +// Collect information for opening IDE project files in java/jdeps.go. +func (s *SystemServerClasspathModule) IDEInfo(dpInfo *android.IdeInfo) { + dpInfo.Deps = append(dpInfo.Deps, s.properties.Contents...) + dpInfo.Paths = append(dpInfo.Paths, s.modulePaths...) +}