Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 68786d81 authored by mrziwang's avatar mrziwang
Browse files

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
parent ad111586
Loading
Loading
Loading
Loading
+3 −14
Original line number Diff line number Diff line
@@ -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 {
+8 −8
Original line number Diff line number Diff line
@@ -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())
}
+2 −10
Original line number Diff line number Diff line
@@ -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
}
+3 −11
Original line number Diff line number Diff line
@@ -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)
}
+8 −8
Original line number Diff line number Diff line
@@ -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) {