Merge "[NETD-BPF#34] Add a tag for bpf to specify the install folder"

This commit is contained in:
Treehugger Robot
2022-01-19 09:41:57 +00:00
committed by Gerrit Code Review
3 changed files with 25 additions and 5 deletions

View File

@@ -1612,8 +1612,8 @@ func apexFileForRuntimeResourceOverlay(ctx android.BaseModuleContext, rro java.R
return af return af
} }
func apexFileForBpfProgram(ctx android.BaseModuleContext, builtFile android.Path, bpfProgram bpf.BpfModule) apexFile { func apexFileForBpfProgram(ctx android.BaseModuleContext, builtFile android.Path, apex_sub_dir string, bpfProgram bpf.BpfModule) apexFile {
dirInApex := filepath.Join("etc", "bpf") dirInApex := filepath.Join("etc", "bpf", apex_sub_dir)
return newApexFile(ctx, builtFile, builtFile.Base(), dirInApex, etc, bpfProgram) return newApexFile(ctx, builtFile, builtFile.Base(), dirInApex, etc, bpfProgram)
} }
@@ -1831,8 +1831,9 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) {
case bpfTag: case bpfTag:
if bpfProgram, ok := child.(bpf.BpfModule); ok { if bpfProgram, ok := child.(bpf.BpfModule); ok {
filesToCopy, _ := bpfProgram.OutputFiles("") filesToCopy, _ := bpfProgram.OutputFiles("")
apex_sub_dir := bpfProgram.SubDir()
for _, bpfFile := range filesToCopy { for _, bpfFile := range filesToCopy {
filesInfo = append(filesInfo, apexFileForBpfProgram(ctx, bpfFile, bpfProgram)) filesInfo = append(filesInfo, apexFileForBpfProgram(ctx, bpfFile, apex_sub_dir, bpfProgram))
} }
} else { } else {
ctx.PropertyErrorf("bpfs", "%q is not a bpf module", depName) ctx.PropertyErrorf("bpfs", "%q is not a bpf module", depName)

View File

@@ -623,7 +623,7 @@ func TestDefaults(t *testing.T) {
java_libs: ["myjar"], java_libs: ["myjar"],
apps: ["AppFoo"], apps: ["AppFoo"],
rros: ["rro"], rros: ["rro"],
bpfs: ["bpf"], bpfs: ["bpf", "netd_test"],
updatable: false, updatable: false,
} }
@@ -676,6 +676,12 @@ func TestDefaults(t *testing.T) {
srcs: ["bpf.c", "bpf2.c"], srcs: ["bpf.c", "bpf2.c"],
} }
bpf {
name: "netd_test",
srcs: ["netd_test.c"],
sub_dir: "netd",
}
`) `)
ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{ ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{
"etc/myetc", "etc/myetc",
@@ -685,6 +691,7 @@ func TestDefaults(t *testing.T) {
"overlay/blue/rro.apk", "overlay/blue/rro.apk",
"etc/bpf/bpf.o", "etc/bpf/bpf.o",
"etc/bpf/bpf2.o", "etc/bpf/bpf2.o",
"etc/bpf/netd/netd_test.o",
}) })
} }

View File

@@ -54,12 +54,16 @@ type BpfModule interface {
android.Module android.Module
OutputFiles(tag string) (android.Paths, error) OutputFiles(tag string) (android.Paths, error)
// Returns the sub install directory if the bpf module is included by apex.
SubDir() string
} }
type BpfProperties struct { type BpfProperties struct {
Srcs []string `android:"path"` Srcs []string `android:"path"`
Cflags []string Cflags []string
Include_dirs []string Include_dirs []string
Sub_dir string
} }
type bpf struct { type bpf struct {
@@ -121,6 +125,10 @@ func (bpf *bpf) AndroidMk() android.AndroidMkData {
fmt.Fprintln(w) fmt.Fprintln(w)
fmt.Fprintln(w, "LOCAL_PATH :=", moduleDir) fmt.Fprintln(w, "LOCAL_PATH :=", moduleDir)
fmt.Fprintln(w) fmt.Fprintln(w)
localModulePath := "LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/bpf"
if len(bpf.properties.Sub_dir) > 0 {
localModulePath += "/" + bpf.properties.Sub_dir
}
for _, obj := range bpf.objs { for _, obj := range bpf.objs {
objName := name + "_" + obj.Base() objName := name + "_" + obj.Base()
names = append(names, objName) names = append(names, objName)
@@ -130,7 +138,7 @@ func (bpf *bpf) AndroidMk() android.AndroidMkData {
fmt.Fprintln(w, "LOCAL_PREBUILT_MODULE_FILE :=", obj.String()) fmt.Fprintln(w, "LOCAL_PREBUILT_MODULE_FILE :=", obj.String())
fmt.Fprintln(w, "LOCAL_MODULE_STEM :=", obj.Base()) fmt.Fprintln(w, "LOCAL_MODULE_STEM :=", obj.Base())
fmt.Fprintln(w, "LOCAL_MODULE_CLASS := ETC") fmt.Fprintln(w, "LOCAL_MODULE_CLASS := ETC")
fmt.Fprintln(w, "LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/bpf") fmt.Fprintln(w, localModulePath)
fmt.Fprintln(w, "include $(BUILD_PREBUILT)") fmt.Fprintln(w, "include $(BUILD_PREBUILT)")
fmt.Fprintln(w) fmt.Fprintln(w)
} }
@@ -154,6 +162,10 @@ func (bpf *bpf) OutputFiles(tag string) (android.Paths, error) {
} }
} }
func (bpf *bpf) SubDir() string {
return bpf.properties.Sub_dir
}
var _ android.OutputFileProducer = (*bpf)(nil) var _ android.OutputFileProducer = (*bpf)(nil)
func BpfFactory() android.Module { func BpfFactory() android.Module {