diff options
Diffstat (limited to 'java/java.go')
| -rw-r--r-- | java/java.go | 105 | 
1 files changed, 47 insertions, 58 deletions
| diff --git a/java/java.go b/java/java.go index a026610c2..d3762f630 100644 --- a/java/java.go +++ b/java/java.go @@ -231,10 +231,10 @@ type JavaInfo struct {  	HeaderJars android.Paths  	// set of header jars for all transitive libs deps -	TransitiveLibsHeaderJars *android.DepSet +	TransitiveLibsHeaderJars *android.DepSet[android.Path]  	// set of header jars for all transitive static libs deps -	TransitiveStaticLibsHeaderJars *android.DepSet +	TransitiveStaticLibsHeaderJars *android.DepSet[android.Path]  	// ImplementationAndResourceJars is a list of jars that contain the implementations of classes  	// in the module as well as any resources included in the module. @@ -459,7 +459,7 @@ func sdkDeps(ctx android.BottomUpMutatorContext, sdkContext android.SdkContext,  		ctx.AddVariationDependencies(nil, sdkLibTag, sdkDep.classpath...)  		if d.effectiveOptimizeEnabled() && sdkDep.hasStandardLibs() {  			ctx.AddVariationDependencies(nil, proguardRaiseTag, -				android.JavaApiLibraryNames(ctx.Config(), config.LegacyCorePlatformBootclasspathLibraries)..., +				config.LegacyCorePlatformBootclasspathLibraries...,  			)  		}  		if d.effectiveOptimizeEnabled() && sdkDep.hasFrameworkLibs() { @@ -1624,13 +1624,6 @@ func (ap *JavaApiContribution) GenerateAndroidBuildActions(ctx android.ModuleCon  	})  } -type JavaApiLibraryDepsInfo struct { -	JavaInfo -	StubsSrcJar android.Path -} - -var JavaApiLibraryDepsProvider = blueprint.NewProvider(JavaApiLibraryDepsInfo{}) -  type ApiLibrary struct {  	android.ModuleBase  	android.DefaultableModuleBase @@ -1672,10 +1665,11 @@ type JavaApiLibraryProperties struct {  	// merge zipped after metalava invocation  	Static_libs []string -	// Java Api library to provide the full API surface text files and jar file. -	// If this property is set, the provided full API surface text files and -	// jar file are passed to metalava invocation. -	Dep_api_srcs *string +	// Java Api library to provide the full API surface stub jar file. +	// If this property is set, the stub jar of this module is created by +	// extracting the compiled class files provided by the +	// full_api_surface_stub module. +	Full_api_surface_stub *string  }  func ApiLibraryFactory() android.Module { @@ -1722,8 +1716,7 @@ func metalavaStubCmd(ctx android.ModuleContext, rule *android.RuleBuilder,  		FlagWithArg("-encoding ", "UTF-8").  		FlagWithInputList("--source-files ", srcs, " ") -	cmd.Flag("--no-banner"). -		Flag("--color"). +	cmd.Flag("--color").  		Flag("--quiet").  		Flag("--format=v2").  		Flag("--include-annotations"). @@ -1762,35 +1755,37 @@ func (al *ApiLibrary) stubsFlags(ctx android.ModuleContext, cmd *android.RuleBui  	}  } -// This method extracts the stub java files from the srcjar file provided from dep_api_srcs module -// and replaces the java stubs generated by invoking metalava in this module. +// This method extracts the stub class files from the stub jar file provided +// from full_api_surface_stub module instead of compiling the srcjar generated from invoking metalava.  // This method is used because metalava can generate compilable from-text stubs only when -// the codebase encompasses all classes listed in the input API text file, but a class can extend +// the codebase encompasses all classes listed in the input API text file, and a class can extend  // a class that is not within the same API domain. -func (al *ApiLibrary) extractApiSrcs(ctx android.ModuleContext, rule *android.RuleBuilder, stubsDir android.OptionalPath, depApiSrcsSrcJar android.Path) { -	generatedStubsList := android.PathForModuleOut(ctx, "metalava", "sources.txt") +func (al *ApiLibrary) extractApiSrcs(ctx android.ModuleContext, rule *android.RuleBuilder, stubsDir android.OptionalPath, fullApiSurfaceStubJar android.Path) { +	classFilesList := android.PathForModuleOut(ctx, "metalava", "classes.txt")  	unzippedSrcJarDir := android.PathForModuleOut(ctx, "metalava", "unzipDir")  	rule.Command().  		BuiltTool("list_files").  		Text(stubsDir.String()). -		FlagWithOutput("--out ", generatedStubsList). +		FlagWithOutput("--out ", classFilesList).  		FlagWithArg("--extensions ", ".java"). -		FlagWithArg("--root ", unzippedSrcJarDir.String()) +		FlagWithArg("--root ", unzippedSrcJarDir.String()). +		Flag("--classes")  	rule.Command().  		Text("unzip").  		Flag("-q"). -		Input(depApiSrcsSrcJar). +		Input(fullApiSurfaceStubJar).  		FlagWithArg("-d ", unzippedSrcJarDir.String())  	rule.Command().  		BuiltTool("soong_zip"). -		Flag("-srcjar"). +		Flag("-jar").  		Flag("-write_if_changed"). +		Flag("-ignore_missing_files").  		FlagWithArg("-C ", unzippedSrcJarDir.String()). -		FlagWithInput("-l ", generatedStubsList). -		FlagWithOutput("-o ", al.stubsSrcJar) +		FlagWithInput("-l ", classFilesList). +		FlagWithOutput("-o ", al.stubsJarWithoutStaticLibs)  }  func (al *ApiLibrary) DepsMutator(ctx android.BottomUpMutatorContext) { @@ -1800,8 +1795,8 @@ func (al *ApiLibrary) DepsMutator(ctx android.BottomUpMutatorContext) {  	}  	ctx.AddVariationDependencies(nil, libTag, al.properties.Libs...)  	ctx.AddVariationDependencies(nil, staticLibTag, al.properties.Static_libs...) -	if al.properties.Dep_api_srcs != nil { -		ctx.AddVariationDependencies(nil, depApiSrcsTag, String(al.properties.Dep_api_srcs)) +	if al.properties.Full_api_surface_stub != nil { +		ctx.AddVariationDependencies(nil, depApiSrcsTag, String(al.properties.Full_api_surface_stub))  	}  } @@ -1823,7 +1818,7 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) {  	var srcFiles android.Paths  	var classPaths android.Paths  	var staticLibs android.Paths -	var depApiSrcsStubsSrcJar android.Path +	var depApiSrcsStubsJar android.Path  	ctx.VisitDirectDeps(func(dep android.Module) {  		tag := ctx.OtherModuleDependencyTag(dep)  		switch tag { @@ -1841,9 +1836,8 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) {  			provider := ctx.OtherModuleProvider(dep, JavaInfoProvider).(JavaInfo)  			staticLibs = append(staticLibs, provider.HeaderJars...)  		case depApiSrcsTag: -			provider := ctx.OtherModuleProvider(dep, JavaApiLibraryDepsProvider).(JavaApiLibraryDepsInfo) -			classPaths = append(classPaths, provider.HeaderJars...) -			depApiSrcsStubsSrcJar = provider.StubsSrcJar +			provider := ctx.OtherModuleProvider(dep, JavaInfoProvider).(JavaInfo) +			depApiSrcsStubsJar = provider.HeaderJars[0]  		}  	}) @@ -1861,31 +1855,33 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) {  	al.stubsFlags(ctx, cmd, stubsDir)  	al.stubsSrcJar = android.PathForModuleOut(ctx, "metalava", ctx.ModuleName()+"-"+"stubs.srcjar") +	al.stubsJarWithoutStaticLibs = android.PathForModuleOut(ctx, "metalava", "stubs.jar") +	al.stubsJar = android.PathForModuleOut(ctx, ctx.ModuleName(), fmt.Sprintf("%s.jar", ctx.ModuleName())) -	if depApiSrcsStubsSrcJar != nil { -		al.extractApiSrcs(ctx, rule, stubsDir, depApiSrcsStubsSrcJar) -	} else { -		rule.Command(). -			BuiltTool("soong_zip"). -			Flag("-write_if_changed"). -			Flag("-jar"). -			FlagWithOutput("-o ", al.stubsSrcJar). -			FlagWithArg("-C ", stubsDir.String()). -			FlagWithArg("-D ", stubsDir.String()) +	if depApiSrcsStubsJar != nil { +		al.extractApiSrcs(ctx, rule, stubsDir, depApiSrcsStubsJar)  	} +	rule.Command(). +		BuiltTool("soong_zip"). +		Flag("-write_if_changed"). +		Flag("-jar"). +		FlagWithOutput("-o ", al.stubsSrcJar). +		FlagWithArg("-C ", stubsDir.String()). +		FlagWithArg("-D ", stubsDir.String())  	rule.Build("metalava", "metalava merged") -	al.stubsJarWithoutStaticLibs = android.PathForModuleOut(ctx, ctx.ModuleName(), "stubs.jar") -	al.stubsJar = android.PathForModuleOut(ctx, ctx.ModuleName(), fmt.Sprintf("%s.jar", ctx.ModuleName())) +	if depApiSrcsStubsJar == nil { +		var flags javaBuilderFlags +		flags.javaVersion = getStubsJavaVersion() +		flags.javacFlags = strings.Join(al.properties.Javacflags, " ") +		flags.classpath = classpath(classPaths) -	var flags javaBuilderFlags -	flags.javaVersion = getStubsJavaVersion() -	flags.javacFlags = strings.Join(al.properties.Javacflags, " ") -	flags.classpath = classpath(classPaths) +		annoSrcJar := android.PathForModuleOut(ctx, ctx.ModuleName(), "anno.srcjar") -	TransformJavaToClasses(ctx, al.stubsJarWithoutStaticLibs, 0, android.Paths{}, -		android.Paths{al.stubsSrcJar}, flags, android.Paths{}) +		TransformJavaToClasses(ctx, al.stubsJarWithoutStaticLibs, 0, android.Paths{}, +			android.Paths{al.stubsSrcJar}, annoSrcJar, flags, android.Paths{}) +	}  	builder := android.NewRuleBuilder(pctx, ctx)  	builder.Command(). @@ -1917,13 +1913,6 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) {  		ImplementationJars:             android.PathsIfNonNil(al.stubsJar),  		AidlIncludeDirs:                android.Paths{},  	}) - -	ctx.SetProvider(JavaApiLibraryDepsProvider, JavaApiLibraryDepsInfo{ -		JavaInfo: JavaInfo{ -			HeaderJars: android.PathsIfNonNil(al.stubsJar), -		}, -		StubsSrcJar: al.stubsSrcJar, -	})  }  func (al *ApiLibrary) DexJarBuildPath() OptionalDexJarPath { |