blob: 258796942ca90301ced59603a75a6fd6119cbe36 [file] [log] [blame]
Makoto Onuki3aefe332023-10-06 10:02:07 -07001// Copyright (C) 2023 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15// We need this "trampoline" rule to force soong to give a host-side jar to
Makoto Onukic69a84e2023-10-20 10:43:55 -070016// framework-minus-apex.ravenwood-base. Otherwise, soong would mix up the arch (?) and we'd get
Makoto Onuki3aefe332023-10-06 10:02:07 -070017// a dex jar.
18java_library {
19 name: "framework-minus-apex-for-hoststubgen",
20 installable: false, // host only jar.
21 static_libs: [
22 "framework-minus-apex",
23 ],
24 sdk_version: "core_platform",
25 visibility: ["//visibility:private"],
26}
27
Makoto Onuki77d7eec2024-08-07 09:48:42 -070028// Process framework-all with hoststubgen for Ravenwood.
Makoto Onukia0ad8aa2024-08-02 09:11:46 -070029// This step takes several tens of seconds, so we manually shard it to multiple modules.
30// All the copies have to be kept in sync.
Makoto Onuki77d7eec2024-08-07 09:48:42 -070031// TODO: Do the sharding better, either by making hostsubgen support sharding natively, or
32// making a better build rule.
Makoto Onukia0ad8aa2024-08-02 09:11:46 -070033
34genrule_defaults {
35 name: "framework-minus-apex.ravenwood-base_defaults",
Makoto Onuki77d7eec2024-08-07 09:48:42 -070036 defaults: ["ravenwood-internal-only-visibility-genrule"],
Makoto Onuki3aefe332023-10-06 10:02:07 -070037 tools: ["hoststubgen"],
Makoto Onuki3aefe332023-10-06 10:02:07 -070038 srcs: [
39 ":framework-minus-apex-for-hoststubgen",
Makoto Onukidfade842024-05-02 15:42:08 -070040 ":ravenwood-framework-policies",
41 ":ravenwood-standard-options",
42 ":ravenwood-annotation-allowed-classes",
Makoto Onuki3aefe332023-10-06 10:02:07 -070043 ],
44 out: [
45 "ravenwood.jar",
Makoto Onuki3aefe332023-10-06 10:02:07 -070046
47 // Following files are created just as FYI.
Makoto Onuki1d7b8592024-06-26 14:21:12 -070048 "hoststubgen_framework-minus-apex_keep_all.txt",
49 "hoststubgen_framework-minus-apex_dump.txt",
Makoto Onuki623cffb2023-11-29 10:45:06 -080050
51 "hoststubgen_framework-minus-apex.log",
Jeff Sharkeyd2cc1912024-02-09 14:37:10 -070052 "hoststubgen_framework-minus-apex_stats.csv",
Makoto Onuki434d72822024-04-25 11:03:41 -070053 "hoststubgen_framework-minus-apex_apis.csv",
Makoto Onuki3aefe332023-10-06 10:02:07 -070054 ],
Makoto Onuki3aefe332023-10-06 10:02:07 -070055}
56
Makoto Onuki77d7eec2024-08-07 09:48:42 -070057framework_minus_apex_cmd = "$(location hoststubgen) " +
58 "@$(location :ravenwood-standard-options) " +
59
60 "--debug-log $(location hoststubgen_framework-minus-apex.log) " +
61 "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " +
62 "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " +
63
64 "--out-impl-jar $(location ravenwood.jar) " +
65
66 "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " +
67 "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) " +
68
69 "--in-jar $(location :framework-minus-apex-for-hoststubgen) " +
70 "--policy-override-file $(location :ravenwood-framework-policies) " +
71 "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) "
72
Makoto Onukia0ad8aa2024-08-02 09:11:46 -070073java_genrule {
74 name: "framework-minus-apex.ravenwood-base_X0",
75 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
Makoto Onuki77d7eec2024-08-07 09:48:42 -070076 cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 0",
Makoto Onukia0ad8aa2024-08-02 09:11:46 -070077}
78
79java_genrule {
80 name: "framework-minus-apex.ravenwood-base_X1",
81 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
Makoto Onuki77d7eec2024-08-07 09:48:42 -070082 cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 1",
Makoto Onukia0ad8aa2024-08-02 09:11:46 -070083}
84
85java_genrule {
86 name: "framework-minus-apex.ravenwood-base_X2",
87 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
Makoto Onuki77d7eec2024-08-07 09:48:42 -070088 cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 2",
Makoto Onukia0ad8aa2024-08-02 09:11:46 -070089}
90
91java_genrule {
92 name: "framework-minus-apex.ravenwood-base_X3",
93 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
Makoto Onuki77d7eec2024-08-07 09:48:42 -070094 cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 3",
Makoto Onukia0ad8aa2024-08-02 09:11:46 -070095}
96
97java_genrule {
98 name: "framework-minus-apex.ravenwood-base_X4",
99 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
Makoto Onuki77d7eec2024-08-07 09:48:42 -0700100 cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 4",
Makoto Onukia0ad8aa2024-08-02 09:11:46 -0700101}
102
103java_genrule {
104 name: "framework-minus-apex.ravenwood-base_X5",
105 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
Makoto Onuki77d7eec2024-08-07 09:48:42 -0700106 cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 5",
107}
Makoto Onukia0ad8aa2024-08-02 09:11:46 -0700108
Makoto Onuki77d7eec2024-08-07 09:48:42 -0700109java_genrule {
110 name: "framework-minus-apex.ravenwood-base_X6",
111 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
112 cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 6",
113}
Makoto Onukia0ad8aa2024-08-02 09:11:46 -0700114
Makoto Onuki77d7eec2024-08-07 09:48:42 -0700115java_genrule {
116 name: "framework-minus-apex.ravenwood-base_X7",
117 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
118 cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 7",
119}
Makoto Onukia0ad8aa2024-08-02 09:11:46 -0700120
Makoto Onuki77d7eec2024-08-07 09:48:42 -0700121java_genrule {
122 name: "framework-minus-apex.ravenwood-base_X8",
123 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
124 cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 8",
125}
Makoto Onukia0ad8aa2024-08-02 09:11:46 -0700126
Makoto Onuki77d7eec2024-08-07 09:48:42 -0700127java_genrule {
128 name: "framework-minus-apex.ravenwood-base_X9",
129 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
130 cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 9",
131}
Makoto Onukia0ad8aa2024-08-02 09:11:46 -0700132
Makoto Onuki77d7eec2024-08-07 09:48:42 -0700133// Build framework-minus-apex.ravenwood-base without sharding.
134// We extract the various dump files from this one, rather than the sharded ones, because
135// some dumps use the output from other classes (e.g. base classes) which may not be in the
136// same shard.
137// Not using sharding is fine for this module because it's only used for collecting the
138// dump / stats files, which don't have to happen regularly.
139java_genrule {
140 name: "framework-minus-apex.ravenwood-base_all",
141 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
142 cmd: framework_minus_apex_cmd,
Makoto Onukia0ad8aa2024-08-02 09:11:46 -0700143}
144
145// Marge all the sharded jars
Makoto Onukic69a84e2023-10-20 10:43:55 -0700146java_genrule {
Makoto Onuki3aefe332023-10-06 10:02:07 -0700147 name: "framework-minus-apex.ravenwood",
Makoto Onukia0ad8aa2024-08-02 09:11:46 -0700148 defaults: ["ravenwood-internal-only-visibility-java"],
149 cmd: "$(location merge_zips) $(out) $(in)",
150 tools: ["merge_zips"],
Makoto Onuki3aefe332023-10-06 10:02:07 -0700151 srcs: [
Makoto Onukia0ad8aa2024-08-02 09:11:46 -0700152 ":framework-minus-apex.ravenwood-base_X0{ravenwood.jar}",
153 ":framework-minus-apex.ravenwood-base_X1{ravenwood.jar}",
154 ":framework-minus-apex.ravenwood-base_X2{ravenwood.jar}",
155 ":framework-minus-apex.ravenwood-base_X3{ravenwood.jar}",
156 ":framework-minus-apex.ravenwood-base_X4{ravenwood.jar}",
157 ":framework-minus-apex.ravenwood-base_X5{ravenwood.jar}",
Makoto Onuki77d7eec2024-08-07 09:48:42 -0700158 ":framework-minus-apex.ravenwood-base_X6{ravenwood.jar}",
159 ":framework-minus-apex.ravenwood-base_X7{ravenwood.jar}",
160 ":framework-minus-apex.ravenwood-base_X8{ravenwood.jar}",
161 ":framework-minus-apex.ravenwood-base_X9{ravenwood.jar}",
Makoto Onuki3aefe332023-10-06 10:02:07 -0700162 ],
163 out: [
164 "framework-minus-apex.ravenwood.jar",
165 ],
Makoto Onuki3aefe332023-10-06 10:02:07 -0700166}
Makoto Onukic69a84e2023-10-20 10:43:55 -0700167
Jeff Sharkeyed81c782024-01-11 13:29:07 -0700168java_library {
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700169 name: "services.core-for-hoststubgen",
170 installable: false, // host only jar.
171 static_libs: [
172 "services.core",
173 ],
174 sdk_version: "core_platform",
175 visibility: ["//visibility:private"],
176}
177
178java_genrule {
179 name: "services.core.ravenwood-base",
180 tools: ["hoststubgen"],
181 cmd: "$(location hoststubgen) " +
Makoto Onukidfade842024-05-02 15:42:08 -0700182 "@$(location :ravenwood-standard-options) " +
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700183
184 "--debug-log $(location hoststubgen_services.core.log) " +
185 "--stats-file $(location hoststubgen_services.core_stats.csv) " +
Makoto Onuki434d72822024-04-25 11:03:41 -0700186 "--supported-api-list-file $(location hoststubgen_services.core_apis.csv) " +
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700187
188 "--out-impl-jar $(location ravenwood.jar) " +
189
Makoto Onuki1d7b8592024-06-26 14:21:12 -0700190 "--gen-keep-all-file $(location hoststubgen_services.core_keep_all.txt) " +
191 "--gen-input-dump-file $(location hoststubgen_services.core_dump.txt) " +
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700192
193 "--in-jar $(location :services.core-for-hoststubgen) " +
Makoto Onukidfade842024-05-02 15:42:08 -0700194 "--policy-override-file $(location :ravenwood-services-policies) " +
195 "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ",
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700196 srcs: [
197 ":services.core-for-hoststubgen",
Makoto Onukidfade842024-05-02 15:42:08 -0700198 ":ravenwood-services-policies",
199 ":ravenwood-standard-options",
200 ":ravenwood-annotation-allowed-classes",
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700201 ],
202 out: [
203 "ravenwood.jar",
204
205 // Following files are created just as FYI.
Makoto Onuki1d7b8592024-06-26 14:21:12 -0700206 "hoststubgen_services.core_keep_all.txt",
207 "hoststubgen_services.core_dump.txt",
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700208
209 "hoststubgen_services.core.log",
210 "hoststubgen_services.core_stats.csv",
Makoto Onuki434d72822024-04-25 11:03:41 -0700211 "hoststubgen_services.core_apis.csv",
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700212 ],
Makoto Onuki1d7b8592024-06-26 14:21:12 -0700213 defaults: ["ravenwood-internal-only-visibility-genrule"],
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700214}
215
216java_genrule {
217 name: "services.core.ravenwood",
218 defaults: ["ravenwood-internal-only-visibility-genrule"],
219 cmd: "cp $(in) $(out)",
220 srcs: [
221 ":services.core.ravenwood-base{ravenwood.jar}",
222 ],
223 out: [
224 "services.core.ravenwood.jar",
225 ],
226}
227
Makoto Onuki77d7eec2024-08-07 09:48:42 -0700228// TODO(b/313930116) This jarjar is a bit slow. We should use hoststubgen for renaming,
229// but services.core.ravenwood has complex dependencies, so it'll take more than
230// just using hoststubgen "rename"s.
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700231java_library {
232 name: "services.core.ravenwood-jarjar",
Makoto Onuki9e104ae2024-05-23 10:49:31 -0700233 defaults: ["ravenwood-internal-only-visibility-java"],
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700234 installable: false,
235 static_libs: [
236 "services.core.ravenwood",
237 ],
238 jarjar_rules: ":ravenwood-services-jarjar-rules",
Jeff Sharkeyed81c782024-01-11 13:29:07 -0700239}
240
Makoto Onuki053eac82024-02-13 10:31:18 -0800241// Jars in "ravenwood-runtime" are set to the classpath, sorted alphabetically.
242// Rename some of the dependencies to make sure they're included in the intended order.
Makoto Onukia09b3732024-05-30 10:40:50 -0700243java_library {
Makoto Onuki053eac82024-02-13 10:31:18 -0800244 name: "100-framework-minus-apex.ravenwood",
Makoto Onukia09b3732024-05-30 10:40:50 -0700245 defaults: ["ravenwood-internal-only-visibility-java"],
246 static_libs: [
247 "framework-minus-apex.ravenwood",
248 ],
249 sdk_version: "core_platform",
Makoto Onuki491caff2024-08-02 10:47:55 -0700250 // See b/313930116. Jarjar is too slow on this jar. We use HostStubGen to do the rename.
251 // jarjar_rules: ":ravenwood-framework-jarjar-rules",
Makoto Onuki053eac82024-02-13 10:31:18 -0800252}
253
254java_genrule {
255 // Use 200 to make sure it comes before the mainline stub ("all-updatable...").
256 name: "200-kxml2-android",
Makoto Onuki9e104ae2024-05-23 10:49:31 -0700257 defaults: ["ravenwood-internal-only-visibility-genrule"],
Makoto Onuki053eac82024-02-13 10:31:18 -0800258 cmd: "cp $(in) $(out)",
259 srcs: [":kxml2-android"],
260 out: ["200-kxml2-android.jar"],
Makoto Onuki053eac82024-02-13 10:31:18 -0800261}
262
Makoto Onukid8231fe2024-05-10 12:49:24 -0700263java_genrule {
264 name: "z00-all-updatable-modules-system-stubs",
Makoto Onuki9e104ae2024-05-23 10:49:31 -0700265 defaults: ["ravenwood-internal-only-visibility-genrule"],
Makoto Onukid8231fe2024-05-10 12:49:24 -0700266 cmd: "cp $(in) $(out)",
267 srcs: [":all-updatable-modules-system-stubs"],
268 out: ["z00-all-updatable-modules-system-stubs.jar"],
Makoto Onukic69a84e2023-10-20 10:43:55 -0700269}