From 14e49130bbeba7d222c8851e2f59710ac0f6eb71 Mon Sep 17 00:00:00 2001 From: satayev Date: Mon, 17 May 2021 21:03:07 +0100 Subject: Move classpaths.proto related info into a separate provider. The new info struct can be easily shared with systemserverclasspath fragments. Bug: 180105615 Test: m nothing Change-Id: I9986e64fdf19f4168da63c156de3dc9bcafac8d8 --- java/classpath_fragment.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'java/classpath_fragment.go') diff --git a/java/classpath_fragment.go b/java/classpath_fragment.go index 7422fa2d5..740809093 100644 --- a/java/classpath_fragment.go +++ b/java/classpath_fragment.go @@ -18,6 +18,7 @@ package java import ( "fmt" + "github.com/google/blueprint" "strings" "android/soong/android" @@ -120,6 +121,12 @@ func (c *ClasspathFragmentBase) generateClasspathProtoBuildActions(ctx android.M FlagWithOutput("--output=", c.outputFilepath) rule.Build("classpath_fragment", "Compiling "+c.outputFilepath.String()) + + classpathProtoInfo := ClasspathFragmentProtoContentInfo{ + ClasspathFragmentProtoInstallDir: c.installDirPath, + ClasspathFragmentProtoOutput: c.outputFilepath, + } + ctx.SetProvider(ClasspathFragmentProtoContentInfoProvider, classpathProtoInfo) } func writeClasspathsJson(ctx android.ModuleContext, output android.WritablePath, jars []classpathJar) { @@ -157,3 +164,23 @@ func (c *ClasspathFragmentBase) androidMkEntries() []android.AndroidMkEntries { }, }} } + +var ClasspathFragmentProtoContentInfoProvider = blueprint.NewProvider(ClasspathFragmentProtoContentInfo{}) + +type ClasspathFragmentProtoContentInfo struct { + // ClasspathFragmentProtoOutput is an output path for the generated classpaths.proto config of this module. + // + // The file should be copied to a relevant place on device, see ClasspathFragmentProtoInstallDir + // for more details. + ClasspathFragmentProtoOutput android.OutputPath + + // ClasspathFragmentProtoInstallDir contains information about on device location for the generated classpaths.proto file. + // + // The path encodes expected sub-location within partitions, i.e. etc/classpaths/, + // for ClasspathFragmentProtoOutput. To get sub-location, instead of the full output / make path + // use android.InstallPath#Rel(). + // + // This is only relevant for APEX modules as they perform their own installation; while regular + // system files are installed via ClasspathFragmentBase#androidMkEntries(). + ClasspathFragmentProtoInstallDir android.InstallPath +} -- cgit v1.2.3-59-g8ed1b