Add canned_fs_config to apex module type

The property is used to customize uid/gid/mode/capabilities of files in
an APEX.

Bug: 209971551
Test: m
Change-Id: I484e46ff819a5266c1e8046dae337e18ef3fefea
This commit is contained in:
Jiyong Park
2021-12-13 23:56:35 +09:00
parent 1b0893eeba
commit 038e852ce1
2 changed files with 13 additions and 0 deletions

View File

@@ -98,6 +98,14 @@ type apexBundleProperties struct {
// /system/sepolicy/apex/<module_name>_file_contexts. // /system/sepolicy/apex/<module_name>_file_contexts.
File_contexts *string `android:"path"` File_contexts *string `android:"path"`
// Path to the canned fs config file for customizing file's uid/gid/mod/capabilities. The
// format is /<path_or_glob> <uid> <gid> <mode> [capabilities=0x<cap>], where path_or_glob is a
// path or glob pattern for a file or set of files, uid/gid are numerial values of user ID
// and group ID, mode is octal value for the file mode, and cap is hexadecimal value for the
// capability. If this property is not set, or a file is missing in the file, default config
// is used.
Canned_fs_config *string `android:"path"`
ApexNativeDependencies ApexNativeDependencies
Multilib apexMultilibProperties Multilib apexMultilibProperties

View File

@@ -1067,6 +1067,11 @@ func (a *apexBundle) buildCannedFsConfig(ctx android.ModuleContext) android.Outp
file := appSetFiles[dir] file := appSetFiles[dir]
cmd.Text("zipinfo -1").Input(file).Textf(`| sed "s:\(.*\):/%s/\1 1000 1000 0644:";`, dir) cmd.Text("zipinfo -1").Input(file).Textf(`| sed "s:\(.*\):/%s/\1 1000 1000 0644:";`, dir)
} }
// Custom fs_config is "appended" to the last so that entries from the file are preferred
// over default ones set above.
if a.properties.Canned_fs_config != nil {
cmd.Text("cat").Input(android.PathForModuleSrc(ctx, *a.properties.Canned_fs_config))
}
cmd.Text(")").FlagWithOutput("> ", cannedFsConfig) cmd.Text(")").FlagWithOutput("> ", cannedFsConfig)
builder.Build("generateFsConfig", fmt.Sprintf("Generating canned fs config for %s", a.BaseModuleName())) builder.Build("generateFsConfig", fmt.Sprintf("Generating canned fs config for %s", a.BaseModuleName()))