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
diff --git a/java/aar.go b/java/aar.go
index 3168d9b..4aae62a 100644
--- a/java/aar.go
+++ b/java/aar.go
@@ -1021,20 +1021,6 @@
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 @@
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 {
diff --git a/java/aar_test.go b/java/aar_test.go
index 18efd20..1ab1f9c 100644
--- a/java/aar_test.go
+++ b/java/aar_test.go
@@ -160,20 +160,20 @@
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())
}
diff --git a/java/app_import.go b/java/app_import.go
index dc8470d..fa87997 100644
--- a/java/app_import.go
+++ b/java/app_import.go
@@ -17,7 +17,6 @@
// This file contains the module implementations for android_app_import and android_test_import.
import (
- "fmt"
"reflect"
"strings"
@@ -422,6 +421,8 @@
},
)
+ ctx.SetOutputFiles([]android.Path{a.outputFile}, "")
+
// TODO: androidmk converter jni libs
}
@@ -461,15 +462,6 @@
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
}
diff --git a/java/java.go b/java/java.go
index a2fc5fb..e4abbcd 100644
--- a/java/java.go
+++ b/java/java.go
@@ -2752,6 +2752,9 @@
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 @@
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)
}
diff --git a/java/java_test.go b/java/java_test.go
index 2f27932..51c969e 100644
--- a/java/java_test.go
+++ b/java/java_test.go
@@ -2994,22 +2994,22 @@
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) {