diff options
author | 2025-01-15 23:14:27 +0000 | |
---|---|---|
committer | 2025-01-15 23:16:01 +0000 | |
commit | 3a89296277a55d450ec02853360293b61ecd57f9 (patch) | |
tree | 7f2daa9304a60af13c2d4b0f8ef49389259e0f73 | |
parent | cbb50c29b75b52e03c0b366034a563ba8dedcc65 (diff) |
Convert droidstubs to use ModuleProxy.
Bug: 377723687
Test: Unit tests and compare the ninja and mk files generated.
Change-Id: I4b489189b5ec33b9481e1ab5943849d8cfaf659b
-rw-r--r-- | java/droiddoc.go | 13 | ||||
-rw-r--r-- | java/droidstubs.go | 44 |
2 files changed, 41 insertions, 16 deletions
diff --git a/java/droiddoc.go b/java/droiddoc.go index 49674b98a..225f201a9 100644 --- a/java/droiddoc.go +++ b/java/droiddoc.go @@ -19,6 +19,7 @@ import ( "path/filepath" "strings" + "github.com/google/blueprint" "github.com/google/blueprint/proptools" "android/soong/android" @@ -874,6 +875,13 @@ type ExportedDroiddocDirProperties struct { Path *string } +type ExportedDroiddocDirInfo struct { + Deps android.Paths + Dir android.Path +} + +var ExportedDroiddocDirInfoProvider = blueprint.NewProvider[ExportedDroiddocDirInfo]() + type ExportedDroiddocDir struct { android.ModuleBase @@ -897,6 +905,11 @@ func (d *ExportedDroiddocDir) GenerateAndroidBuildActions(ctx android.ModuleCont path := String(d.properties.Path) d.dir = android.PathForModuleSrc(ctx, path) d.deps = android.PathsForModuleSrc(ctx, []string{filepath.Join(path, "**/*")}) + + android.SetProvider(ctx, ExportedDroiddocDirInfoProvider, ExportedDroiddocDirInfo{ + Dir: d.dir, + Deps: d.deps, + }) } // Defaults diff --git a/java/droidstubs.go b/java/droidstubs.go index 17c39fcaa..ac1a00788 100644 --- a/java/droidstubs.go +++ b/java/droidstubs.go @@ -28,8 +28,14 @@ import ( "android/soong/remoteexec" ) +type StubsArtifactsInfo struct { + ApiVersionsXml android.WritablePath +} + type DroidStubsInfo struct { CurrentApiTimestamp android.Path + EverythingArtifacts StubsArtifactsInfo + ExportableArtifacts StubsArtifactsInfo } var DroidStubsInfoProvider = blueprint.NewProvider[DroidStubsInfo]() @@ -505,9 +511,9 @@ func (d *Droidstubs) annotationsFlags(ctx android.ModuleContext, cmd *android.Ru } func (d *Droidstubs) mergeAnnoDirFlags(ctx android.ModuleContext, cmd *android.RuleBuilderCommand) { - ctx.VisitDirectDepsWithTag(metalavaMergeAnnotationsDirTag, func(m android.Module) { - if t, ok := m.(*ExportedDroiddocDir); ok { - cmd.FlagWithArg("--merge-qualifier-annotations ", t.dir.String()).Implicits(t.deps) + ctx.VisitDirectDepsProxyWithTag(metalavaMergeAnnotationsDirTag, func(m android.ModuleProxy) { + if t, ok := android.OtherModuleProvider(ctx, m, ExportedDroiddocDirInfoProvider); ok { + cmd.FlagWithArg("--merge-qualifier-annotations ", t.Dir.String()).Implicits(t.Deps) } else { ctx.PropertyErrorf("merge_annotations_dirs", "module %q is not a metalava merge-annotations dir", ctx.OtherModuleName(m)) @@ -516,9 +522,9 @@ func (d *Droidstubs) mergeAnnoDirFlags(ctx android.ModuleContext, cmd *android.R } func (d *Droidstubs) inclusionAnnotationsFlags(ctx android.ModuleContext, cmd *android.RuleBuilderCommand) { - ctx.VisitDirectDepsWithTag(metalavaMergeInclusionAnnotationsDirTag, func(m android.Module) { - if t, ok := m.(*ExportedDroiddocDir); ok { - cmd.FlagWithArg("--merge-inclusion-annotations ", t.dir.String()).Implicits(t.deps) + ctx.VisitDirectDepsProxyWithTag(metalavaMergeInclusionAnnotationsDirTag, func(m android.ModuleProxy) { + if t, ok := android.OtherModuleProvider(ctx, m, ExportedDroiddocDirInfoProvider); ok { + cmd.FlagWithArg("--merge-inclusion-annotations ", t.Dir.String()).Implicits(t.Deps) } else { ctx.PropertyErrorf("merge_inclusion_annotations_dirs", "module %q is not a metalava merge-annotations dir", ctx.OtherModuleName(m)) @@ -532,12 +538,12 @@ func (d *Droidstubs) apiLevelsAnnotationsFlags(ctx android.ModuleContext, cmd *a d.apiLevelsGenerationFlags(ctx, cmd, stubsType, apiVersionsXml) apiVersions = apiVersionsXml } else { - ctx.VisitDirectDepsWithTag(metalavaAPILevelsModuleTag, func(m android.Module) { - if s, ok := m.(*Droidstubs); ok { + ctx.VisitDirectDepsProxyWithTag(metalavaAPILevelsModuleTag, func(m android.ModuleProxy) { + if s, ok := android.OtherModuleProvider(ctx, m, DroidStubsInfoProvider); ok { if stubsType == Everything { - apiVersions = s.everythingArtifacts.apiVersionsXml + apiVersions = s.EverythingArtifacts.ApiVersionsXml } else if stubsType == Exportable { - apiVersions = s.exportableArtifacts.apiVersionsXml + apiVersions = s.ExportableArtifacts.ApiVersionsXml } else { ctx.ModuleErrorf("%s stubs type does not generate api-versions.xml file", stubsType.String()) } @@ -610,18 +616,18 @@ func (d *Droidstubs) apiLevelsGenerationFlags(ctx android.ModuleContext, cmd *an var dirs []string var extensions_dir string - ctx.VisitDirectDepsWithTag(metalavaAPILevelsAnnotationsDirTag, func(m android.Module) { - if t, ok := m.(*ExportedDroiddocDir); ok { - extRegex := regexp.MustCompile(t.dir.String() + extensionsPattern) + ctx.VisitDirectDepsProxyWithTag(metalavaAPILevelsAnnotationsDirTag, func(m android.ModuleProxy) { + if t, ok := android.OtherModuleProvider(ctx, m, ExportedDroiddocDirInfoProvider); ok { + extRegex := regexp.MustCompile(t.Dir.String() + extensionsPattern) // Grab the first extensions_dir and we find while scanning ExportedDroiddocDir.deps; // ideally this should be read from prebuiltApis.properties.Extensions_* - for _, dep := range t.deps { + for _, dep := range t.Deps { // Check to see if it matches an extension first. depBase := dep.Base() if extRegex.MatchString(dep.String()) && d.properties.Extensions_info_file != nil { if extensions_dir == "" { - extensions_dir = t.dir.String() + "/extensions" + extensions_dir = t.Dir.String() + "/extensions" } cmd.Implicit(dep) } else if depBase == filename { @@ -645,7 +651,7 @@ func (d *Droidstubs) apiLevelsGenerationFlags(ctx android.ModuleContext, cmd *an } } - dirs = append(dirs, t.dir.String()) + dirs = append(dirs, t.Dir.String()) } else { ctx.PropertyErrorf("api_levels_annotations_dirs", "module %q is not a metalava api-levels-annotations dir", ctx.OtherModuleName(m)) @@ -1349,6 +1355,12 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) { android.SetProvider(ctx, DroidStubsInfoProvider, DroidStubsInfo{ CurrentApiTimestamp: d.CurrentApiTimestamp(), + EverythingArtifacts: StubsArtifactsInfo{ + ApiVersionsXml: d.everythingArtifacts.apiVersionsXml, + }, + ExportableArtifacts: StubsArtifactsInfo{ + ApiVersionsXml: d.exportableArtifacts.apiVersionsXml, + }, }) d.setOutputFiles(ctx) |