diff options
author | Jiyong Park <jiyong@google.com> | 2018-11-10 06:37:15 +0900 |
---|---|---|
committer | Jiyong Park <jiyong@google.com> | 2018-11-13 10:59:40 +0900 |
commit | d0a65bae178f0b8d65a8ab0f71f313baa34031a1 (patch) | |
tree | 34bf3f593615f03a4628de68c5ad139166191d10 /apex | |
parent | 2fcac47e9dc56ea99fdfbd281212e2aa6f9f86fc (diff) | |
download | build_soong-d0a65bae178f0b8d65a8ab0f71f313baa34031a1.tar.gz build_soong-d0a65bae178f0b8d65a8ab0f71f313baa34031a1.tar.bz2 build_soong-d0a65bae178f0b8d65a8ab0f71f313baa34031a1.zip |
Move file_contexts file for APEXes to under /system/sepolicy
For centralized development of sepolices, file_contexts files for APEXes
are all moved to under /system/seplicy.
The meaning of the existing file_contexts has been changed; when it is
set to <value>, then /system/sepolicy/apex/<value>_file_contexts is
used. When unset, it defaults to the name of the module. The property is
not removed in order to support creating multiple versions of the same
apex (for testing purpose) built with same file_contexts file.
Bug: 119034475
Test: m apex.test com.android.tzdata com.android.runtime
Change-Id: I7d14a9e37baea9ab78d9e15e1164cce54d256f56
Diffstat (limited to 'apex')
-rw-r--r-- | apex/apex.go | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/apex/apex.go b/apex/apex.go index 3e7c0a79..7232c1b6 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -171,8 +171,10 @@ type apexBundleProperties struct { // "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 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) { }) 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") |