blob: a5b6fd0a4c8f33fef3abe001849b360b71ee1b0c [file] [log] [blame]
Dan Willemsenc0a0f2d2017-09-09 13:37:03 -07001// Copyright (C) 2008 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
Bob Badour03905802021-02-12 21:42:54 -080015package {
16 // See: http://go/android-license-faq
Bob Badourd2c7c082022-01-24 15:21:32 -080017 default_applicable_licenses: ["Android-Apache-2.0"],
Bob Badour03905802021-02-12 21:42:54 -080018}
19
Dan Willemsend32e6d12019-04-10 12:25:07 -070020bootstrap_go_package {
21 name: "soong-fs_config",
22 pkgPath: "android/soong/fs_config",
23 deps: [
24 "soong-android",
25 "soong-genrule",
26 ],
27 srcs: [
Tom Cherryfb303a52019-07-11 15:31:36 -070028 "fs_config.go",
Dan Willemsend32e6d12019-04-10 12:25:07 -070029 ],
30 pluginFor: ["soong_build"],
31}
32
Dan Willemsenc0a0f2d2017-09-09 13:37:03 -070033cc_binary_host {
34 name: "fs_config",
35 srcs: ["fs_config.c"],
36 shared_libs: [
37 "libcutils",
Dan Willemsenc0a0f2d2017-09-09 13:37:03 -070038 ],
39 cflags: ["-Werror"],
40}
Dan Willemsend32e6d12019-04-10 12:25:07 -070041
Cole Faustf08ab3d2022-10-20 13:36:05 -070042python_binary_host {
43 name: "fs_config_generator",
44 srcs: ["fs_config_generator.py"],
Cole Faustf08ab3d2022-10-20 13:36:05 -070045}
46
47python_test_host {
48 name: "test_fs_config_generator",
49 main: "test_fs_config_generator.py",
50 srcs: [
51 "test_fs_config_generator.py",
52 "fs_config_generator.py",
53 ],
Cole Faustf08ab3d2022-10-20 13:36:05 -070054}
55
Dan Willemsend32e6d12019-04-10 12:25:07 -070056target_fs_config_gen_filegroup {
57 name: "target_fs_config_gen",
58}
59
60genrule {
61 name: "oemaids_header_gen",
Cole Faustf08ab3d2022-10-20 13:36:05 -070062 tools: ["fs_config_generator"],
63 cmd: "$(location fs_config_generator) oemaid --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
Dan Willemsend32e6d12019-04-10 12:25:07 -070064 srcs: [
65 ":target_fs_config_gen",
66 ":android_filesystem_config_header",
67 ],
68 out: ["generated_oem_aid.h"],
69}
70
71cc_library_headers {
72 name: "oemaids_headers",
P.Adarsh Reddy8b2e7c92020-02-18 14:53:22 +053073 vendor_available: true,
Dan Willemsend32e6d12019-04-10 12:25:07 -070074 generated_headers: ["oemaids_header_gen"],
75 export_generated_headers: ["oemaids_header_gen"],
76}
77
Tom Cherryfb303a52019-07-11 15:31:36 -070078// Generate the */etc/passwd text files for the target
79// These files may be empty if no AIDs are defined in
Dan Willemsend32e6d12019-04-10 12:25:07 -070080// TARGET_FS_CONFIG_GEN files.
81genrule {
Tom Cherryfb303a52019-07-11 15:31:36 -070082 name: "passwd_gen_system",
Cole Faustf08ab3d2022-10-20 13:36:05 -070083 tools: ["fs_config_generator"],
84 cmd: "$(location fs_config_generator) passwd --partition=system --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
Dan Willemsend32e6d12019-04-10 12:25:07 -070085 srcs: [
86 ":target_fs_config_gen",
87 ":android_filesystem_config_header",
88 ],
89 out: ["passwd"],
90}
91
92prebuilt_etc {
Tom Cherryfb303a52019-07-11 15:31:36 -070093 name: "passwd_system",
94 filename: "passwd",
95 src: ":passwd_gen_system",
Dan Willemsend32e6d12019-04-10 12:25:07 -070096}
97
Tom Cherryfb303a52019-07-11 15:31:36 -070098genrule {
99 name: "passwd_gen_vendor",
Cole Faustf08ab3d2022-10-20 13:36:05 -0700100 tools: ["fs_config_generator"],
101 cmd: "$(location fs_config_generator) passwd --partition=vendor --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
Tom Cherryfb303a52019-07-11 15:31:36 -0700102 srcs: [
103 ":target_fs_config_gen",
104 ":android_filesystem_config_header",
105 ],
106 out: ["passwd"],
107}
108
109prebuilt_etc {
110 name: "passwd_vendor",
111 filename: "passwd",
112 vendor: true,
113 src: ":passwd_gen_vendor",
114}
115
116genrule {
117 name: "passwd_gen_odm",
Cole Faustf08ab3d2022-10-20 13:36:05 -0700118 tools: ["fs_config_generator"],
119 cmd: "$(location fs_config_generator) passwd --partition=odm --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
Tom Cherryfb303a52019-07-11 15:31:36 -0700120 srcs: [
121 ":target_fs_config_gen",
122 ":android_filesystem_config_header",
123 ],
124 out: ["passwd"],
125}
126
127prebuilt_etc {
128 name: "passwd_odm",
129 filename: "passwd",
130 device_specific: true,
131 src: ":passwd_gen_odm",
132}
133
134genrule {
135 name: "passwd_gen_product",
Cole Faustf08ab3d2022-10-20 13:36:05 -0700136 tools: ["fs_config_generator"],
137 cmd: "$(location fs_config_generator) passwd --partition=product --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
Tom Cherryfb303a52019-07-11 15:31:36 -0700138 srcs: [
139 ":target_fs_config_gen",
140 ":android_filesystem_config_header",
141 ],
142 out: ["passwd"],
143}
144
145prebuilt_etc {
146 name: "passwd_product",
147 filename: "passwd",
148 product_specific: true,
149 src: ":passwd_gen_product",
150}
151
152genrule {
153 name: "passwd_gen_system_ext",
Cole Faustf08ab3d2022-10-20 13:36:05 -0700154 tools: ["fs_config_generator"],
155 cmd: "$(location fs_config_generator) passwd --partition=system_ext --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
Tom Cherryfb303a52019-07-11 15:31:36 -0700156 srcs: [
157 ":target_fs_config_gen",
158 ":android_filesystem_config_header",
159 ],
160 out: ["passwd"],
161}
162
163prebuilt_etc {
164 name: "passwd_system_ext",
165 filename: "passwd",
166 system_ext_specific: true,
167 src: ":passwd_gen_system_ext",
168}
169
170// Generate the */etc/group text files for the target
171// These files may be empty if no AIDs are defined in
Dan Willemsend32e6d12019-04-10 12:25:07 -0700172// TARGET_FS_CONFIG_GEN files.
173genrule {
Tom Cherryfb303a52019-07-11 15:31:36 -0700174 name: "group_gen_system",
Cole Faustf08ab3d2022-10-20 13:36:05 -0700175 tools: ["fs_config_generator"],
176 cmd: "$(location fs_config_generator) group --partition=system --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
Dan Willemsend32e6d12019-04-10 12:25:07 -0700177 srcs: [
178 ":target_fs_config_gen",
179 ":android_filesystem_config_header",
180 ],
181 out: ["group"],
182}
183
184prebuilt_etc {
Tom Cherryfb303a52019-07-11 15:31:36 -0700185 name: "group_system",
186 filename: "group",
187 src: ":group_gen_system",
188}
189
190genrule {
191 name: "group_gen_vendor",
Cole Faustf08ab3d2022-10-20 13:36:05 -0700192 tools: ["fs_config_generator"],
193 cmd: "$(location fs_config_generator) group --partition=vendor --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
Tom Cherryfb303a52019-07-11 15:31:36 -0700194 srcs: [
195 ":target_fs_config_gen",
196 ":android_filesystem_config_header",
197 ],
198 out: ["group"],
199}
200
201prebuilt_etc {
202 name: "group_vendor",
203 filename: "group",
Dan Willemsend32e6d12019-04-10 12:25:07 -0700204 vendor: true,
Tom Cherryfb303a52019-07-11 15:31:36 -0700205 src: ":group_gen_vendor",
206}
207
208genrule {
209 name: "group_gen_odm",
Cole Faustf08ab3d2022-10-20 13:36:05 -0700210 tools: ["fs_config_generator"],
211 cmd: "$(location fs_config_generator) group --partition=odm --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
Tom Cherryfb303a52019-07-11 15:31:36 -0700212 srcs: [
213 ":target_fs_config_gen",
214 ":android_filesystem_config_header",
215 ],
216 out: ["group"],
217}
218
219prebuilt_etc {
220 name: "group_odm",
221 filename: "group",
222 device_specific: true,
223 src: ":group_gen_odm",
224}
225
226genrule {
227 name: "group_gen_product",
Cole Faustf08ab3d2022-10-20 13:36:05 -0700228 tools: ["fs_config_generator"],
229 cmd: "$(location fs_config_generator) group --partition=product --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
Tom Cherryfb303a52019-07-11 15:31:36 -0700230 srcs: [
231 ":target_fs_config_gen",
232 ":android_filesystem_config_header",
233 ],
234 out: ["group"],
235}
236
237prebuilt_etc {
238 name: "group_product",
239 filename: "group",
240 product_specific: true,
241 src: ":group_gen_product",
242}
243
244genrule {
245 name: "group_gen_system_ext",
Cole Faustf08ab3d2022-10-20 13:36:05 -0700246 tools: ["fs_config_generator"],
247 cmd: "$(location fs_config_generator) group --partition=system_ext --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
Tom Cherryfb303a52019-07-11 15:31:36 -0700248 srcs: [
249 ":target_fs_config_gen",
250 ":android_filesystem_config_header",
251 ],
252 out: ["group"],
253}
254
255prebuilt_etc {
256 name: "group_system_ext",
257 filename: "group",
258 system_ext_specific: true,
259 src: ":group_gen_system_ext",
Dan Willemsend32e6d12019-04-10 12:25:07 -0700260}
Jiyong Park8d6481b2024-05-03 16:55:32 +0900261
262fs_config_cmd = "$(location fs_config_generator) fsconfig " +
263 "--aid-header $(location :android_filesystem_config_header) " +
264 "--capability-header $(location :linux_capability_header) " +
265 "--out_file $(out) "
266fs_config_cmd_dirs = fs_config_cmd + "--dirs "
267fs_config_cmd_files = fs_config_cmd + "--files "
268
269genrule_defaults {
270 name: "fs_config_defaults",
271 tools: ["fs_config_generator"],
272 srcs: [
273 ":android_filesystem_config_header",
274 ":linux_capability_header",
275 ":target_fs_config_gen",
276 ],
277 out: ["out"],
278}
279
Wei Lia3c088c2024-11-04 09:31:14 -0800280// system
Jiyong Park8d6481b2024-05-03 16:55:32 +0900281genrule {
282 name: "fs_config_dirs_system_gen",
283 defaults: ["fs_config_defaults"],
284 cmd: fs_config_cmd_dirs +
285 "--partition system " +
286 "--all-partitions vendor,oem,odm,vendor_dlkm,odm_dlkm,system_dlkm " +
287 "$(locations :target_fs_config_gen)",
288}
289
290prebuilt_etc {
291 name: "fs_config_dirs_system",
292 filename: "fs_config_dirs",
293 src: ":fs_config_dirs_system_gen",
294}
295
296genrule {
297 name: "fs_config_files_system_gen",
298 defaults: ["fs_config_defaults"],
299 cmd: fs_config_cmd_files +
300 "--partition system " +
301 "--all-partitions vendor,oem,odm,vendor_dlkm,odm_dlkm,system_dlkm " +
302 "$(locations :target_fs_config_gen)",
303}
304
305prebuilt_etc {
306 name: "fs_config_files_system",
307 filename: "fs_config_files",
308 src: ":fs_config_files_system_gen",
309}
310
Wei Lia3c088c2024-11-04 09:31:14 -0800311// system_ext
Jiyong Park8d6481b2024-05-03 16:55:32 +0900312genrule {
313 name: "fs_config_dirs_system_ext_gen",
314 defaults: ["fs_config_defaults"],
315 cmd: fs_config_cmd_dirs +
316 "--partition system_ext " +
317 "$(locations :target_fs_config_gen)",
318}
319
320prebuilt_etc {
321 name: "fs_config_dirs_system_ext",
322 filename: "fs_config_dirs",
323 src: ":fs_config_dirs_system_ext_gen",
324 system_ext_specific: true,
325}
326
327genrule {
328 name: "fs_config_files_system_ext_gen",
329 defaults: ["fs_config_defaults"],
330 cmd: fs_config_cmd_files +
331 "--partition system_ext " +
332 "$(locations :target_fs_config_gen)",
333}
334
335prebuilt_etc {
336 name: "fs_config_files_system_ext",
337 filename: "fs_config_files",
338 src: ":fs_config_files_system_ext_gen",
339 system_ext_specific: true,
340}
341
Wei Lia3c088c2024-11-04 09:31:14 -0800342// product
Jiyong Park8d6481b2024-05-03 16:55:32 +0900343genrule {
344 name: "fs_config_dirs_product_gen",
345 defaults: ["fs_config_defaults"],
346 cmd: fs_config_cmd_dirs +
347 "--partition product " +
348 "$(locations :target_fs_config_gen)",
349}
350
351prebuilt_etc {
352 name: "fs_config_dirs_product",
353 filename: "fs_config_dirs",
354 src: ":fs_config_dirs_product_gen",
355 product_specific: true,
356}
357
358genrule {
359 name: "fs_config_files_product_gen",
360 defaults: ["fs_config_defaults"],
361 cmd: fs_config_cmd_files +
362 "--partition product " +
363 "$(locations :target_fs_config_gen)",
364}
365
366prebuilt_etc {
367 name: "fs_config_files_product",
368 filename: "fs_config_files",
369 src: ":fs_config_files_product_gen",
370 product_specific: true,
371}
372
Wei Lia3c088c2024-11-04 09:31:14 -0800373// vendor
Jiyong Park8d6481b2024-05-03 16:55:32 +0900374genrule {
375 name: "fs_config_dirs_vendor_gen",
376 defaults: ["fs_config_defaults"],
377 cmd: fs_config_cmd_dirs +
378 "--partition vendor " +
379 "$(locations :target_fs_config_gen)",
380}
381
382prebuilt_etc {
383 name: "fs_config_dirs_vendor",
384 filename: "fs_config_dirs",
385 src: ":fs_config_dirs_vendor_gen",
386 vendor: true,
387}
388
389genrule {
390 name: "fs_config_files_vendor_gen",
391 defaults: ["fs_config_defaults"],
392 cmd: fs_config_cmd_files +
393 "--partition vendor " +
394 "$(locations :target_fs_config_gen)",
395}
396
397prebuilt_etc {
398 name: "fs_config_files_vendor",
399 filename: "fs_config_files",
400 src: ":fs_config_files_vendor_gen",
401 vendor: true,
402}
403
Wei Lia3c088c2024-11-04 09:31:14 -0800404// odm
Jiyong Park8d6481b2024-05-03 16:55:32 +0900405genrule {
406 name: "fs_config_dirs_odm_gen",
407 defaults: ["fs_config_defaults"],
408 cmd: fs_config_cmd_dirs +
409 "--partition odm " +
410 "$(locations :target_fs_config_gen)",
411}
412
413prebuilt_etc {
414 name: "fs_config_dirs_odm",
415 filename: "fs_config_dirs",
416 src: ":fs_config_dirs_odm_gen",
417 device_specific: true,
418}
419
420genrule {
421 name: "fs_config_files_odm_gen",
422 defaults: ["fs_config_defaults"],
423 cmd: fs_config_cmd_files +
424 "--partition odm " +
425 "$(locations :target_fs_config_gen)",
426}
427
428prebuilt_etc {
429 name: "fs_config_files_odm",
430 filename: "fs_config_files",
431 src: ":fs_config_files_odm_gen",
432 device_specific: true,
433}
434
Wei Lia3c088c2024-11-04 09:31:14 -0800435// system_dlkm
436genrule {
437 name: "fs_config_dirs_system_dlkm_gen",
438 defaults: ["fs_config_defaults"],
439 cmd: fs_config_cmd_dirs +
440 "--partition system_dlkm " +
441 "$(locations :target_fs_config_gen)",
442}
443
444prebuilt_etc {
445 name: "fs_config_dirs_system_dlkm",
446 filename: "fs_config_dirs",
447 src: ":fs_config_dirs_system_dlkm_gen",
448 system_dlkm_specific: true,
449}
450
451genrule {
452 name: "fs_config_files_system_dlkm_gen",
453 defaults: ["fs_config_defaults"],
454 cmd: fs_config_cmd_files +
455 "--partition system_dlkm " +
456 "$(locations :target_fs_config_gen)",
457}
458
459prebuilt_etc {
460 name: "fs_config_files_system_dlkm",
461 filename: "fs_config_files",
462 src: ":fs_config_files_system_dlkm_gen",
463 system_dlkm_specific: true,
464}
465
466// vendor_dlkm
467genrule {
468 name: "fs_config_dirs_vendor_dlkm_gen",
469 defaults: ["fs_config_defaults"],
470 cmd: fs_config_cmd_dirs +
471 "--partition vendor_dlkm " +
472 "$(locations :target_fs_config_gen)",
473}
474
475prebuilt_etc {
476 name: "fs_config_dirs_vendor_dlkm",
477 filename: "fs_config_dirs",
478 src: ":fs_config_dirs_vendor_dlkm_gen",
479 vendor_dlkm_specific: true,
480}
481
482genrule {
483 name: "fs_config_files_vendor_dlkm_gen",
484 defaults: ["fs_config_defaults"],
485 cmd: fs_config_cmd_files +
486 "--partition vendor_dlkm " +
487 "$(locations :target_fs_config_gen)",
488}
489
490prebuilt_etc {
491 name: "fs_config_files_vendor_dlkm",
492 filename: "fs_config_files",
493 src: ":fs_config_files_vendor_dlkm_gen",
494 vendor_dlkm_specific: true,
495}
496
497// odm_dlkm
498genrule {
499 name: "fs_config_dirs_odm_dlkm_gen",
500 defaults: ["fs_config_defaults"],
501 cmd: fs_config_cmd_dirs +
502 "--partition odm_dlkm " +
503 "$(locations :target_fs_config_gen)",
504}
505
506prebuilt_etc {
507 name: "fs_config_dirs_odm_dlkm",
508 filename: "fs_config_dirs",
509 src: ":fs_config_dirs_odm_dlkm_gen",
510 odm_dlkm_specific: true,
511}
512
513genrule {
514 name: "fs_config_files_odm_dlkm_gen",
515 defaults: ["fs_config_defaults"],
516 cmd: fs_config_cmd_files +
517 "--partition odm_dlkm " +
518 "$(locations :target_fs_config_gen)",
519}
520
521prebuilt_etc {
522 name: "fs_config_files_odm_dlkm",
523 filename: "fs_config_files",
524 src: ":fs_config_files_odm_dlkm_gen",
525 odm_dlkm_specific: true,
526}
527
528// oem
529genrule {
530 name: "fs_config_dirs_oem_gen",
531 defaults: ["fs_config_defaults"],
532 cmd: fs_config_cmd_dirs +
533 "--partition oem " +
534 "$(locations :target_fs_config_gen)",
535}
536
537prebuilt_etc {
538 name: "fs_config_dirs_oem",
539 filename: "fs_config_dirs",
540 src: ":fs_config_dirs_oem_gen",
541 oem_specific: true,
542}
543
544genrule {
545 name: "fs_config_files_oem_gen",
546 defaults: ["fs_config_defaults"],
547 cmd: fs_config_cmd_files +
548 "--partition oem " +
549 "$(locations :target_fs_config_gen)",
550}
551
552prebuilt_etc {
553 name: "fs_config_files_oem",
554 filename: "fs_config_files",
555 src: ":fs_config_files_oem_gen",
556 oem_specific: true,
557}
558
559// Generate the <p>/etc/fs_config_dirs binary files for each partition.
560// Add fs_config_dirs to PRODUCT_PACKAGES in the device make file to enable.
561phony {
562 name: "fs_config_dirs",
563 required: [
564 "fs_config_dirs_system",
565 "fs_config_dirs_system_ext",
566 "fs_config_dirs_product",
567 "fs_config_dirs_nonsystem",
568 ],
569}
570
571// Generate the <p>/etc/fs_config_files binary files for each partition.
572// Add fs_config_files to PRODUCT_PACKAGES in the device make file to enable.
573phony {
574 name: "fs_config_files",
575 required: [
576 "fs_config_files_system",
577 "fs_config_files_system_ext",
578 "fs_config_files_product",
579 "fs_config_files_nonsystem",
580 ],
581}
582
583// Generate the <p>/etc/fs_config_dirs binary files for all enabled partitions
584// excluding /system, /system_ext and /product. Add fs_config_dirs_nonsystem to
585// PRODUCT_PACKAGES in the device make file to enable.
586phony {
587 name: "fs_config_dirs_nonsystem",
588 required: [] +
589 select(soong_config_variable("fs_config", "vendor"), {
590 true: ["fs_config_dirs_vendor"],
591 default: [],
592 }) +
593 select(soong_config_variable("fs_config", "oem"), {
594 true: ["fs_config_dirs_oem"],
595 default: [],
596 }) +
597 select(soong_config_variable("fs_config", "odm"), {
598 true: ["fs_config_dirs_odm"],
599 default: [],
600 }) +
601 select(soong_config_variable("fs_config", "vendor_dlkm"), {
602 true: ["fs_config_dirs_vendor_dlkm"],
603 default: [],
604 }) +
605 select(soong_config_variable("fs_config", "odm_dlkm"), {
606 true: ["fs_config_dirs_odm_dlkm"],
607 default: [],
608 }) +
609 select(soong_config_variable("fs_config", "system_dlkm"), {
610 true: ["fs_config_dirs_system_dlkm"],
611 default: [],
612 }),
613}
614
615// Generate the <p>/etc/fs_config_files binary files for all enabled partitions
616// excluding /system, /system_ext and /product. Add fs_config_files_nonsystem to
617// PRODUCT_PACKAGES in the device make file to enable.
618phony {
619 name: "fs_config_files_nonsystem",
620 required: [] +
621 select(soong_config_variable("fs_config", "vendor"), {
622 true: ["fs_config_files_vendor"],
623 default: [],
624 }) +
625 select(soong_config_variable("fs_config", "oem"), {
626 true: ["fs_config_files_oem"],
627 default: [],
628 }) +
629 select(soong_config_variable("fs_config", "odm"), {
630 true: ["fs_config_files_odm"],
631 default: [],
632 }) +
633 select(soong_config_variable("fs_config", "vendor_dlkm"), {
634 true: ["fs_config_files_vendor_dlkm"],
635 default: [],
636 }) +
637 select(soong_config_variable("fs_config", "odm_dlkm"), {
638 true: ["fs_config_files_odm_dlkm"],
639 default: [],
640 }) +
641 select(soong_config_variable("fs_config", "system_dlkm"), {
642 true: ["fs_config_files_system_dlkm"],
643 default: [],
644 }),
645}