blob: e818420947883deb765b0d73e32e1d43db9c01ca [file] [log] [blame]
Bob Badour2efc4762021-02-03 18:36:27 -08001package {
2 default_applicable_licenses: ["Android-Apache-2.0"],
3}
4
Inseob Kimdc2af862021-02-17 15:51:56 +09005microdroid_shell_and_utilities = [
6 "reboot",
7 "sh",
8 "toolbox",
9 "toybox",
10]
11
Inseob Kim5ffc0822021-02-09 21:23:36 +090012microdroid_rootdirs = [
13 "dev",
14 "proc",
15 "sys",
16
Inseob Kim5ffc0822021-02-09 21:23:36 +090017 "system",
Inseob Kim5ffc0822021-02-09 21:23:36 +090018 "vendor",
Inseob Kim5ffc0822021-02-09 21:23:36 +090019 "debug_ramdisk",
20 "mnt",
21
22 "apex",
23 "linkerconfig",
24 "second_stage_resources",
25 "postinstall",
26]
27
28microdroid_symlinks = [
29 {
30 target: "/sys/kernel/debug",
31 name: "d",
32 },
33]
34
Jiyong Parkb552bb62021-01-25 19:12:47 +090035android_filesystem {
36 name: "microdroid",
37 use_avb: true,
38 avb_private_key: "microdroid.pem",
39 avb_algorithm: "SHA256_RSA4096",
Jiyong Parkd4326f32021-03-15 23:25:46 +090040 partition_name: "system",
Jiyong Parkb552bb62021-01-25 19:12:47 +090041 deps: [
42 "init_second_stage",
Inseob Kimdc2af862021-02-17 15:51:56 +090043 "microdroid_init_rc",
Jiyong Park22bdc852021-03-03 20:27:38 +090044 "ueventd.rc",
Inseob Kimdc2af862021-02-17 15:51:56 +090045 "libbinder",
46 "libstdc++",
47 "logcat",
48 "logd",
49 "run-as",
50 "secilc",
51 "adbd",
52 "apexd",
53 "debuggerd",
54 "linker",
Inseob Kim870e76b2021-02-25 17:38:32 +090055 "linkerconfig",
Inseob Kimdc2af862021-02-17 15:51:56 +090056 "servicemanager",
57 "tombstoned",
58 "cgroups.json",
Inseob Kimd8cf7622021-02-18 19:12:06 +090059
Inseob Kim28dddd82021-03-11 17:51:22 +090060 // These files are temporary and only for test.
Inseob Kimd8cf7622021-02-18 19:12:06 +090061 // TODO(b/178993690): migrate cil files to Soong
Inseob Kime2071482021-03-19 07:05:00 +000062 "microdroid_plat_sepolicy.cil",
Inseob Kimd8cf7622021-02-18 19:12:06 +090063 "microdroid_plat_mapping_file",
Inseob Kim28dddd82021-03-11 17:51:22 +090064 "microdroid_plat_sepolicy_and_mapping.sha256",
Inseob Kimdc2af862021-02-17 15:51:56 +090065 ] + microdroid_shell_and_utilities,
66 multilib: {
67 common: {
68 deps: [
69 "com.android.runtime",
Inseob Kimd8cf7622021-02-18 19:12:06 +090070 "plat_file_contexts",
71 "plat_hwservice_contexts",
72 "plat_property_contexts",
73 "plat_service_contexts",
74 "plat_keystore2_key_contexts",
Inseob Kimdc2af862021-02-17 15:51:56 +090075 ],
76 },
77 },
Inseob Kima313e562021-02-15 17:04:39 +090078 base_dir: "system",
Inseob Kim5ffc0822021-02-09 21:23:36 +090079 dirs: microdroid_rootdirs,
80 symlinks: microdroid_symlinks,
Inseob Kimaf8ae3c2021-02-03 14:50:28 +090081 file_contexts: "microdroid_file_contexts",
Jiyong Parkb552bb62021-01-25 19:12:47 +090082}
Jiyong Park153d3552021-02-04 08:54:31 +090083
Inseob Kimdc2af862021-02-17 15:51:56 +090084prebuilt_etc {
85 name: "microdroid_init_rc",
86 filename: "init.rc",
87 src: "init.rc",
88 relative_install_path: "init/hw",
89 installable: false, // avoid collision with system partition's init.rc
90}
91
Jiyong Park6e2bc7c2021-03-03 14:56:18 +000092android_filesystem {
93 name: "microdroid_vendor",
94 use_avb: true,
95 deps: [
96 "microdroid_plat_sepolicy_vers.txt",
97 "microdroid_vendor_sepolicy.cil",
98 "microdroid_plat_pub_versioned.cil",
Inseob Kim28dddd82021-03-11 17:51:22 +090099 "microdroid_precompiled_sepolicy",
100 "microdroid_precompiled_sepolicy.plat_sepolicy_and_mapping.sha256",
Jiyong Park6e2bc7c2021-03-03 14:56:18 +0000101 ],
102 avb_private_key: "microdroid.pem",
103 avb_algorithm: "SHA256_RSA4096",
104 file_contexts: "microdroid_vendor_file_contexts",
105}
106
107prebuilt_etc {
108 name: "microdroid_plat_sepolicy_vers.txt",
109 src: "plat_sepolicy_vers.txt",
110 filename: "plat_sepolicy_vers.txt",
111 sub_dir: "selinux",
112 installable: false,
113}
114
Jiyong Parkc1500e82021-02-24 01:39:51 +0900115logical_partition {
116 name: "microdroid_super",
117 sparse: true,
118 // TODO(b/181107248): remove this hard-coded value
119 size: "104857600",
120 groups: [
121 {
122 name: "mygroup",
123 // TODO(b/181107248): remove this hard-coded value
124 size: "80000000",
125 partitions: [
126 {
127 name: "system",
128 filesystem: ":microdroid",
129 },
Jiyong Park6e2bc7c2021-03-03 14:56:18 +0000130 {
131 name: "vendor",
132 filesystem: ":microdroid_vendor",
133 },
Jiyong Parkc1500e82021-02-24 01:39:51 +0900134 ],
135 },
136 ],
137}
138
Jiyong Park153d3552021-02-04 08:54:31 +0900139bootimg {
Jiyong Parkc8b40032021-02-18 23:15:41 +0900140 name: "microdroid_boot-5.10",
Jiyong Park153d3552021-02-04 08:54:31 +0900141 ramdisk_module: "microdroid_ramdisk-5.10",
Jiyong Parkdfa3aec2021-03-09 20:32:15 +0900142 // We don't have kernel for arm and x86. But Soong demands one when it builds for
143 // arm or x86 target. Satisfy that by providing an empty file as the kernel.
144 kernel_prebuilt: "empty_kernel",
Jiyong Parkc8b40032021-02-18 23:15:41 +0900145 arch: {
146 arm64: {
147 kernel_prebuilt: ":kernel_prebuilts-5.10-arm64",
Jiyong Parkc8b40032021-02-18 23:15:41 +0900148 },
149 x86_64: {
150 kernel_prebuilt: ":kernel_prebuilts-5.10-x86_64",
Jiyong Parkc8b40032021-02-18 23:15:41 +0900151 },
152 },
153 // TODO(jiyong): change the name to init, cause it's confusing
Jiyong Park9ecac552021-03-05 18:51:35 +0900154 cmdline: "rdinit=/bin/init_vendor " +
155 "panic=-1 " +
156 // TODO(b/181936135) make the ratelimiting conditional; ratelimiting on prod build
157 "printk.devkmsg=on " +
158 "androidboot.first_stage_console=1 " +
159 "androidboot.hardware=microdroid " +
160 "androidboot.boot_devices=10000.pci " +
161 // TODO(b/181747352) remove this to enforce selinux
162 "androidboot.selinux=permissive",
Jiyong Park153d3552021-02-04 08:54:31 +0900163 dtb_prebuilt: "dummy_dtb.img",
Jiyong Park9ecac552021-03-05 18:51:35 +0900164 header_version: "4",
Jiyong Parkc8b40032021-02-18 23:15:41 +0900165 partition_name: "boot",
Jiyong Parkd4326f32021-03-15 23:25:46 +0900166 use_avb: true,
167 avb_private_key: "microdroid.pem",
Jiyong Park153d3552021-02-04 08:54:31 +0900168}
169
170android_filesystem {
171 name: "microdroid_ramdisk-5.10",
Jiyong Parkc8b40032021-02-18 23:15:41 +0900172 deps: [
173 "init_first_stage_soong",
174 ],
175 dirs: [
176 "dev",
177 "proc",
178 "sys",
179
180 // TODO(jiyong): remove these
181 "mnt",
182 "debug_ramdisk",
183 "second_stage_resources",
184 ],
185 type: "compressed_cpio",
186}
187
188bootimg {
189 name: "microdroid_vendor_boot-5.10",
190 ramdisk_module: "microdroid_vendor_ramdisk-5.10",
191 dtb_prebuilt: "dummy_dtb.img",
Jiyong Park9ecac552021-03-05 18:51:35 +0900192 header_version: "4",
Jiyong Parkc8b40032021-02-18 23:15:41 +0900193 vendor_boot: true,
194 partition_name: "vendor_boot",
Jiyong Parkd4326f32021-03-15 23:25:46 +0900195 use_avb: true,
196 avb_private_key: "microdroid.pem",
Jiyong Parkc8b40032021-02-18 23:15:41 +0900197}
198
199android_filesystem {
200 name: "microdroid_vendor_ramdisk-5.10",
Jiyong Park153d3552021-02-04 08:54:31 +0900201 arch: {
202 arm64: {
203 deps: ["virt_device_prebuilts_kernel_modules-5.10-arm64"],
204 },
205 x86_64: {
206 deps: ["virt_device_prebuilts_kernel_modules-5.10-x86_64"],
207 },
208 },
Jiyong Park3eb11f72021-02-23 12:53:30 +0900209 deps: [
210 "microdroid_fstab",
211 ],
212 base_dir: "first_stage_ramdisk",
Jiyong Park153d3552021-02-04 08:54:31 +0900213 type: "compressed_cpio",
Jiyong Park3eb11f72021-02-23 12:53:30 +0900214 symlinks: [
215 {
216 target: "etc/fstab",
217 name: "first_stage_ramdisk/fstab.microdroid",
218 },
219 {
220 target: "first_stage_ramdisk/lib",
221 name: "lib",
222 },
223 ],
224}
225
226prebuilt_etc {
227 name: "microdroid_fstab",
228 src: "fstab",
229 filename: "fstab",
230 installable: false,
Jiyong Park153d3552021-02-04 08:54:31 +0900231}
Jiyong Parkf677cfa2021-02-19 15:44:52 +0900232
233prebuilt_etc {
234 name: "microdroid_uboot_env",
235 src: ":microdroid_uboot_env_gen",
236 filename: "uboot_env.img",
237}
238
239genrule {
240 name: "microdroid_uboot_env_gen",
241 tools: ["mkenvimage_host"],
242 srcs: ["uboot-env.txt"],
243 out: ["output.img"],
244 cmd: "$(location mkenvimage_host) -s 4096 -o $(out) $(in)",
245}
Inseob Kim28dddd82021-03-11 17:51:22 +0900246
247genrule {
248 name: "microdroid_plat_sepolicy_and_mapping.sha256_gen",
249 srcs: [
Inseob Kime2071482021-03-19 07:05:00 +0000250 ":microdroid_plat_sepolicy.cil",
Inseob Kim28dddd82021-03-11 17:51:22 +0900251 ":microdroid_plat_mapping_file",
252 ],
253 out: ["plat_sepolicy_and_mapping.sha256"],
254 cmd: "cat $(in) | sha256sum | cut -d' ' -f1 > $(out)",
255}
256
257// sepolicy sha256 for system
258prebuilt_etc {
259 name: "microdroid_plat_sepolicy_and_mapping.sha256",
260 src: ":microdroid_plat_sepolicy_and_mapping.sha256_gen",
261 filename: "plat_sepolicy_and_mapping.sha256",
262 relative_install_path: "selinux",
263 installable: false,
264}
265
266// sepolicy sha256 for vendor (filename differs)
267prebuilt_etc {
268 name: "microdroid_precompiled_sepolicy.plat_sepolicy_and_mapping.sha256",
269 src: ":microdroid_plat_sepolicy_and_mapping.sha256_gen",
270 filename: "precompiled_sepolicy.plat_sepolicy_and_mapping.sha256",
271 relative_install_path: "selinux",
272 installable: false,
273}
274
275genrule {
276 name: "microdroid_precompiled_sepolicy_gen",
277 tools: ["secilc"],
278 srcs: [
Inseob Kime2071482021-03-19 07:05:00 +0000279 ":microdroid_plat_sepolicy.cil",
Inseob Kim28dddd82021-03-11 17:51:22 +0900280 ":microdroid_plat_mapping_file",
281 ":microdroid_plat_pub_versioned.cil",
282 ":microdroid_vendor_sepolicy.cil",
283 ],
284 out: ["precompiled_sepolicy"],
285 cmd: "$(location secilc) -m -M true -G -c 30 $(in) -o $(out) -f /dev/null",
286}
287
288prebuilt_etc {
289 name: "microdroid_precompiled_sepolicy",
290 src: ":microdroid_precompiled_sepolicy_gen",
291 filename: "precompiled_sepolicy",
292 relative_install_path: "selinux",
293 installable: false,
294}
Jiyong Park80d8da82021-03-15 23:30:11 +0900295
296vbmeta {
297 name: "microdroid_vbmeta",
298 partition_name: "vbmeta",
299 private_key: "microdroid.pem",
300 partitions: [
301 "microdroid_vendor",
302 "microdroid_vendor_boot-5.10",
303 ],
304 chained_partitions: [
305 {
306 name: "vbmeta_system",
307 rollback_index_location: 1,
308 private_key: "microdroid.pem",
309 },
310 {
311 name: "boot",
312 rollback_index_location: 2,
313 private_key: "microdroid.pem",
314 },
315 ],
316}
317
318vbmeta {
319 name: "microdroid_vbmeta_system",
320 partition_name: "vbmeta_system",
321 private_key: "microdroid.pem",
322 partitions: [
323 "microdroid",
324 ],
325}