blob: 6aa528963d8b69f63af82d1cfb2fbed679fec06b [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
280genrule {
281 name: "fs_config_dirs_system_gen",
282 defaults: ["fs_config_defaults"],
283 cmd: fs_config_cmd_dirs +
284 "--partition system " +
285 "--all-partitions vendor,oem,odm,vendor_dlkm,odm_dlkm,system_dlkm " +
286 "$(locations :target_fs_config_gen)",
287}
288
289prebuilt_etc {
290 name: "fs_config_dirs_system",
291 filename: "fs_config_dirs",
292 src: ":fs_config_dirs_system_gen",
293}
294
295genrule {
296 name: "fs_config_files_system_gen",
297 defaults: ["fs_config_defaults"],
298 cmd: fs_config_cmd_files +
299 "--partition system " +
300 "--all-partitions vendor,oem,odm,vendor_dlkm,odm_dlkm,system_dlkm " +
301 "$(locations :target_fs_config_gen)",
302}
303
304prebuilt_etc {
305 name: "fs_config_files_system",
306 filename: "fs_config_files",
307 src: ":fs_config_files_system_gen",
308}
309
310genrule {
311 name: "fs_config_dirs_system_ext_gen",
312 defaults: ["fs_config_defaults"],
313 cmd: fs_config_cmd_dirs +
314 "--partition system_ext " +
315 "$(locations :target_fs_config_gen)",
316}
317
318prebuilt_etc {
319 name: "fs_config_dirs_system_ext",
320 filename: "fs_config_dirs",
321 src: ":fs_config_dirs_system_ext_gen",
322 system_ext_specific: true,
323}
324
325genrule {
326 name: "fs_config_files_system_ext_gen",
327 defaults: ["fs_config_defaults"],
328 cmd: fs_config_cmd_files +
329 "--partition system_ext " +
330 "$(locations :target_fs_config_gen)",
331}
332
333prebuilt_etc {
334 name: "fs_config_files_system_ext",
335 filename: "fs_config_files",
336 src: ":fs_config_files_system_ext_gen",
337 system_ext_specific: true,
338}
339
340genrule {
341 name: "fs_config_dirs_product_gen",
342 defaults: ["fs_config_defaults"],
343 cmd: fs_config_cmd_dirs +
344 "--partition product " +
345 "$(locations :target_fs_config_gen)",
346}
347
348prebuilt_etc {
349 name: "fs_config_dirs_product",
350 filename: "fs_config_dirs",
351 src: ":fs_config_dirs_product_gen",
352 product_specific: true,
353}
354
355genrule {
356 name: "fs_config_files_product_gen",
357 defaults: ["fs_config_defaults"],
358 cmd: fs_config_cmd_files +
359 "--partition product " +
360 "$(locations :target_fs_config_gen)",
361}
362
363prebuilt_etc {
364 name: "fs_config_files_product",
365 filename: "fs_config_files",
366 src: ":fs_config_files_product_gen",
367 product_specific: true,
368}
369
370genrule {
371 name: "fs_config_dirs_vendor_gen",
372 defaults: ["fs_config_defaults"],
373 cmd: fs_config_cmd_dirs +
374 "--partition vendor " +
375 "$(locations :target_fs_config_gen)",
376}
377
378prebuilt_etc {
379 name: "fs_config_dirs_vendor",
380 filename: "fs_config_dirs",
381 src: ":fs_config_dirs_vendor_gen",
382 vendor: true,
383}
384
385genrule {
386 name: "fs_config_files_vendor_gen",
387 defaults: ["fs_config_defaults"],
388 cmd: fs_config_cmd_files +
389 "--partition vendor " +
390 "$(locations :target_fs_config_gen)",
391}
392
393prebuilt_etc {
394 name: "fs_config_files_vendor",
395 filename: "fs_config_files",
396 src: ":fs_config_files_vendor_gen",
397 vendor: true,
398}
399
400genrule {
401 name: "fs_config_dirs_odm_gen",
402 defaults: ["fs_config_defaults"],
403 cmd: fs_config_cmd_dirs +
404 "--partition odm " +
405 "$(locations :target_fs_config_gen)",
406}
407
408prebuilt_etc {
409 name: "fs_config_dirs_odm",
410 filename: "fs_config_dirs",
411 src: ":fs_config_dirs_odm_gen",
412 device_specific: true,
413}
414
415genrule {
416 name: "fs_config_files_odm_gen",
417 defaults: ["fs_config_defaults"],
418 cmd: fs_config_cmd_files +
419 "--partition odm " +
420 "$(locations :target_fs_config_gen)",
421}
422
423prebuilt_etc {
424 name: "fs_config_files_odm",
425 filename: "fs_config_files",
426 src: ":fs_config_files_odm_gen",
427 device_specific: true,
428}
429
430// TODO(jiyong): add fs_config for oem, system_dlkm, vendor_dlkm, odm_dlkm partitions