aboutsummaryrefslogtreecommitdiff
path: root/java/classpath_fragment.go
Commit message (Collapse)AuthorAgeFilesLines
* Use source_module_name to determine the contents of prebuilt apexesSpandan Das2024-02-061-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are a couple of instances in apex/ and java/ that rely on the naming convention that the jars exported by prebuilt apexes follow the name of the java_sdk_library_import, minus the prebuilt_ prefix. With muliple module sdk prebuilts in trunk stable, this naming convention might not be valid. Use `source_module_name` instead. ``` prebuilt_sscp_fragment {name: "", contents: ["service-foo.v2"]} java_import {name: "service-foo.v2", source_module_name: "service-foo"}, ``` We should use service-foo and not service-foo.v2 because 1. The prebuilt apex contains service-foo.dex 2. PRODUCT_*JARS will contain service-foo and not service-foo.v2 For clarity, this CL does not drop the current mechanism where prebuilt bcp fragments create a dependency edge to prebuilt java or java_sdk_library imports. There is still some discussion around whether we can remove that completely (b/320711431). If we were to do that, then the Android.bp files will become ``` prebuilt_sscp_fragment {name: "", contents: ["service-foo"]} ``` Bug: 322175508 Test: Added a unit test Test: In internal, lunch cf_x86_64_only_phone-next-userdebug && m nothing # .ninja files identical Test: In internal, created a parallel set of v2 prebuilts of java_sdk_library_import and prebuilt_bcp_fragments for adservices && m nothing # build passes Change-Id: Ia899d75e826fa1a559368d706eaa65835f748d40
* Convert SetProvider to generic providers APIColin Cross2023-12-141-1/+1
| | | | | | | | | Convert all of the callers of SetProvider to use the type-safe android.SetProvider API. Bug: 316410648 Test: builds Change-Id: If58f4b5355264ddab2045bc3591a4eac19cd58fc
* Convert NewProvider/NewMutatorProvider to generic providers APIColin Cross2023-12-141-1/+1
| | | | | | | | | Convert all of the callers to NewProvider and NewMutatorProvider to use a generic type parameter instead of an example object. Bug: 316410648 Test: builds Change-Id: Ic9cdafc87336e26730d3fd596df05de0e7267542
* Update max_sdk_version from SdkSpec to ApiLevelSpandan Das2023-03-231-3/+3
| | | | | | | | | | | | | max_sdk_version signifies device version and does not need an sdkKind to describe it fully. Update the type and cleanup existing usages. As a side benefit, we also get better error handling since users can no longer enter something like `public_30` as a valid max_sdk_version in bp files Bug: 208456999 Test: no change in ninja file (this should be a no-op) Test: TH Change-Id: I304b5ad802bde200137d8e225182828dfd6f7227
* Update min_sdk_version from SdkSpec to ApiLevelSpandan Das2023-03-221-3/+3
| | | | | | | | | | | This relands aosp/2457063. The original change broke T and U since those branches still contain soong modules of type (kind+level). Those soong modules have been cleaned up now Test: Used go/abtd to test T and U branches with this change Bug: 208456999 Change-Id: I0ef7933c055f88cb512a02108f1173e51156ef1c
* Revert "Update min_sdk_version from SdkSpec to ApiLevel"Spandan Das2023-03-211-3/+3
| | | | | | | | | | Revert submission 2457063 Reason for revert: Broken udc-dev Reverted changes: /q/submissionid:2457063 Change-Id: Id6349fc1318877044af713c914a0afd437d3d2d5
* Update min_sdk_version from SdkSpec to ApiLevelSpandan Das2023-03-201-3/+3
| | | | | | | | | | | | | | | | | min_sdk_version signifies device version and does not need an sdkKind to describe it fully. Update the type and cleanup existing usages. As a side benefit, we also get better error handling since users can no longer enter something like `public_30` as a valid min_sdk_version in bp files Will do a similar cleanup for targetSdkVersion and maxSdkVersion in a followup CL Test: m nothing Test: no change in ninja files (this should be a no-op) Bug: 208456999 Change-Id: Ie6ae7e267d093c5e4787e82685daaca1021d202e
* Replace SortedStringKeys with SortedKeysCole Faust2023-02-281-1/+1
| | | | | | | | Now that we have generics. Bug: 193460475 Test: presubmits Change-Id: I1594fd8feb505175d5c09c03ef397e5ffd5b09cb
* build/soong - support the REL platform version in classpathYurii Zubrytskyi2022-05-061-2/+2
| | | | | | | | | Make sure we select the proper API level number for the REL platform version when generating the classpath protos Bug: 231272086 Test: build + boot emulator Change-Id: Ib3b711dc05dd6136a68e6de414d806687a849bc9
* Remove InstallBypassMake and ToMakePathColin Cross2021-12-151-1/+1
| | | | | | | | InstallBypassMake and ToMakePath are obsolete, remove them. Bug: 204136549 Test: m checkbuild Change-Id: Ie5a6f7254b3d317ed6039e114ed6aec35e1ce273
* Merge "Use textproto format for classpaths.proto generation."Artur Satayev2021-12-021-34/+12
|\
| * Use textproto format for classpaths.proto generation.satayev2021-12-011-34/+12
| | | | | | | | | | Test: presubmit Change-Id: I3fea94153939f05329f02091ca4fa838ee9df93f
* | Merge changes Ieb9aef29,I6985ebb6Artur Satayev2021-12-021-6/+43
|\| | | | | | | | | | | * changes: Propagate min and max sdk versions to classpaths.proto configs. Introduce max_sdk_version device property.
| * Propagate min and max sdk versions to classpaths.proto configs.satayev2021-12-011-6/+43
| | | | | | | | | | | | | | | | | | | | These attributed define a range for dessert releases where the jars should be active, and included in corresponding CLASSPATH varibles by derive_classpath. Bug: 190818041 Test: presubmit Change-Id: Ieb9aef29657ad0694d48a63019f93faca2678252
* | Add entries for STANDALONE_SYSTEMSERVER_JARS to systemserverclasspath.pbJiakai Zhang2021-11-301-3/+4
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This CL updates platform_systemserverclasspath, systemserverclasspath_fragment, and prebuilt_systemserverclasspath_fragment to write entries for STANDALONE_SYSTEMSERVER_JARS to systemserverclasspath.pb. A new property `standalone_contents` is aded to `systemserverclasspath_fragment` and `prebuilt_systemserverclasspath_fragment` to list the standalone system server jars in the APEX, and entries will be written to systemserverclasspath.pb accordingly at build time. To add more context, these entries will be consumed by derive_classpath in order to generate an environment variable PRODUCT_STANDALONE_SYSTEM_SERVER_JARS. The environment variable will then be comsumed by odrefresh to determine what jars to preopt on early boot. Note that the variable should not end with "CLASSPATH" because the list is not used by runtime as a classpath. It is just a colon-separated list of jars. System server loads the jars separately with paths hardcoded in the code. Bug: 203198541 Test: manual - 1. Add some jars to PRODUCT_STANDALONE_SYSTEM_SERVER_JARS 2. Add some other jars to PRODUCT_APEX_STANDALONE_SYSTEM_SERVER_JARS and standalone_contents. 3. Build an image. 4. Flash the image to a device. 5. adb shell echo \$STANDALONE_SYSTEMSERVER_JARS 6. See the correct list of jars. Change-Id: I09a6fd1d3db85c194330da9b751702a9bf069e26
* Rename UpdatableBootJars to ApexBootJars.satayev2021-07-221-3/+3
| | | | | | | | | | | Note that ART apex boot jars and core-icu4j are exceptions here as they are not part of ApexBootJars. ART apex boot jars are defined in their own variable, while core-icu4j is treated as a regular non-updatable boot jar. Bug: 191127295 Test: atest CtsClasspathsTestCases Change-Id: I3cea3d82ef521655a1a5ffa8cae2258ab9d08bfc
* Use both module name and stem name to filter updatable boot jarsPaul Duffin2021-06-291-0/+23
| | | | | | | | | | | | | | | | Sometimes the stem property is set to change both the installed file name and the name use to filter the configured module list, e.g. when adding a test library to replace the standard library, e.g. test_foo instead of foo. Sometimes it is used just to change the installed file name. This change uses both to filter the updatable boot jars and not just the stem. Bug: 180105615 Test: m nothing Change-Id: I6c459fc3597b1e4f062bc9a4e52843305b538c5f
* Append platform classpath proto configs with missing apex jars.satayev2021-06-221-1/+5
| | | | | | | | | | Any apex classpath fragment that doesn't generate its own classpaths proto, must still propagate it's boot jars for the platform classpath fragment to include for complete CLASSPATH variables on device. Bug: 191127295 Test: atest CtsClasspathsTestCases derive_classpath_test Change-Id: I93687f69006741fcd66eb6e04891a4b4bbcc3b47
* Add classpath fragment property to skip proto generation.satayev2021-06-171-16/+29
| | | | | | | | | | | | This must always be true for updatable apexes, but is not necessary for non-updatable apexes like com.android.i18n. In a follow up this will be used to figure out whether apex boot jars should be bundled into platform_bootclasspath. Bug: 191127295 Test: atest CtsClasspathsTestCases derive_classpath_test Change-Id: Ib7dc5b057cb24955222fb97f3ff9da079f30ed77
* Rename ClasspathFragmentToConfiguredJarList methods to configuredJars.satayev2021-06-161-4/+0
| | | | | | | | They are internal implementation details of individual fragments. Bug: 191127295 Test: m Change-Id: Ib350135f5f6720741492f362f7b3203e5107772e
* Rename generate proto config file to match classpath type.satayev2021-05-241-1/+1
| | | | | | | | There is no need to leak soong module names. Bug: 180105615 Test: m && launch_cvd; atest CtsClasspathsTestCases Change-Id: I04f4e181d2f42b9d71641980a2c7c4e8cbc8e426
* Use absolute paths in classpaths.proto.satayev2021-05-181-1/+1
| | | | | | | | | | The intention before was to use relative paths to a partition where a config is defined. However, jars in /system_ext partition are planned to be declared in /system's classpaths.proto config. Bug: 180105615 Test: derive_classpath_test, CtsClasspathsTestCases Change-Id: Icc3e1a903c34187cfcd67a3ae7bc3dd746445c03
* Move classpaths.proto related info into a separate provider.satayev2021-05-171-0/+27
| | | | | | | | | The new info struct can be easily shared with systemserverclasspath fragments. Bug: 180105615 Test: m nothing Change-Id: I9986e64fdf19f4168da63c156de3dc9bcafac8d8
* Generate empty classpaths.proto for bootclasspath_fragment.go.satayev2021-05-111-0/+2
| | | | | | | | | | | | | - 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
* Declare ConfiguredJarList in specific fragment implementations.satayev2021-05-071-26/+21
| | | | | | | | | | | | | 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
* Split SYSTEMSERVERCLASSPATH entries from platform_bootclasspath.satayev2021-05-071-4/+15
| | | | | | | | | | | 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
* Rename classpath_fragment.go methods for better readability.satayev2021-05-061-2/+2
| | | | | | Bug: 180105615 Test: m nothing Change-Id: Ic663c22e5b7cbab487dc1fe99805e08843c3213d
* Generate classpaths.proto config for *CLASSPATH variables.Artur Satayev2021-04-141-6/+90
| | | | | | | | | | | | | | Instead of embedding "raw" values from PRODUCT_*_CLASSPATH variables into /etc/classpath, encode them into classpaths.proto binary format. Existing platform_bootclasspath{} module is used to generate the whole monolithic config to begin with. Later, the config will be split among individual bootclasspath_fragment and systemserverclasspath_fragment modules. Bug: 180105615 Test: m && launch_cvd Change-Id: Ia66f521f8976ff78a62ecf91131d26db21064de7
* Introduce classpath_fragment.go.Artur Satayev2021-04-131-0/+67
A skeleton of a classpath fragment's interface and base to be used by any modules that provide entries for *CLASSPATH variables at runtime. In follow up changes, this would be extended to generate packages/modules/SdkExtensions/proto/classpaths.proto configs for such modules to be bundled into system and individual apex binaries. Bug: 180105615 Test: m Change-Id: I2df550862e97222c5650c4d0480c90231fd78ef0