Include bpf program in APEXes
bpf program is put to an APEX via 'bpfs' property. It is placed under etc/bpf directory in it. Fix: 167530625 Test: m Change-Id: Ia36b486f0cffb619ecc4f7a318cde881abc5baf4
This commit is contained in:
22
apex/apex.go
22
apex/apex.go
@@ -26,6 +26,7 @@ import (
|
||||
"github.com/google/blueprint/proptools"
|
||||
|
||||
"android/soong/android"
|
||||
"android/soong/bpf"
|
||||
"android/soong/cc"
|
||||
prebuilt_etc "android/soong/etc"
|
||||
"android/soong/java"
|
||||
@@ -63,6 +64,7 @@ var (
|
||||
usesTag = dependencyTag{name: "uses"}
|
||||
androidAppTag = dependencyTag{name: "androidApp", payload: true}
|
||||
rroTag = dependencyTag{name: "rro", payload: true}
|
||||
bpfTag = dependencyTag{name: "bpf", payload: true}
|
||||
|
||||
apexAvailBaseline = makeApexAvailableBaseline()
|
||||
|
||||
@@ -970,6 +972,9 @@ type apexBundleProperties struct {
|
||||
// List of prebuilt files that are embedded inside this APEX bundle
|
||||
Prebuilts []string
|
||||
|
||||
// List of BPF programs inside APEX
|
||||
Bpfs []string
|
||||
|
||||
// Name of the apex_key module that provides the private key to sign APEX
|
||||
Key *string
|
||||
|
||||
@@ -1458,6 +1463,9 @@ func (a *apexBundle) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||
ctx.AddFarVariationDependencies(ctx.Config().AndroidCommonTarget.Variations(),
|
||||
javaLibTag, a.properties.Java_libs...)
|
||||
|
||||
ctx.AddFarVariationDependencies(ctx.Config().AndroidCommonTarget.Variations(),
|
||||
bpfTag, a.properties.Bpfs...)
|
||||
|
||||
// With EMMA_INSTRUMENT_FRAMEWORK=true the ART boot image includes jacoco library.
|
||||
if a.artApex && ctx.Config().IsEnvTrue("EMMA_INSTRUMENT_FRAMEWORK") {
|
||||
ctx.AddFarVariationDependencies(ctx.Config().AndroidCommonTarget.Variations(),
|
||||
@@ -1778,6 +1786,11 @@ func apexFileForRuntimeResourceOverlay(ctx android.BaseModuleContext, rro java.R
|
||||
return af
|
||||
}
|
||||
|
||||
func apexFileForBpfProgram(ctx android.BaseModuleContext, builtFile android.Path, bpfProgram bpf.BpfModule) apexFile {
|
||||
dirInApex := filepath.Join("etc", "bpf")
|
||||
return newApexFile(ctx, builtFile, builtFile.Base(), dirInApex, etc, bpfProgram)
|
||||
}
|
||||
|
||||
// Context "decorator", overriding the InstallBypassMake method to always reply `true`.
|
||||
type flattenedApexContext struct {
|
||||
android.ModuleContext
|
||||
@@ -2113,6 +2126,15 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
} else {
|
||||
ctx.PropertyErrorf("rros", "%q is not an runtime_resource_overlay module", depName)
|
||||
}
|
||||
case bpfTag:
|
||||
if bpfProgram, ok := child.(bpf.BpfModule); ok {
|
||||
filesToCopy, _ := bpfProgram.OutputFiles("")
|
||||
for _, bpfFile := range filesToCopy {
|
||||
filesInfo = append(filesInfo, apexFileForBpfProgram(ctx, bpfFile, bpfProgram))
|
||||
}
|
||||
} else {
|
||||
ctx.PropertyErrorf("bpfs", "%q is not a bpf module", depName)
|
||||
}
|
||||
case prebuiltTag:
|
||||
if prebuilt, ok := child.(prebuilt_etc.PrebuiltEtcModule); ok {
|
||||
filesInfo = append(filesInfo, apexFileForPrebuiltEtc(ctx, prebuilt, depName))
|
||||
|
Reference in New Issue
Block a user