platform_build_soong/scripts
Paul Duffin c11f6679d8 Use trie to store monolithic hidden API flags
Previously, a simple map from dex signature to the flags was used to
store the monolithic hidden API flags. This change replaces that with a
trie that uses packages and class names extracted from the signature
to map from the signature to the flags.

The signature is broken down into pieces consisting of package names,
class names and the remaining member signature. They are used in turn
to navigate through nodes in the trie to a Leaf that contains the flags
associated with the signature.

The flags can be retrieved from the trie in a number of ways:
* Using the complete signature to retrieve the flags for a single
  member.
* Using a class name to retrieve the flags for all the members in a
  class and any nested classes.
* Using a package wildcard to retrieve the flags for all the members in
  the classes in that package.
* Using a recursive package wildcard to retrieve the flags for all the
  members in the classes in that package and nested packages.

This will allow a bootclasspath_fragment to select a subset of the
monolithic flags to compare against itself without specifying the
signatures of every member of that set.

Before creating the trie an attempt was made to compute the subset by
iterating over all the signatures in the monolithic flags and matching
against a regular expression created from the patterns but that was too
slow. It took minutes to run whereas using the simple map or the trie
only takes a few seconds.

Bug: 194063708
Test: atest --host verify_overlaps_test
Change-Id: I36f5e319d3e7d62dd34305de1eec990a93cb3a89
2021-08-09 19:51:33 +01:00
..
check_boot_jars Switch boot jars package check to use dexdump xml output 2020-11-16 17:46:16 +00:00
hiddenapi Use trie to store monolithic hidden API flags 2021-08-09 19:51:33 +01:00
Android.bp [scripts] Add script to print clang prebuilts version 2021-06-25 11:57:16 -07:00
archive_repack.sh Repack libgcc.a to only include required objects 2019-10-24 16:34:54 -07:00
build-aml-prebuilts.sh Remove use of fake soong.variables. 2021-06-08 11:36:53 +01:00
build-mainline-modules.sh Clean up statsd-module-sdk-for-art. 2021-06-14 19:50:58 +01:00
build-ndk-prebuilts.sh Remove draft API support. 2021-04-13 15:55:47 -07:00
build-rustdocs.sh Add script for building and archiving rustdocs. 2021-05-14 13:18:07 -07:00
build_broken_logs.go Update build_broken_logs script 2020-01-29 10:50:41 -08:00
check_do_not_merge.sh Disallow using error-prone merge strategies 2021-02-19 13:05:54 +00:00
construct_context.py Allow modules that don't run verify_uses_libraries to have nonempty CLC. 2021-03-22 10:49:31 +00:00
construct_context_test.py Move part of logic from construct_context.py to Soong. 2020-10-27 17:05:30 +00:00
conv_linker_config.py Add 'merge' command to conv_linker_config 2021-04-15 10:58:21 +09:00
diff_build_graphs.sh Have diff_build_graphs.sh print the number of lines in the diff 2017-11-29 12:54:43 -08:00
freeze-sysprop-api-files.sh Implement sysprop_library API stability check 2019-08-23 06:28:34 +00:00
gen-java-current-api-files.sh java_sdk_library: Allow api dir to be specified 2020-01-02 15:38:42 +00:00
gen-kotlin-build-file.py Move gen-kotlin-build-file.sh to python 2020-06-26 22:41:34 -07:00
gen-sysprop-api-files.sh Implement sysprop_library API stability check 2019-08-23 06:28:34 +00:00
gen_ndk_backedby_apex.sh Pass list of module libraries to gen_ndk_backed_by_apex.sh 2021-02-08 16:52:07 -08:00
gen_ndk_usedby_apex.sh NDK API coverage 2021-03-25 22:12:04 +00:00
generate-notice-files.py Make a soong-only copy of generate-notice-files.py 2020-03-03 13:50:53 -08:00
get_clang_version.py [scripts] Add script to print clang prebuilts version 2021-06-25 11:57:16 -07:00
get_clang_version_test.py [scripts] Add script to print clang prebuilts version 2021-06-25 11:57:16 -07:00
jar-args.sh Add license headers to all go and shell files 2017-11-17 23:05:26 +00:00
jar-wrapper.sh Allow jar wrapper to take quoted arguments 2019-07-16 11:12:04 -07:00
jars-to-module-info-java.sh Add license headers to all go and shell files 2017-11-17 23:05:26 +00:00
jsonmodify.py Output json without trailing whitespaces but with trailing newlines. 2020-02-24 22:20:49 +00:00
lint_project_xml.py Fix minor issues in updatability lint CLs. 2021-04-22 13:40:41 -07:00
lint_project_xml_test.py Add lint_project_xml_test.py 2021-04-20 11:04:51 -07:00
manifest.py Optionally overwrite package value in test config. 2019-12-05 11:17:09 -08:00
manifest_check.py manifest_check.py: trim namespace part of the module, if needed. 2021-07-20 14:30:40 +01:00
manifest_check_test.py manifest_check.py: trim namespace part of the module, if needed. 2021-07-20 14:30:40 +01:00
manifest_fixer.py manifest_fixer: Set targetSdkVersion to '16' for libraries 2021-01-14 14:11:39 -06:00
manifest_fixer_test.py manifest_fixer: Set targetSdkVersion to '16' for libraries 2021-01-14 14:11:39 -06:00
mergenotice.py Make a soong-only copy of generate-notice-files.py 2020-03-03 13:50:53 -08:00
microfactory.bash Upgrade to golang protobuf api v2 2021-07-23 11:12:05 -07:00
ninja_rsp.py Move gen-kotlin-build-file.sh to python 2020-06-26 22:41:34 -07:00
OWNERS Update dex_preopt related OWNERS 2021-06-17 17:05:39 +01:00
package-check.sh Ensure package check is run for java_library in APEX 2020-05-28 15:06:35 +01:00
rbc-run Wrapper script to use Starlark-based configuration 2021-06-14 15:52:08 -07:00
reverse-deps.sh Scripts to evaluate dependency transitive closures. 2020-03-10 21:53:39 +00:00
rustfmt.toml Add standard rustfmt.toml 2020-06-22 13:34:59 +02:00
setup-android-build.sh Script to set up android build directory 2020-01-30 19:18:54 -08:00
setup_go_workspace_for_soong.sh Upgrade to golang protobuf api v2 2021-07-23 11:12:05 -07:00
strip.sh Use create_minidebuginfo tool instead of bash script. 2021-05-01 00:06:07 +01:00
system-clang-format system-clang-format: Add Standard: Cpp11 2019-07-10 15:04:04 -07:00
system-clang-format-2 system-clang-format: Add Standard: Cpp11 2019-07-10 15:04:04 -07:00
test_config_fixer.py Overwrite test-file-name in test config. 2020-01-17 06:08:12 -08:00
test_config_fixer_test.py Overwrite test-file-name in test config. 2020-01-17 06:08:12 -08:00
toc.sh Fix toc.sh, llvm-nm does not recognise '-f P' option 2021-04-03 03:21:24 +08:00
transitive-deps.sh Minor tweaks to usage message. 2020-06-24 08:18:15 -07:00
unpack-prebuilt-apex.sh Export dex implementation jars from prebuilt_apex 2021-01-15 18:14:10 +00:00