summaryrefslogtreecommitdiff
path: root/scripts/aconfig-to-metalava-flags.py
AgeCommit message (Collapse)Author
2025-03-04Replace --revert-annotation with a flags config file Paul Duffin
Previously, Metalava did not support flags specifically and instead relied on the build to generate the appropriate `--revert-annotation` options to ensure that each flagged API was reverted or finalized as appropriate to the flag state. However, Metalava now supports configuring the flag state explicitly so this change switches the build to make use of that. The set of flags to be passed to Metalava are generated using exactly the same queries as before except that instead of just outputting the `{fully_qualified_name}` it outputs the whole protobuf definition. The `keep-flagged-apis.sh` script has been replaced by `aconfig-to-metalava-flags.py` which consumes the protobuf and generates a config file suitable for Metalava to consume. Finally, instead of using `@<file>` syntax to pass a file containing command line options the config file is specified using `--config-file`. One point to note, previously, when `aconfigFlagsPaths` was empty it would just pass `--revert-annotation android.annotation.FlaggedApi` to revert them all. To do the same with the configuration file it is necessary to pass an empty `<api-flags/>` as no `<api-flags>` means keep all the flagged APIs, just like no `--revert-annotation` does. Rather than have some special logic to handle that case and create an empty file I just let it drop through as the code below generates an empty protobuf file which in turn creates an empty `<api-flags/>` element in the config file. Bug: 399846595 Test: # Before applying this change run: tools/metalava/scripts/gather-android-metalava-artifacts.py before # After applying this change run: tools/metalava/scripts/gather-android-metalava-artifacts.py after # Make sure that there are no differences. meld before after Change-Id: Ia95e111f10d066996e4e51c5b7027b09f4d05d57