summaryrefslogtreecommitdiff
path: root/java/hiddenapi_singleton.go
diff options
context:
space:
mode:
authorPaul Duffin <paulduffin@google.com>2021-04-08 17:49:27 +0100
committerPaul Duffin <paulduffin@google.com>2021-04-12 11:04:09 +0100
commitc6bb7cf8d709d0bcfb8f90071dd34c779d16a888 (patch)
treed8c4ab1451db5381313594ee084915a6f9948e9f /java/hiddenapi_singleton.go
parent454ac1eff30a6be6abfef629b508939fc6670126 (diff)
Extract ruleToGenerateHiddenApiFlags
Extracts the code for creating the rule that creates the monolithic hidden API flags file which is encoded into dex implementation jars. This refactoring is in preparation for moving the functionality from the hiddenapi_singleton into the platform_bootclasspath. A follow up change will move the method into the new hiddenapi_modular.go alongside the hiddenAPIAugmentationInfo as they will both be used to perform hidden API processing for a bootclasspath_fragment. Bug: 177892522 Test: verified that the out/soong/hiddenapi/... files are unchanged by this change Change-Id: I2729afa80cdfd2d1d4717365001648453d65632f
Diffstat (limited to 'java/hiddenapi_singleton.go')
-rw-r--r--java/hiddenapi_singleton.go89
1 files changed, 66 insertions, 23 deletions
diff --git a/java/hiddenapi_singleton.go b/java/hiddenapi_singleton.go
index 7e9477bfe..341381ae9 100644
--- a/java/hiddenapi_singleton.go
+++ b/java/hiddenapi_singleton.go
@@ -346,39 +346,82 @@ func flagsRule(ctx android.SingletonContext) android.Path {
ctx.Errorf("Failed to find combined-removed-dex.")
}
- rule := android.NewRuleBuilder(pctx, ctx)
-
outputPath := hiddenAPISingletonPaths(ctx).flags
- tempPath := android.PathForOutput(ctx, outputPath.Rel()+".tmp")
stubFlags := hiddenAPISingletonPaths(ctx).stubFlags
- rule.Command().
+ pathsForSource := func(paths ...string) android.Paths { return android.PathsForSource(ctx, paths) }
+
+ ruleToGenerateHiddenApiFlags(ctx, outputPath, stubFlags, flagsCSV, hiddenAPIAugmentationInfo{
+ Unsupported: pathsForSource("frameworks/base/boot/hiddenapi/hiddenapi-unsupported.txt"),
+ Removed: android.Paths{combinedRemovedApis},
+ Max_target_r_low_priority: pathsForSource("frameworks/base/boot/hiddenapi/hiddenapi-max-target-r-loprio.txt"),
+ Max_target_q: pathsForSource("frameworks/base/boot/hiddenapi/hiddenapi-max-target-q.txt"),
+ Max_target_p: pathsForSource("frameworks/base/boot/hiddenapi/hiddenapi-max-target-p.txt"),
+ Max_target_o_low_priority: pathsForSource("frameworks/base/boot/hiddenapi/hiddenapi-max-target-o.txt"),
+ Blocked: pathsForSource("frameworks/base/boot/hiddenapi/hiddenapi-force-blocked.txt"),
+ Unsupported_packages: pathsForSource("frameworks/base/boot/hiddenapi/hiddenapi-unsupported-packages.txt"),
+ })
+
+ return outputPath
+}
+
+// ruleToGenerateHiddenApiFlags creates a rule to create the monolithic hidden API flags from the
+// flags from all the modules, the stub flags, augmented with some additional configuration files.
+//
+// baseFlagsPath is the path to the flags file containing all the information from the stubs plus
+// an entry for every single member in the dex implementation jars of the individual modules. Every
+// signature in any of the other files MUST be included in this file.
+//
+// moduleSpecificFlagsPaths are the paths to the flags files generated by each module using
+// information from the baseFlagsPath as well as from annotations within the source.
+//
+// augmentationInfo is a struct containing paths to files that augment the information provided by
+// the moduleSpecificFlagsPaths.
+func ruleToGenerateHiddenApiFlags(ctx android.BuilderContext, outputPath android.WritablePath, baseFlagsPath android.Path, moduleSpecificFlagsPaths android.Paths, augmentationInfo hiddenAPIAugmentationInfo) {
+ tempPath := android.PathForOutput(ctx, outputPath.Rel()+".tmp")
+ rule := android.NewRuleBuilder(pctx, ctx)
+ command := rule.Command().
BuiltTool("generate_hiddenapi_lists").
- FlagWithInput("--csv ", stubFlags).
- Inputs(flagsCSV).
- FlagWithInput("--unsupported ",
- android.PathForSource(ctx, "frameworks/base/boot/hiddenapi/hiddenapi-unsupported.txt")).
- FlagWithInput("--unsupported ", combinedRemovedApis).Flag("--ignore-conflicts ").FlagWithArg("--tag ", "removed").
- FlagWithInput("--max-target-r ",
- android.PathForSource(ctx, "frameworks/base/boot/hiddenapi/hiddenapi-max-target-r-loprio.txt")).FlagWithArg("--tag ", "lo-prio").
- FlagWithInput("--max-target-q ",
- android.PathForSource(ctx, "frameworks/base/boot/hiddenapi/hiddenapi-max-target-q.txt")).
- FlagWithInput("--max-target-p ",
- android.PathForSource(ctx, "frameworks/base/boot/hiddenapi/hiddenapi-max-target-p.txt")).
- FlagWithInput("--max-target-o ", android.PathForSource(
- ctx, "frameworks/base/boot/hiddenapi/hiddenapi-max-target-o.txt")).Flag("--ignore-conflicts ").FlagWithArg("--tag ", "lo-prio").
- FlagWithInput("--blocked ",
- android.PathForSource(ctx, "frameworks/base/boot/hiddenapi/hiddenapi-force-blocked.txt")).
- FlagWithInput("--unsupported ", android.PathForSource(
- ctx, "frameworks/base/boot/hiddenapi/hiddenapi-unsupported-packages.txt")).Flag("--packages ").
+ FlagWithInput("--csv ", baseFlagsPath).
+ Inputs(moduleSpecificFlagsPaths).
FlagWithOutput("--output ", tempPath)
+ for _, path := range augmentationInfo.Unsupported {
+ command.FlagWithInput("--unsupported ", path)
+ }
+
+ for _, path := range augmentationInfo.Removed {
+ command.FlagWithInput("--unsupported ", path).Flag("--ignore-conflicts ").FlagWithArg("--tag ", "removed")
+ }
+
+ for _, path := range augmentationInfo.Max_target_r_low_priority {
+ command.FlagWithInput("--max-target-r ", path).FlagWithArg("--tag ", "lo-prio")
+ }
+
+ for _, path := range augmentationInfo.Max_target_q {
+ command.FlagWithInput("--max-target-q ", path)
+ }
+
+ for _, path := range augmentationInfo.Max_target_p {
+ command.FlagWithInput("--max-target-p ", path)
+ }
+
+ for _, path := range augmentationInfo.Max_target_o_low_priority {
+ command.FlagWithInput("--max-target-o ", path).Flag("--ignore-conflicts ").FlagWithArg("--tag ", "lo-prio")
+ }
+
+ for _, path := range augmentationInfo.Blocked {
+ command.FlagWithInput("--blocked ", path)
+ }
+
+ for _, path := range augmentationInfo.Unsupported_packages {
+ command.FlagWithInput("--unsupported ", path).Flag("--packages ")
+ }
+
commitChangeForRestat(rule, tempPath, outputPath)
rule.Build("hiddenAPIFlagsFile", "hiddenapi flags")
-
- return outputPath
}
// emptyFlagsRule creates a rule to build an empty hiddenapi-flags.csv, which is needed by master-art-host builds that