summaryrefslogtreecommitdiff
path: root/java/platform_bootclasspath.go
AgeCommit message (Collapse)Author
2021-07-06Generate boot images for host from prebuiltsPaul Duffin
Previously, when building from prebuilts boot no rules were created to produce the boot image files for the host, i.e. the OS on which the build was running. That caused problems with checkbuilds. No rules were produced as there was no host variant of a prebuilt apex to provide them. This change restructures the code to allow the prebuilt bootclasspath fragment to build the host variants of the files from the dex files provided by the prebuilt APEX. The generated files will not be the same as they would be if built from source as there is no boot image profile to use but it should be sufficient to satisfy the checkbuild target and allow for host side testing. Bug: 192575099 Test: m SOONG_CONFIG_art_module_source_build=false droid dist checkbuild Merged-In: I6af00f19bb71aa18dd462f5eac6aa38e3e721023 Change-Id: I6af00f19bb71aa18dd462f5eac6aa38e3e721023 (cherry picked from commit a56be7d7815ad164cdd854f8fc6b1cbc3bbf1918)
2021-07-06Generate boot zip file from prebuilt_bootclasspath_fragmentPaul Duffin
Previously, the boot zip file, containing all the boot image files for all the supported architectures, was only created from source. It was not created when building from a prebuilt_bootclasspath_fragment. That lead to build failures when building from ART prebuilts. This change pulls the boot zip file creation out so that it can be done for both source and prebuilt bootclasspath_fragment modules as well as for the platform_bootclasspath module. Bug: 192575099 Test: m out/target/product/generic_arm64/boot.zip m SOONG_CONFIG_art_module_source_build=false out/target/product/generic_arm64/boot.zip - Compare the output of the first command from before the change with the output from them both after and confirm that when the ART prebuilts are up to date with the source that there are no differences. Merged-In: Ie7dd5e2ca4a865d06fd9ebf87320cf68c4d05bc3 Change-Id: Ie7dd5e2ca4a865d06fd9ebf87320cf68c4d05bc3 (cherry picked from commit 56afb27fb099cb79c1537c661628db1776f1fcc3)
2021-06-25Verify the modular stub flags are subsets of the monolithic stub flagsPaul Duffin
Bug: 179354495 Test: m out/soong/hiddenapi/hiddenapi-stub-flags.txt - check that an error is reported if a modular stub-flags.csv file, i.e. one created by a fragment is not a subset of the monolithic file, e.g. because a signature in the modular file has different flags than it does in the monolithic or is not present there. Merged-In: I46ebb495cb093a5e3abe7571c49933c845318549 Change-Id: I46ebb495cb093a5e3abe7571c49933c845318549 (cherry picked from commit 2e880971528cd4a2d93062072c7d8e9ff7998ade)
2021-06-25Make ruleToGenerateHiddenAPIStubFlagsFile build rulePaul Duffin
Previously, the func created a rule and returned it for the caller to create with the appropriate name and description. This change passes the name and description into the func and causes it to create the rule itself. The func is also renamed to make it more consistent with the other similar rules. Bug: 179354495 Test: m nothing Merged-In: I2a4455daa8a6090ed5568994b255848d063e1ab2 Change-Id: I2a4455daa8a6090ed5568994b255848d063e1ab2 (cherry picked from commit 4539a37a617ecfd5abc11697ed0d15370db6492b)
2021-06-25Add HiddenAPIScope to replace use of SdkKindPaul Duffin
Previously, the hidden API processing used SdkKind to identify the API scopes, e.g. public, system, etc. that are of interest for hidden API processing. Unfortunately, there is a mismatch between the SdkKind and what hidden API processing needs. e.g. SdkKind includes values that are not used by hidden API processing and hidden API processing needs additional API scope specific information not provided by SdkKind. The apiScope struct used in sdk_library.go is also not a suitable representation for similar reasons. This change adds the HiddenAPIScope (following a similar approach as apiScope) that rectifies that and uses it as a replacement for SdkKind in most parts of the hidden API processing. The SdkKind is still used for retrieving information from java_sdk_library[_import] modules. Follow up changes will extend the HiddenAPIScope with more information. Bug: 179354495 Test: m out/soong/hiddenapi/hiddenapi-flags.csv - make sure that this change has no effect on the generated flags. Merged-In: I97968f58535121652852b8d25217aa288afd2bfd Change-Id: I97968f58535121652852b8d25217aa288afd2bfd (cherry picked from commit 31fad800a7a44ef2edda5d4051335f28d514139a)
2021-06-22Fix monolithic hidden API processing with prebuiltsPaul Duffin
Prebuilt modules do not provide classesJars containing annotations. Previously, the monolithic hidden API processing just used classesJars from all the modules that provided them so when building against prebuilts would have fewer classesJars than when building against sources and so would produce different hidden API flags. This change will generate the monolithic files from both classesJars and files previously generated from hidden API processing. A fragment that has performed hidden API processing will contribute its generated files whereas standalone libraries and fragments which have not performed hidden API processing will contribute classesJars. Bug: 177892522 Test: m out/soong/hiddenapi/hiddenapi-flags.csv m SOONG_CONFIG_art_module_source_build=false out/soong/hiddenapi/hiddenapi-flags.csv - verify that the files are identical whether built from source or prebuilts. Merged-In: I06f3c7df49626bec21a452bc9abf1bb9e7545e5c Change-Id: I06f3c7df49626bec21a452bc9abf1bb9e7545e5c (cherry picked from commit d061d40eb6ffbc9d7cece2945b7276fe2f6759d1)
2021-06-22Use classpath elements in platform_bootclasspathPaul Duffin
Use classpath elements in newMonolithicHiddenAPIInfo. That means the method can collate information from both fragments and libraries rather than just fragments. So, this change moves the collation of the classesJars into the method. Bug: 177892522 Test: m out/soong/hiddenapi/hiddenapi-flags.csv out/soong/hiddenapi/hiddenapi-index.csv - make sure that this change does not affect the contents. Merged-In: I7c2a229fab60d02bd211438735a8d7303ed83386 Change-Id: I7c2a229fab60d02bd211438735a8d7303ed83386 (cherry picked from commit 89f570ac44af4bcf5b78fa8dad3d57f24cd3ca0e)
2021-06-22Fix bootDexJarByModule with UNSAFE_DISABLE_HIDDENAPI_FLAGSAdrian Roos
Fixes: 191652687 Test: UNSAFE_DISABLE_HIDDENAPI_FLAGS=true m Change-Id: I7d85340681e54fbd0da69596b6846eb446c6ec6d Merged-In: I7d85340681e54fbd0da69596b6846eb446c6ec6d (cherry picked from commit e95a15e7c791028365f8360ad8915a851f09a3f0)
2021-06-18Move boot jars package check into platform_bootclasspathPaul Duffin
Bug: 177892522 Bug: 189298093 Test: m check-boot-jars m SOONG_CONFIG_art_module_source_build=false check-boot-jars - Ran both commands with and without java.lang in the package_allowed_list.txt Merged-In: Iba1a881c8f6b6919d5c0c0520eb3073658f3b8d2 Change-Id: Iba1a881c8f6b6919d5c0c0520eb3073658f3b8d2 (cherry picked from commit c8ead41ba9426a31c8ca3d7228991a45ccff6299)
2021-06-18Combine hidden API encoding with flag generationPaul Duffin
Previously, the rules to perform hidden API encoding were generated separately to the rules to perform hidden API flag generation. This change combines them within the (renamed) produceHiddenAPIOutput() method and makes the paths to the encoded dex files an output of the generateHiddenAPIBuildActions method alongside the paths to the generated flag files. As encoded dex jars are now an output of the produceHiddenAPIOutput() method which is implemented for both prebuilts and source bootclasspath_fragment modules that necessitated the prebuilt also providing paths to encoded dex files. That in turn required updates to some of the tests to provide dex files from prebuilt_apex modules. Similarly, as the produceHiddenAPIOutput() method may not be called for some bootclasspath_fragment modules as they do not yet provide all the information needed to perform hidden API encoding then it is necessary to extract the encoded dex files produced by the modules themselves. That also required a few changes to tests that did not previously provide dex files. Bug: 177892522 Test: m com.android.art - check that this change does not change the contents of the apex file, i.e. is byte-for-byte identical. Merged-In: I60996a34d06ed1c87ed244ab3509621999ad86ec Change-Id: I60996a34d06ed1c87ed244ab3509621999ad86ec (cherry picked from commit e521881bd45de0306bc2e80d5c746ae361d6ffe2)
2021-06-16Avoid passing around []hiddenAPIModulePaul Duffin
Previously, an []android.Module was converted to an []hiddenAPIModule that was then used to retrieve boot dex jars. That was ok when obtaining the dex jar files from source modules for bootclasspath_fragment but does not work well for other use cases as it would require doing that conversion in multiple places. This change pushes the use of hiddenAPIModule down to the methods that retrieve information from it which makes the methods more flexible and easier to reuse. Bug: 177892522 Test: m nothing Change-Id: Ib84aaf03d8f5a63b48232036fe4589646fc23352 Merged-In: Ib84aaf03d8f5a63b48232036fe4589646fc23352 (cherry picked from commit dd5993f6d41efa932c06afef71c40af446c85b4e)
2021-06-16Make copyBootJarsToPredefinedLocations simpler and less fragilePaul Duffin
Previously, copyBootJarsToPredefinedLocations relied on all its parameters having the same length and the same order. That made it quite fragile as changes to one of the parameters without corresponding changes to the other would cause failures. It also combined the retrieval of the boot dex jars from the modules, handling of missing boot dex jar files and the generation of the rules to copy the files. This change separates the retrieval of boot dex jars and handling of missing files from the copying of those files while at the same time making the function less fragile by replacing the three ordered parameters with two maps that shared common keys. Bug: 179354495 Test: m nothing Merged-In: Idbcd24a7e8af89f7895a20aeddc58502dcbaad03 Change-Id: Idbcd24a7e8af89f7895a20aeddc58502dcbaad03 (cherry picked from commit 5f148ca7cf2e9a9478922577b7ed70b1caacb55e)
2021-06-16Export hidden api related types and fieldsPaul Duffin
This will export some hidden api related types and fields so they can be used from outside the java package. This is needed to allow a follow up change to move the TestPlatformBootclasspath_Fragments from the java to the apex package. Bug: 179354495 Test: m nothing Merged-In: Ib69eea9d79cc83b8e3fc29919a29f071e1ec17b5 Change-Id: Ib69eea9d79cc83b8e3fc29919a29f071e1ec17b5 (cherry picked from commit 524c82c01acbd1f45a401d3444354cd69dd342e3)
2021-05-25Revert "Partial Revert "Populate individual classpath_fragments'..."Artur Satayev
Revert submission 14717811-revert-populate-platform-bootclasspath Reason for revert: retry with a fix Reverted Changes: Ib58cd0211:Revert "Add bootclasspath_fragments to platform-bo... I13b622d6c:Partial Revert "Populate individual classpath_frag... Bug: 180105615 Test: atest sdkextensions_e2e_tests Change-Id: I7b6b6b980a4c6430a70394e85222f3b35c4efd5f
2021-05-25Merge "Partial Revert "Populate individual classpath_fragments' ↵Anton Hansson
classpaths.prot..."" into sc-dev
2021-05-25Partial Revert "Populate individual classpath_fragments' classpaths.prot..."satayev
Reason for revert: test breakage b/189114287 Bug: 180105615 Bug: 189114287 Test: atest sdkextensions_e2e_tests Change-Id: I13b622d6c61ea392bfcc8a40535045c87fa3a7b5
2021-05-24Support removed API members in modular hidden API processingPaul Duffin
Previously, the hidden API flags generated for a bootclasspath_fragment did not include removed API members. That was because it did not supply a file containing the dex signatures of the removed API members. The monolithic hidden API processing uses combined-removed-dex which is the output of a genrule that takes as input the *removed.txt files from all the APIs and uses metalava to construct the dex signatures file. This change does the equivalent for the *removed.txt files for the APIs provided by a bootclasspath_fragment and then passes them to the rule that generates the final all-flags.csv. Bug: 179354495 Test: - Update packages/modules/RuntimeI18N to enable hidden API processing. m out/soong/hiddenapi/hiddenapi-flags.csv - Before this change that fails as the flags generated for the i18n-bootclasspath-fragment differ from the monolithic flags. After this change that passes. - Verify that this change does not change any of the monolithic hidden API files. m com.android.i18n - Verify that the apex file before and after this change are byte for byte identical. Merged-In: I6a21edb8a5231666e3f35b2c99a8687f36dd98fd Change-Id: I6a21edb8a5231666e3f35b2c99a8687f36dd98fd (cherry picked from commit 32cf58a8fcfc043246a9c402b32c863e8aebc499)
2021-05-24Separate input to flag generation from hiddenAPIFlagFileInfoPaul Duffin
Encapsulating the information needed by hidden API processing in a struct makes it easy to add additional information in future and allows the code to populate that struct from various different sources to be grouped together. Bug: 179354495 Test: m com.android.art com.android.ipsec com.android.os.statsd com.android.conscrypt - verify that this does not change the contents of the apex files Merged-In: I53805737dff36a3ae87aca5aad51cf46ae1361fe Change-Id: I53805737dff36a3ae87aca5aad51cf46ae1361fe (cherry picked from commit 1352f7c4715d3d311a2644b9337e4b1028d82cb0)
2021-05-24Separate monolithic hidden API processing from hiddenAPIFlagFileInfoPaul Duffin
The hiddenAPIFlagFileInfo was being used for both the input and output of bootclasspath_fragment and platform_bootclasspath and also to pass information around to various hidden API rule methods. Supporting multiple different uses in this way made it hard to reason about. This change creates a separate structure for use by the platform_bootclasspath. Follow up changes will split out other functionality into separate types. Bug: 179354495 Test: m com.android.art com.android.ipsec com.android.os.statsd com.android.conscrypt - verify that this does not change the contents of the apex files Merged-In: Ia5c5f65ae5645486c42819c669a8601588217f88 Change-Id: Ia5c5f65ae5645486c42819c669a8601588217f88 (cherry picked from commit 438eb57a2744b9b0bd38a5526e67cacf43c42b31)
2021-05-21Merge changes I4e7a7ac5,I0c73361b into sc-devMartin Stjernholm
* changes: Record the actual APEXes that a module is part of. Rename InApexes -> InApexVariants
2021-05-20Populate individual classpath_fragments' classpaths.proto configs.satayev
To avoid duplicates on *CLASSPATH environ variables at runtime, remove split entries from platform-*classpath, i.e. all updatable jars that have their own classpath fragments should not appear in the platform-*classpath's classpaths.proto config. Bug: 180105615 Test: m && launch_cvd; atest CtsClasspathsTestCases Change-Id: Id2759ab8e106cc183e695bf3509a6ab60ab0ef2a
2021-05-20Rename InApexes -> InApexVariantsJiyong Park
.. in preparation for the upcoming change. This change doesn't alter any behavior. InApexes is a misleading name. People expects that it has the list of soong module names of the APEXes that a module is part of. So, for example, `core-oj` is a part of both `com.android.art` and `com.google.android.art`. However, in reality, that's not true. The field has `com.android.art` only. This is because the two APEXes (android and Google) have the same apex name which is `com.android.art`. That apex name is used in various places like the `apex_available` and allows us to keep using the same name regardless of whether the APEX is overridden or not. However, this is causing problems in some cases where the exact list of soong module names is required. The upcoming change will add a new field to handle the case and the new field actually will get the name 'InApexes'. So, the existing field is renamed to a less misleading name `InApexVariants`. Cherry-picked from https://r.android.com/1710528. Bug: 180325915 Test: m nothing Change-Id: I0c73361b452eddb812acd5ebef5dcedaab382436 Merged-In: I0c73361b452eddb812acd5ebef5dcedaab382436
2021-05-19Workaround to make AlwaysUsePrebuiltSdks() work with platform_bootclasspathPaul Duffin
The AlwaysUsePrebuiltSdks() causes all java_sdk_library_import modules to be preferred over the source, i.e. as if they had prefer: true set. That interacts badly with the work that is being done to integrate the bootclasspath_fragment/platform_bootclasspath modules into the build. It would work fine once that integration has been completed but in the interim it causes problems. e.g. it does not cause a problem in AOSP because those java_sdk_library_import modules that are affected have already been integrated into the build properly. Unfortunately, internally that is not the case because there are java_sdk_library/java_sdk_library_import modules that still need to be updated. Before the java_sdk_library_import can be safely preferred each java_sdk_library/java_sdk_library_import module that contributes to the bootclasspath must: * Be in the contents of matching bootclasspath_fragment and prebuilt_bootclasspath_fragment modules. * Have an apex and one of a prebuilt_apex/apex_set that contains the dex implementation jar and lists the prebuilt_bootclasspath_fragment name in its exported_bootclasspath_fragments property. Safely preferred in this context means that the whole build will continue to work rather than the current situation which is that only some of the build will work and some will fail if an attempt is actually made to build it. Unfortunately, many java_sdk_library_import modules are missing: * The prebuilt_bootclasspath_fragment. * The exported_bootclasspath_fragments property on the prebuilt_apex/apex_set that contains them. Together these cause the following symptoms: 1. The java_sdk_library_import does not have a dex implementation jar. 2. The java_sdk_library_import does not have a myapex variant. These workarounds will avoid Soong reporting build failures. However, the build will still fail if an attempt is made to build anything produced by the platform-bootclasspath, e.g. hidden API processing or a system image. Bug: 188505921 Bug: 179354495 Test: m TARGET_BUILD_APPS=Calendar Change-Id: I3226e21cd6a7f9e4d6bbe94e54129ac5e1d4c679
2021-05-14Generate monolithic hidden API files direct from class jarsPaul Duffin
Previously, the monolithic hidden API files, e.g. hiddenapi-index.csv file, were generated in two steps. First, each module created its own files using the information in its class jars. Then, the monolithic files were created by merging those module specific files into a larger file. This change switches to generating the monolithic files directly from the class jar files and bypassing the intermediate files. In order to ensure that this change did not change the monolithic files it is necessary for the hiddenapi-metadata.csv to go through a reformatting step. Hopefully, this will be able to be removed in a follow up change. Bug: 179354495 Test: verified that the monolithic out/soong/hiddenapi/... files are unchanged by this change Change-Id: I5a78e747516014b7c0f402a4b4431b14be6a84b2
2021-05-14Use java_sdk_library in bootclasspath_fragment contents as stubsPaul Duffin
A java_sdk_library specified in the bootclasspath_fragment contents must be providing APIs for the bootclasspath_fragment and so must be treated as if they were specified in the stub_libs. This avoids having to specify them in both contents and stub_libs. Bug: 179354495 Test: m nothing Change-Id: I535065ee1a79b439e2676f35e06a75d4626adcaf
2021-05-14Generate hidden API flags for a bootclasspath_fragmentPaul Duffin
This change adds support for generating the hidden API flags for the contents of a bootclasspath_fragment. Currently, it will only work for the art-bootclasspath-fragment as it has no support for creating dependencies between bootclasspath_fragment modules which will be needed for handling any other bootclasspath_fragment. The hidden API flag generation added by this change is completely separate to the normal hidden API processing and is not as yet encoded in dex jars so will have no effect on the runtime. The generated files are provided for use by other modules and copied into the sdk snapshot. That is needed to allow the build to verify that the hidden API flags generated by the individual bootclasspath_fragment modules are consistent with the flags generated for the whole bootclasspath, whether building from source or prebuilts. Bug: 179354495 Test: m art-module-sdk m out/soong/.intermediates/art/build/boot/art-bootclasspath-fragment/android_common_apex10000/modular-hiddenapi/all-flags.csv m out/soong/hiddenapi/hiddenapi-flags.csv - test that the former file is a subset of the latter and that where they overlap they are identical. Change-Id: Ie27303e2960953db1b7abe95510e3bca4411b09a
2021-05-12Build boot images in bootclasspath_fragment/platform_bootclasspathPaul Duffin
Moves the building of boot images from the dexpreopt_bootjars singleton to the bootclasspath_fragment and platform_bootclasspath. The art boot image is generated by the art-bootclasspath-fragment module and the framework boot image by the platform-bootclasspath module. This does temporarly duplicate the generation of an identical boot profile for each image. As part of the work to modularize the boot image profile each image will have its own custom default boot profile. Bug: 177892522 Bug: 186455808 Test: m droid and TreeHugger Change-Id: I23cf05ec7648749b21c7cf6fcba282b46649a981
2021-05-12Move copying of dex files from dexpreopt_bootjars singletonPaul Duffin
The art dex files are copied in the bootclasspath_fragment and the non-updatable and updatable dex files are copied in the platform_bootclasspath. Bug: 177892522 Test: m nothing Change-Id: I5d3d533d1a7a9f8e7ae20c12eb33029a898a2cd6
2021-05-11Generate empty classpaths.proto for bootclasspath_fragment.go.satayev
- Adds all required details for bootclasspath_fragment to implement classpath_fragment. - Keeps the actual boot jars in platform-bootclasspath to begin with. - Makes sure to put the file in apex/etc/classpath on device. Note that for platform versions of classpath fragment AndroidMkEntries perform the installation, while for APEXes it must be plumbed via apex.go. Bug: 180105615 Test: m && launch_cvd; atest CtsClasspathsTestCases Change-Id: I6101ebdf5b8bcbe95c0b7ce21f3f67a2685aef50
2021-05-07Declare ConfiguredJarList in specific fragment implementations.satayev
Each specific classpath_fragment module knows what jars must be part of the corresponding classpaths.proto config. Note that bootclasspath_fragment does not implement classpath_fragment yet, thus all boot jars and all system server jars go into corresponding platform classpaths. Bug: 180105615 Test: m && launch_cvd; atest CtsClasspathsTestCases Change-Id: I6a8c7b0a5d17d62e790a441b8e2c5c1a816e7f30
2021-05-07Split SYSTEMSERVERCLASSPATH entries from platform_bootclasspath.satayev
Boot jars are different to system server jars at build level, due to added complexity of dexpreopt. As a logical separation add a new classpath fragment type and split existing classpaths.proto generation into relevant pieces. Bug: 180105615 Test: m && launch_cvd; atest CtsClasspathsTestCases Change-Id: I88bec09fc920166ffd0092faef980754ddeb6593
2021-05-06Rename classpath_fragment.go methods for better readability.satayev
Bug: 180105615 Test: m nothing Change-Id: Ic663c22e5b7cbab487dc1fe99805e08843c3213d
2021-05-04Support dex_import on platform_bootclasspathPaul Duffin
Maintain compatibility with previous behavior by ignoring dex_import during hidden API processing. Bug: 179354495 Test: m nothing Change-Id: I976b02129bf981b7b61dce233567d6f89e04f92d
2021-04-30Merge "Fix build failure when building unbundled apps (second try)"Paul Duffin
2021-04-30Fix build failure when building unbundled apps (second try)Paul Duffin
The previous attempt, which simply skipped the hidden API processing altogether when unbundled builds were enabled failed when attempting to build module snapshots as while they enabled an unbundled build they actually need the hidden API processing to be performed. This change just checks whether missing dependencies are allowed and if so it fakes up any missing files so that the build will only fail if they are not present AND they are used. Bug: 186695448 Bug: 185828824 Test: tapas Calendar m -j60 Change-Id: Ie13fed05af0aba51f45f6791fce944d0e4285037
2021-04-30Move configuration checks from getBootImageJarPaul Duffin
The getBootImageJar function will be removed once the boot image creation has been moved to the platform_bootclasspath and bootclasspath_fragment module types. However, the consistency checks that it performs are still useful so this change moves them out first. The ART boot image related checks are now performed in the bootclasspath_fragment module type. A previous change accidentally disabled the checks when the contents property was not empty which has been fixed. Also, the error messages have been tweaked to make it clear that the art-bootclasspath-fragment is now the source of truth as to its contents not the configuration. The framework boot image related checks are now performed in the platform_bootclasspath module type. Initially, this change included an extra check to make sure that UpdatableBootJars comes from updatable APEXes but that broke because framework-wifi and framework-tethering are not currently marked as updatable in AOSP. Bug: 177892522 Test: m nothing Change-Id: I80fb600fa2c7cec4566b3461c6a33c4c6f0743f4
2021-04-30Merge "Revert "Fix build failure when building unbundled apps""Treehugger Robot
2021-04-30Revert "Fix build failure when building unbundled apps"Vishnu Nair
This reverts commit c027119e73e9a211b7d2c1cafc978a750f11e920. Reason for revert: b/186797512 Test: vendor/google/build/build_mainline_modules.sh -j80 Change-Id: I2bb062cce09ac6717702c4f6b110acbb2887adec
2021-04-29Merge "Fix build failure when building unbundled apps"Paul Duffin
2021-04-29Fix build failure when building unbundled appsPaul Duffin
Bug: 186695448 Bug: 185828824 Test: tapas Calendar m -j60 Change-Id: I1c5365f6d2afb2f2d159e6f6ed004647ec6d2427
2021-04-29Move generation of hidden API make vars to platform_bootclasspathPaul Duffin
Bug: 179354495 Test: rm out/soong/make_vars* m nothing grep INTERNAL_PLATFORM_HIDDENAPI_FLAGS out/soong/make_vars* - make sure it is still out/soong/hiddenapi/hiddenapi-flags.csv Change-Id: I86e56512a9a2091f446bad25294d41ea1f4341ee
2021-04-29Make platform_bootclasspath a singleton modulePaul Duffin
This is needed in order to allow it to implement MakeVars so it can create make variables just like the dexpreopt_bootjars and hiddenapi singletons currently do. Bug: 177892522 Bug: 179354495 Test: m nothing Change-Id: Ida5bf8abeecde531e1f6430151650065445804ac
2021-04-29Move dumpOatRules to platform_bootclasspathPaul Duffin
Bug: 177892522 Test: m oat-dump-boot - test output to make sure that this change does not change the generated files, at least no more than no changes do as the output from this rule is not deterministic. See b/186459873. Change-Id: Ib2b4203d9bb1fd0ee9443aee4e58b54b38b491cf
2021-04-29Move generateUpdatableBcpPackagesRule to platform_bootclasspathPaul Duffin
Changes generateUpdatableBcpPackagesRule to use ModuleContext instead of SingletonContext and moves the call from dexpreoptBootJar's GenerateSingletonBuildActions method to platform_bootclasspath's GenerateAndroidBuildActions. Bug: 177892522 Test: lunch art_module_arm64 m out/soong/module_arm64/dex_bootjars/updatable-bcp-packages.txt - make sure it is not affected by this change Change-Id: I9741ae1eb9573cafe12dd7a17dc1d8449b224dc8
2021-04-29Differentiate between art, non-updatable and updatable modulesPaul Duffin
Bug: 177892522 Test: lunch art_module_arm64 m out/soong/module_arm64/dex_bootjars/updatable-bcp-packages.txt - make sure it is not affected by this change Change-Id: I3d35f1664cbbaba5df3f5809859dd9815a26d05d
2021-04-29Extract logic to gather deps added for <apex>:<module> pairsPaul Duffin
Trades having to traverse a module's direct dependencies multiple times for reusable code. While at the minute the amount of duplicated code is small (checking a tag and appending to a list) follow up changes will modify the gatherApexModulePairDepsWithTag module to improve error reporting greatly increasing the benefit of deduping. The cost of traversing a module's direct dependencies is very small as there will be only a very few dependencies. Bug: 177892522 Test: m nothing Change-Id: I16389102abd8038e1bfa52b63f4153bdf92ff553
2021-04-28Move bootFrameworkProfileRule to platform_bootclasspathPaul Duffin
Changes bootFrameworkProfileRule to use ModuleContext instead of SingletonContext and moves the call from dexpreoptBootJar's GenerateSingletonBuildActions method to platform_bootclasspath's GenerateAndroidBuildActions. Changing the context also allows the code to switch from bootFrameworkProfileRule to GetGlobalSoongConfig. Also extracts the shouldBuildBootImages function so it can be used by platform_bootclasspath to preserve the existing behavior. Bug: 177892522 Test: m droid Change-Id: I30d3ca10be7f84348ad3aa9cc984dd15b8f6f4e9
2021-04-25Remove unused setting of BootImageInfo for platform_bootclasspathPaul Duffin
The BootImageInfo is used to populate an apex. A platform_bootclasspath module cannot be part of an apex so does not need to provide one. Bug: 177892522 Test: m nothing Change-Id: I1e1c4962d9d8106a12af80107c4c35828f54ff81
2021-04-23Generalize the platformBootclasspathDepsMutatorPaul Duffin
Adds a BootclasspathDepsMutator that is currently only implemented by the platform_bootclasspath but which can be implemented by bootclasspath_fragment too. Bug: 177892522 Test: m nothing Change-Id: Ibe35854281004d6e40bf1f797144fb582e8c08b9
2021-04-23Extract general bootclasspath related code into java/bootclasspath.goPaul Duffin
The platform_bootclasspath and bootclasspath_fragment modules provide different capabilities but are related and so have some common functionality. This change moves some platform_bootclasspath code that will be of use for bootclasspath_fragment in future into a separate file. Bug: 177892522 Test: m nothing Change-Id: I827b85e33d16155fcc920d553100c9e99267dc4e