Use OutputFilesProvider on Import, AARImport and AndroidAppImport

In the context of incremental soong, the output files
inter-module-communication will be through OutputFilesProvider.
The OutputFileProducer interface will be deprecated.

Test: CI
Bug: 339477385
Change-Id: I51ccf59f97cb8a790642cb4463c479feaf18058a
This commit is contained in:
mrziwang
2024-07-09 10:41:55 -07:00
parent ad111586a7
commit 68786d81de
5 changed files with 24 additions and 51 deletions

View File

@@ -1021,20 +1021,6 @@ type AARImport struct {
classLoaderContexts dexpreopt.ClassLoaderContextMap
}
var _ android.OutputFileProducer = (*AARImport)(nil)
// For OutputFileProducer interface
func (a *AARImport) OutputFiles(tag string) (android.Paths, error) {
switch tag {
case ".aar":
return []android.Path{a.aarPath}, nil
case "":
return []android.Path{a.implementationAndResourcesJarFile}, nil
default:
return nil, fmt.Errorf("unsupported module reference tag %q", tag)
}
}
func (a *AARImport) SdkVersion(ctx android.EarlyModuleContext) android.SdkSpec {
return android.SdkSpecFrom(ctx, String(a.properties.Sdk_version))
}
@@ -1388,6 +1374,9 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
android.SetProvider(ctx, JniPackageProvider, JniPackageInfo{
JniPackages: a.jniPackages,
})
ctx.SetOutputFiles([]android.Path{a.implementationAndResourcesJarFile}, "")
ctx.SetOutputFiles([]android.Path{a.aarPath}, ".aar")
}
func (a *AARImport) HeaderJars() android.Paths {

View File

@@ -160,20 +160,20 @@ func TestAndroidLibraryOutputFilesRel(t *testing.T) {
baz := result.ModuleForTests("baz", "android_common")
fooOutputPath := android.OutputFileForModule(android.PathContext(nil), foo.Module(), "")
barOutputPath := android.OutputFileForModule(android.PathContext(nil), bar.Module(), "")
bazOutputPath := android.OutputFileForModule(android.PathContext(nil), baz.Module(), "")
barOutputPaths := bar.OutputFiles(t, "")
bazOutputPaths := baz.OutputFiles(t, "")
android.AssertPathRelativeToTopEquals(t, "foo output path",
"out/soong/.intermediates/foo/android_common/withres/foo.jar", fooOutputPath)
android.AssertPathRelativeToTopEquals(t, "bar output path",
"out/soong/.intermediates/bar/android_common/aar/bar.jar", barOutputPath)
android.AssertPathRelativeToTopEquals(t, "baz output path",
"out/soong/.intermediates/baz/android_common/withres/baz.jar", bazOutputPath)
android.AssertPathsRelativeToTopEquals(t, "bar output path",
[]string{"out/soong/.intermediates/bar/android_common/aar/bar.jar"}, barOutputPaths)
android.AssertPathsRelativeToTopEquals(t, "baz output path",
[]string{"out/soong/.intermediates/baz/android_common/withres/baz.jar"}, bazOutputPaths)
android.AssertStringEquals(t, "foo relative output path",
"foo.jar", fooOutputPath.Rel())
android.AssertStringEquals(t, "bar relative output path",
"bar.jar", barOutputPath.Rel())
"bar.jar", barOutputPaths[0].Rel())
android.AssertStringEquals(t, "baz relative output path",
"baz.jar", bazOutputPath.Rel())
"baz.jar", bazOutputPaths[0].Rel())
}

View File

@@ -17,7 +17,6 @@ package java
// This file contains the module implementations for android_app_import and android_test_import.
import (
"fmt"
"reflect"
"strings"
@@ -422,6 +421,8 @@ func (a *AndroidAppImport) generateAndroidBuildActions(ctx android.ModuleContext
},
)
ctx.SetOutputFiles([]android.Path{a.outputFile}, "")
// TODO: androidmk converter jni libs
}
@@ -461,15 +462,6 @@ func (a *AndroidAppImport) OutputFile() android.Path {
return a.outputFile
}
func (a *AndroidAppImport) OutputFiles(tag string) (android.Paths, error) {
switch tag {
case "":
return []android.Path{a.outputFile}, nil
default:
return nil, fmt.Errorf("unsupported module reference tag %q", tag)
}
}
func (a *AndroidAppImport) JacocoReportClassesFile() android.Path {
return nil
}

View File

@@ -2752,6 +2752,9 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) {
StubsLinkType: j.stubsLinkType,
// TODO(b/289117800): LOCAL_ACONFIG_FILES for prebuilts
})
ctx.SetOutputFiles(android.Paths{j.combinedImplementationFile}, "")
ctx.SetOutputFiles(android.Paths{j.combinedImplementationFile}, ".jar")
}
func (j *Import) maybeInstall(ctx android.ModuleContext, jarName string, outputFile android.Path) {
@@ -2772,17 +2775,6 @@ func (j *Import) maybeInstall(ctx android.ModuleContext, jarName string, outputF
ctx.InstallFile(installDir, jarName, outputFile)
}
func (j *Import) OutputFiles(tag string) (android.Paths, error) {
switch tag {
case "", ".jar":
return android.Paths{j.combinedImplementationFile}, nil
default:
return nil, fmt.Errorf("unsupported module reference tag %q", tag)
}
}
var _ android.OutputFileProducer = (*Import)(nil)
func (j *Import) HeaderJars() android.Paths {
return android.PathsIfNonNil(j.combinedHeaderFile)
}

View File

@@ -2994,22 +2994,22 @@ func TestJavaLibraryOutputFilesRel(t *testing.T) {
baz := result.ModuleForTests("baz", "android_common")
fooOutputPath := android.OutputFileForModule(android.PathContext(nil), foo.Module(), "")
barOutputPath := android.OutputFileForModule(android.PathContext(nil), bar.Module(), "")
bazOutputPath := android.OutputFileForModule(android.PathContext(nil), baz.Module(), "")
barOutputPaths := bar.OutputFiles(t, "")
bazOutputPaths := baz.OutputFiles(t, "")
android.AssertPathRelativeToTopEquals(t, "foo output path",
"out/soong/.intermediates/foo/android_common/javac/foo.jar", fooOutputPath)
android.AssertPathRelativeToTopEquals(t, "bar output path",
"out/soong/.intermediates/bar/android_common/combined/bar.jar", barOutputPath)
android.AssertPathRelativeToTopEquals(t, "baz output path",
"out/soong/.intermediates/baz/android_common/combined/baz.jar", bazOutputPath)
android.AssertPathsRelativeToTopEquals(t, "bar output path",
[]string{"out/soong/.intermediates/bar/android_common/combined/bar.jar"}, barOutputPaths)
android.AssertPathsRelativeToTopEquals(t, "baz output path",
[]string{"out/soong/.intermediates/baz/android_common/combined/baz.jar"}, bazOutputPaths)
android.AssertStringEquals(t, "foo relative output path",
"foo.jar", fooOutputPath.Rel())
android.AssertStringEquals(t, "bar relative output path",
"bar.jar", barOutputPath.Rel())
"bar.jar", barOutputPaths[0].Rel())
android.AssertStringEquals(t, "baz relative output path",
"baz.jar", bazOutputPath.Rel())
"baz.jar", bazOutputPaths[0].Rel())
}
func assertTestOnlyAndTopLevel(t *testing.T, ctx *android.TestResult, expectedTestOnly []string, expectedTopLevel []string) {