Merge "Move hidden API metadata file rule to platform_bootclasspath" am: fd105d469c am: c552799891 am: a9a8e07643

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1674033

Change-Id: I68f24d678cdd437a1672047be672338184e12cd5
This commit is contained in:
Paul Duffin 2021-04-15 11:23:04 +00:00 committed by Automerger Merge Worker
commit 724f24e68a
3 changed files with 22 additions and 36 deletions

View File

@ -115,7 +115,7 @@ func hiddenAPISingletonFactory() android.Singleton {
} }
type hiddenAPISingleton struct { type hiddenAPISingleton struct {
flags, metadata android.Path flags android.Path
} }
// hiddenAPI singleton rules // hiddenAPI singleton rules
@ -144,24 +144,18 @@ func (h *hiddenAPISingleton) GenerateBuildActions(ctx android.SingletonContext)
// These rules depend on files located in frameworks/base, skip them if running in a tree that doesn't have them. // These rules depend on files located in frameworks/base, skip them if running in a tree that doesn't have them.
if ctx.Config().FrameworksBaseDirExists(ctx) { if ctx.Config().FrameworksBaseDirExists(ctx) {
h.flags = flagsRule(ctx) h.flags = flagsRule(ctx)
h.metadata = metadataRule(ctx)
} else { } else {
h.flags = emptyFlagsRule(ctx) h.flags = emptyFlagsRule(ctx)
} }
} }
// Export paths to Make. INTERNAL_PLATFORM_HIDDENAPI_FLAGS is used by Make rules in art/ and cts/. // Export paths to Make. INTERNAL_PLATFORM_HIDDENAPI_FLAGS is used by Make rules in art/ and cts/.
// Both paths are used to call dist-for-goals.
func (h *hiddenAPISingleton) MakeVars(ctx android.MakeVarsContext) { func (h *hiddenAPISingleton) MakeVars(ctx android.MakeVarsContext) {
if ctx.Config().IsEnvTrue("UNSAFE_DISABLE_HIDDENAPI_FLAGS") { if ctx.Config().IsEnvTrue("UNSAFE_DISABLE_HIDDENAPI_FLAGS") {
return return
} }
ctx.Strict("INTERNAL_PLATFORM_HIDDENAPI_FLAGS", h.flags.String()) ctx.Strict("INTERNAL_PLATFORM_HIDDENAPI_FLAGS", h.flags.String())
if h.metadata != nil {
ctx.Strict("INTERNAL_PLATFORM_HIDDENAPI_GREYLIST_METADATA", h.metadata.String())
}
} }
// stubFlagsRule creates the rule to build hiddenapi-stub-flags.txt out of dex jars from stub modules and boot image // stubFlagsRule creates the rule to build hiddenapi-stub-flags.txt out of dex jars from stub modules and boot image
@ -354,34 +348,6 @@ func emptyFlagsRule(ctx android.SingletonContext) android.Path {
return outputPath return outputPath
} }
// metadataRule creates a rule to build hiddenapi-unsupported.csv out of the metadata.csv files generated for boot image
// modules.
func metadataRule(ctx android.SingletonContext) android.Path {
var metadataCSV android.Paths
ctx.VisitAllModules(func(module android.Module) {
if h, ok := module.(hiddenAPIIntf); ok {
if csv := h.metadataCSV(); csv != nil {
metadataCSV = append(metadataCSV, csv)
}
}
})
rule := android.NewRuleBuilder(pctx, ctx)
outputPath := hiddenAPISingletonPaths(ctx).metadata
rule.Command().
BuiltTool("merge_csv").
Flag("--key_field signature").
FlagWithOutput("--output=", outputPath).
Inputs(metadataCSV)
rule.Build("hiddenAPIGreylistMetadataFile", "hiddenapi greylist metadata")
return outputPath
}
// commitChangeForRestat adds a command to a rule that updates outputPath from tempPath if they are different. It // commitChangeForRestat adds a command to a rule that updates outputPath from tempPath if they are different. It
// also marks the rule as restat and marks the tempPath as a temporary file that should not be considered an output of // also marks the rule as restat and marks the tempPath as a temporary file that should not be considered an output of
// the rule. // the rule.

View File

@ -341,6 +341,7 @@ func (b *platformBootclasspathModule) generateHiddenAPIBuildActions(ctx android.
ruleToGenerateHiddenApiFlags(ctx, outputPath, baseFlagsPath, moduleSpecificFlagsPaths, augmentationInfo) ruleToGenerateHiddenApiFlags(ctx, outputPath, baseFlagsPath, moduleSpecificFlagsPaths, augmentationInfo)
b.generateHiddenAPIIndexRules(ctx, hiddenAPISupportingModules) b.generateHiddenAPIIndexRules(ctx, hiddenAPISupportingModules)
b.generatedHiddenAPIMetadataRules(ctx, hiddenAPISupportingModules)
} }
func (b *platformBootclasspathModule) generateHiddenAPIIndexRules(ctx android.ModuleContext, modules []hiddenAPISupportingModule) { func (b *platformBootclasspathModule) generateHiddenAPIIndexRules(ctx android.ModuleContext, modules []hiddenAPISupportingModule) {
@ -358,3 +359,22 @@ func (b *platformBootclasspathModule) generateHiddenAPIIndexRules(ctx android.Mo
Inputs(indexes) Inputs(indexes)
rule.Build("platform-bootclasspath-monolithic-hiddenapi-index", "monolithic hidden API index") rule.Build("platform-bootclasspath-monolithic-hiddenapi-index", "monolithic hidden API index")
} }
func (b *platformBootclasspathModule) generatedHiddenAPIMetadataRules(ctx android.ModuleContext, modules []hiddenAPISupportingModule) {
metadataCSVFiles := android.Paths{}
for _, module := range modules {
metadataCSVFiles = append(metadataCSVFiles, module.metadataCSV())
}
rule := android.NewRuleBuilder(pctx, ctx)
outputPath := hiddenAPISingletonPaths(ctx).metadata
rule.Command().
BuiltTool("merge_csv").
Flag("--key_field signature").
FlagWithOutput("--output=", outputPath).
Inputs(metadataCSVFiles)
rule.Build("platform-bootclasspath-monolithic-hiddenapi-metadata", "monolithic hidden API metadata")
}

View File

@ -173,7 +173,7 @@ func TestPlatformBootclasspath_Dist(t *testing.T) {
android.AssertStringEquals(t, "platform dist goals call", "$(call dist-for-goals,droidcore,out/soong/hiddenapi/hiddenapi-flags.csv:hiddenapi-flags.csv)\n", android.StringRelativeToTop(result.Config, goals[1])) android.AssertStringEquals(t, "platform dist goals call", "$(call dist-for-goals,droidcore,out/soong/hiddenapi/hiddenapi-flags.csv:hiddenapi-flags.csv)\n", android.StringRelativeToTop(result.Config, goals[1]))
} }
func TestPlatformBootclasspath_HiddenAPIMonolithicIndexFile(t *testing.T) { func TestPlatformBootclasspath_HiddenAPIMonolithicFiles(t *testing.T) {
result := android.GroupFixturePreparers( result := android.GroupFixturePreparers(
hiddenApiFixtureFactory, hiddenApiFixtureFactory,
PrepareForTestWithJavaSdkLibraryFiles, PrepareForTestWithJavaSdkLibraryFiles,