Merge "Move file_contexts file for APEXes to under /system/sepolicy"
diff --git a/apex/apex.go b/apex/apex.go
index 3e7c0a7..7232c1b 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -171,8 +171,10 @@
// "manifest.json"
Manifest *string
- // File contexts file for setting security context to each file in this APEX bundle
- // Default: "file_contexts".
+ // Determines the file contexts file for setting security context to each file in this APEX bundle.
+ // Specifically, when this is set to <value>, /system/sepolicy/apex/<value>_file_contexts file is
+ // used.
+ // Default: <name_of_this_module>
File_contexts *string
// List of native shared libs that are embedded inside this APEX bundle
@@ -489,7 +491,15 @@
})
manifest := android.PathForModuleSrc(ctx, proptools.StringDefault(a.properties.Manifest, "manifest.json"))
- fileContexts := android.PathForModuleSrc(ctx, proptools.StringDefault(a.properties.File_contexts, "file_contexts"))
+
+ fcName := proptools.StringDefault(a.properties.File_contexts, a.ModuleBase.Name())
+ fileContextsPath := "system/sepolicy/apex/" + fcName + "_file_contexts"
+ fileContextsOptionalPath := android.ExistentPathForSource(ctx, fileContextsPath)
+ if !fileContextsOptionalPath.Valid() {
+ ctx.ModuleErrorf("Cannot find file_contexts file: %q", fileContextsPath)
+ return
+ }
+ fileContexts := fileContextsOptionalPath.Path()
unsignedOutputFile := android.PathForModuleOut(ctx, a.ModuleBase.Name()+apexSuffix+".unsigned")