• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// 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
15package {
16    // See: http://go/android-license-faq
17    default_applicable_licenses: ["Android-Apache-2.0"],
18}
19
20bootstrap_go_package {
21    name: "soong-fs_config",
22    pkgPath: "android/soong/fs_config",
23    deps: [
24        "soong-android",
25        "soong-genrule",
26    ],
27    srcs: [
28        "fs_config.go",
29    ],
30    pluginFor: ["soong_build"],
31}
32
33cc_binary_host {
34    name: "fs_config",
35    srcs: ["fs_config.c"],
36    shared_libs: [
37        "libcutils",
38    ],
39    cflags: ["-Werror"],
40}
41
42python_binary_host {
43    name: "fs_config_generator",
44    srcs: ["fs_config_generator.py"],
45}
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    ],
54}
55
56target_fs_config_gen_filegroup {
57    name: "target_fs_config_gen",
58}
59
60genrule {
61    name: "oemaids_header_gen",
62    tools: ["fs_config_generator"],
63    cmd: "$(location fs_config_generator) oemaid --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)",
64    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",
73    vendor_available: true,
74    generated_headers: ["oemaids_header_gen"],
75    export_generated_headers: ["oemaids_header_gen"],
76}
77
78// Generate the */etc/passwd text files for the target
79// These files may be empty if no AIDs are defined in
80// TARGET_FS_CONFIG_GEN files.
81genrule {
82    name: "passwd_gen_system",
83    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)",
85    srcs: [
86        ":target_fs_config_gen",
87        ":android_filesystem_config_header",
88    ],
89    out: ["passwd"],
90}
91
92prebuilt_etc {
93    name: "passwd_system",
94    filename: "passwd",
95    src: ":passwd_gen_system",
96}
97
98genrule {
99    name: "passwd_gen_vendor",
100    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)",
102    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",
118    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)",
120    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",
136    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)",
138    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",
154    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)",
156    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
172// TARGET_FS_CONFIG_GEN files.
173genrule {
174    name: "group_gen_system",
175    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)",
177    srcs: [
178        ":target_fs_config_gen",
179        ":android_filesystem_config_header",
180    ],
181    out: ["group"],
182}
183
184prebuilt_etc {
185    name: "group_system",
186    filename: "group",
187    src: ":group_gen_system",
188}
189
190genrule {
191    name: "group_gen_vendor",
192    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)",
194    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",
204    vendor: true,
205    src: ":group_gen_vendor",
206}
207
208genrule {
209    name: "group_gen_odm",
210    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)",
212    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",
228    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)",
230    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",
246    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)",
248    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",
260}
261
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
431