Add a function to log the invocation of tools run from the Android
build environment. This enables analyzing and optimizing developer
flows.
Note that there are no tools currently leveraging the logging
facility. Logging is also disabled by default and not configured to
use any particular logger.
Test: atest run_tool_with_logging_test
bug: 331638854
Change-Id: I001ba3c6c30b3ffc95d0fdb30ea7178a991c680f
Teach check-flagged-apis to cross-check the data from its three input
sources. This allows the tool to detect
- @FlaggedApi references to non-existent flags
- @FlaggedApi APIs present in the build artifacts even though the flag
is disabled
- @FlaggedApi APIs not present in the build artifacts even though the
flag is enabled
By passing in different sources, the tool can detect these errors for
any of the API surfaces (public, @SystemApi(MODULE_LIBRARIES), etc).
Note: the tool assumes that a disabled flag means that the @FlaggedApi
should not be present in the build output. This is currently true, but
won't be once metalava starts reverting @FlaggedApis to their previous
SDK snapshot.
Bug: 334870672
Test: atest --host check-flagged-apis-test
Test: check-flagged-apis --api-signature out/target/product/mainline_x86/obj/ETC/frameworks-base-api-current.txt_intermediates/frameworks-base-api-current.txt --flag-values out/soong/.intermediates/all_aconfig_declarations.pb --api-versions out/dist/data/api-versions.xml
Change-Id: I790234865f831af7d45895def14d1d6740365622
* changes:
check-flagged-apis: parse flag names and values
check-flagged-apis: parse API signature files
check-flagged-apis: add unit test infrastructure
Teach check-flagged-apis to parse API versions XML; this represents the
APIs after metalava has processed the source and kept APIs as is, or
reverted them to the previous SDK snapshot, according to their
@FlaggedApi flags.
As with the API signature parser, limit support to fields to keep things
simple; support for classes and methods will be added in later CLs.
Note: `m sdk dist` will generate an API versions XML file.
Bug: 334870672
Test: atest --host check-flagged-apis-test
Test: check-flagged-apis --api-signature out/target/product/mainline_x86/obj/ETC/frameworks-base-api-current.txt_intermediates/frameworks-base-api-current.txt --flag-values out/soong/.intermediates/all_aconfig_declarations.pb --api-versions out/dist/data/api-versions.xml
Change-Id: I779a0d0cdb8a50536d3fc8d517fa38ba4b0dcd1c
Teach check-flagged-apis to parse the parsed_flags protobuf generated by
aconfig.
Note: `m all_aconfig_declarations` generates a protobuf file that
contains all info about all flags.
Bug: 334870672
Test: atest --host check-flagged-apis-test
Test: check-flagged-apis --api-signature out/target/product/mainline_x86/obj/ETC/frameworks-base-api-current.txt_intermediates/frameworks-base-api-current.txt --flag-values out/soong/.intermediates/all_aconfig_declarations.pb
Change-Id: I397b32ae2a373b429ef6ce22e0a06a0f15202b91
Teach check-flagged-apis to extract flagged APIs from API signature files.
To keep things simple, only consider fields for now: support for classes
and methods will be added in a later CL.
Note: `m frameworks-base-api-current.txt` will generate an API signature
file that includes both the platform and mainline APIs.
Bug: 334870672
Test: atest --host check-flagged-apis-test
Test: check-flagged-apis --api-signature out/target/product/mainline_x86/obj/ETC/frameworks-base-api-current.txt_intermediates/frameworks-base-api-current.txt
Change-Id: Ic244b896672569f44af793796189b34c1f9d0c36
Add a value class to represent Flag names. We could use plain Strings
but having a dedicated class (with no overhead compared to String) makes
the intent of the code much clearer.
Bug: 334870672
Test: m check-flagged-apis && check-flagged-apis
Change-Id: Icdd4fb97d3fd49e507b7559504ea173a3dc52dea
check-flagged-apis will read contents from various sources, which use
different formats to represent the same piece information (e.g.
"class#field" or "<class><field>").
Introduce a Symbol value class to represent any API (i.e. a class, field
or method) in a unified format.
Bug: 334870672
Test: m check-flagged-apis && check-flagged-apis
Change-Id: Id9404294a87b23a9d43e5e13ce39ea5a92608e33
- Fix the timestamp variable name.
- Convert the intermediate file name extensions to those in the
prebuilt directory.
- Disable check-abi-dump-list for sanitizer and coverage builds.
- Add an exception for libRS, RISC-V.
Test: m check-abi-dump-list
Bug: 333532038
Change-Id: I35b644feed1bef1e6c74731e8f69074bdc5b0352
The SDK finalization process will create APEX ABI dumps from this
target.
Test: make findlsdumps_APEX
Bug: 333532038
Change-Id: Iaec03bd39923678141b12436e5a6b8576e63a999
ro.product.first_api_level looks like the value we actually want to read
to since it inherits from $PRODUCT_SHIPPING_API_LEVEL. Other variables
we attempted to look at were giving other values (e.g 202504 for pixel
watch)
Bug: 331202590
Test: th
Change-Id: Ied3da247cba45611132db6c9e3cdefb447891f96
Use clikt as the command line options parser library.
Bug: 334870672
Test: m check-flagged-apis && check-flagged-apis
Change-Id: I7c406456b00e29293294dcdbef411d2543a1e8d5
Add a new CLI to verify that the build artifacts contain the right set
of @FlaggedApi APIs, based on the value of the corresponding aconfig
flag.
This CLI will act as an end-to-end test of Soong and metalava.
This CL only adds the project scaffolding; later CLs will add the
implementation.
Bug: 334870672
Test: m check-flagged-apis && check-flagged-apis
Change-Id: Ib00653f2a549217da2b0058867c711f35efd5760
The SDK finalization process will create APEX ABI dumps from this
target.
Test: make findlsdumps_APEX check-abi-dump-list
Bug: 333532038
Change-Id: I68d83616ef58aac2618e405a87b1909167b08d43
The original behvaior will not install related files define in
LOCAL_SOONG_INSTALL_PAIRS due to there's no dependency information in
make, this CL parse the string from each LOCAL_SOONG_INSTALL_PAIRS after
':' as dependencies.
Bug: 333974089
Test: apply aosp/3041672 ; m hyph-lic
Change-Id: I79050e99c3e63f58cfd32db270c909a76bd96801
The order of items in `partitions` map is non-deterministic. To make
sure that builds are hermetic, sort the map before use.
Test: th
Bug: 332550989
Change-Id: I76c7037ef9f03904899339813819fcf985a7c893
This reverts commit 35839ec1a3.
Reason for revert: CI breakages for 2 targets. Please refer to bug for more details
Bug: 334152807
Change-Id: I0e38583cd3fa57afef432406374ec8d4ddc57e72
This reverts commit 1c4c94d784.
Reason for revert: CI breakages for 2 targets. Please refer to bug for more details
Bug: 334152807
Change-Id: I76853ccfd8a41f99670a7b7513f358f076f9b271
This reverts commit 39dcf40403.
Reason for revert: CI breakages for 2 targets. Please refer to bug for more details
Bug: 334152807
Change-Id: Ic2fc942b1769aed03553fc305ac283666eb9e3f5
`PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO` overrides
`TARGET_NO_BIONIC_PAGE_SIZE_MACRO` value in the build system. Enabling
TARGET_NO_BIONIC_PAGE_SIZE_MACRO implies those targets no longer rely
on the `PAGE_SIZE` bionic macro. Page size would be queried at runtime
using getpagesize() / sysconf(_SC_PAGE_SIZE).
Bug: 310232825
Test: lunch <target> && get_build_var TARGET_NO_BIONIC_PAGE_SIZE_MACRO
Change-Id: I37133cb2419566e9616a2cde640372352178980f