Merge "Don't hold on to WritablePath" into main
This commit is contained in:
54
java/aar.go
54
java/aar.go
@@ -995,17 +995,17 @@ type AARImport struct {
|
||||
|
||||
properties AARImportProperties
|
||||
|
||||
headerJarFile android.WritablePath
|
||||
implementationJarFile android.WritablePath
|
||||
implementationAndResourcesJarFile android.WritablePath
|
||||
proguardFlags android.WritablePath
|
||||
exportPackage android.WritablePath
|
||||
headerJarFile android.Path
|
||||
implementationJarFile android.Path
|
||||
implementationAndResourcesJarFile android.Path
|
||||
proguardFlags android.Path
|
||||
exportPackage android.Path
|
||||
transitiveAaptResourcePackagesFile android.Path
|
||||
extraAaptPackagesFile android.WritablePath
|
||||
extraAaptPackagesFile android.Path
|
||||
manifest android.Path
|
||||
assetsPackage android.WritablePath
|
||||
rTxt android.WritablePath
|
||||
rJar android.WritablePath
|
||||
assetsPackage android.Path
|
||||
rTxt android.Path
|
||||
rJar android.Path
|
||||
|
||||
resourcesNodesDepSet *android.DepSet[*resourcesNode]
|
||||
manifestsDepSet *android.DepSet[android.Path]
|
||||
@@ -1170,14 +1170,14 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
a.manifest = extractedManifest
|
||||
}
|
||||
|
||||
a.rTxt = extractedAARDir.Join(ctx, "R.txt")
|
||||
a.assetsPackage = android.PathForModuleOut(ctx, "assets.zip")
|
||||
a.proguardFlags = extractedAARDir.Join(ctx, "proguard.txt")
|
||||
rTxt := extractedAARDir.Join(ctx, "R.txt")
|
||||
assetsPackage := android.PathForModuleOut(ctx, "assets.zip")
|
||||
proguardFlags := extractedAARDir.Join(ctx, "proguard.txt")
|
||||
transitiveProguardFlags, transitiveUnconditionalExportedFlags := collectDepProguardSpecInfo(ctx)
|
||||
android.SetProvider(ctx, ProguardSpecInfoProvider, ProguardSpecInfo{
|
||||
ProguardFlagsFiles: android.NewDepSet[android.Path](
|
||||
android.POSTORDER,
|
||||
android.Paths{a.proguardFlags},
|
||||
android.Paths{proguardFlags},
|
||||
transitiveProguardFlags,
|
||||
),
|
||||
UnconditionallyExportedProguardFlags: android.NewDepSet[android.Path](
|
||||
@@ -1190,15 +1190,19 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
Rule: unzipAAR,
|
||||
Input: a.aarPath,
|
||||
Outputs: android.WritablePaths{classpathFile, a.proguardFlags, extractedManifest, a.assetsPackage, a.rTxt},
|
||||
Outputs: android.WritablePaths{classpathFile, proguardFlags, extractedManifest, assetsPackage, rTxt},
|
||||
Description: "unzip AAR",
|
||||
Args: map[string]string{
|
||||
"outDir": extractedAARDir.String(),
|
||||
"combinedClassesJar": classpathFile.String(),
|
||||
"assetsPackage": a.assetsPackage.String(),
|
||||
"assetsPackage": assetsPackage.String(),
|
||||
},
|
||||
})
|
||||
|
||||
a.proguardFlags = proguardFlags
|
||||
a.assetsPackage = assetsPackage
|
||||
a.rTxt = rTxt
|
||||
|
||||
// Always set --pseudo-localize, it will be stripped out later for release
|
||||
// builds that don't want it.
|
||||
compileFlags := []string{"--pseudo-localize"}
|
||||
@@ -1206,10 +1210,10 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
flata := compiledResDir.Join(ctx, "gen_res.flata")
|
||||
aapt2CompileZip(ctx, flata, a.aarPath, "res", compileFlags)
|
||||
|
||||
a.exportPackage = android.PathForModuleOut(ctx, "package-res.apk")
|
||||
exportPackage := android.PathForModuleOut(ctx, "package-res.apk")
|
||||
proguardOptionsFile := android.PathForModuleGen(ctx, "proguard.options")
|
||||
aaptRTxt := android.PathForModuleOut(ctx, "R.txt")
|
||||
a.extraAaptPackagesFile = android.PathForModuleOut(ctx, "extra_packages")
|
||||
extraAaptPackagesFile := android.PathForModuleOut(ctx, "extra_packages")
|
||||
|
||||
var linkDeps android.Paths
|
||||
|
||||
@@ -1245,13 +1249,16 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
}
|
||||
|
||||
transitiveAssets := android.ReverseSliceInPlace(staticDeps.assets())
|
||||
aapt2Link(ctx, a.exportPackage, nil, proguardOptionsFile, aaptRTxt,
|
||||
aapt2Link(ctx, exportPackage, nil, proguardOptionsFile, aaptRTxt,
|
||||
linkFlags, linkDeps, nil, overlayRes, transitiveAssets, nil, nil)
|
||||
a.exportPackage = exportPackage
|
||||
|
||||
a.rJar = android.PathForModuleOut(ctx, "busybox/R.jar")
|
||||
resourceProcessorBusyBoxGenerateBinaryR(ctx, a.rTxt, a.manifest, a.rJar, nil, true, nil, false)
|
||||
rJar := android.PathForModuleOut(ctx, "busybox/R.jar")
|
||||
resourceProcessorBusyBoxGenerateBinaryR(ctx, a.rTxt, a.manifest, rJar, nil, true, nil, false)
|
||||
a.rJar = rJar
|
||||
|
||||
aapt2ExtractExtraPackages(ctx, a.extraAaptPackagesFile, a.rJar)
|
||||
aapt2ExtractExtraPackages(ctx, extraAaptPackagesFile, a.rJar)
|
||||
a.extraAaptPackagesFile = extraAaptPackagesFile
|
||||
|
||||
resourcesNodesDepSetBuilder := android.NewDepSetBuilder[*resourcesNode](android.TOPOLOGICAL)
|
||||
resourcesNodesDepSetBuilder.Direct(&resourcesNode{
|
||||
@@ -1334,8 +1341,9 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
|
||||
if len(staticHeaderJars) > 0 {
|
||||
combineJars := append(android.Paths{classpathFile}, staticHeaderJars...)
|
||||
a.headerJarFile = android.PathForModuleOut(ctx, "turbine-combined", jarName)
|
||||
TransformJarsToJar(ctx, a.headerJarFile, "combine header jars", combineJars, android.OptionalPath{}, false, nil, nil)
|
||||
headerJarFile := android.PathForModuleOut(ctx, "turbine-combined", jarName)
|
||||
TransformJarsToJar(ctx, headerJarFile, "combine header jars", combineJars, android.OptionalPath{}, false, nil, nil)
|
||||
a.headerJarFile = headerJarFile
|
||||
} else {
|
||||
a.headerJarFile = classpathFile
|
||||
}
|
||||
|
49
java/base.go
49
java/base.go
@@ -1311,7 +1311,7 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath
|
||||
return
|
||||
}
|
||||
|
||||
kotlinJarPath := j.repackageFlagsIfNecessary(ctx, kotlinJar.OutputPath, jarName, "kotlinc")
|
||||
kotlinJarPath := j.repackageFlagsIfNecessary(ctx, kotlinJar, jarName, "kotlinc")
|
||||
|
||||
// Make javac rule depend on the kotlinc rule
|
||||
flags.classpath = append(classpath{kotlinHeaderJar}, flags.classpath...)
|
||||
@@ -1513,7 +1513,7 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath
|
||||
|
||||
// Combine the classes built from sources, any manifests, and any static libraries into
|
||||
// classes.jar. If there is only one input jar this step will be skipped.
|
||||
var outputFile android.OutputPath
|
||||
var outputFile android.Path
|
||||
|
||||
if len(jars) == 1 && !manifest.Valid() {
|
||||
// Optimization: skip the combine step as there is nothing to do
|
||||
@@ -1529,36 +1529,28 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath
|
||||
// to the copy rules.
|
||||
stub, _ := moduleStubLinkType(ctx.ModuleName())
|
||||
|
||||
// Transform the single path to the jar into an OutputPath as that is required by the following
|
||||
// code.
|
||||
if moduleOutPath, ok := jars[0].(android.ModuleOutPath); ok && !stub {
|
||||
// The path contains an embedded OutputPath so reuse that.
|
||||
outputFile = moduleOutPath.OutputPath
|
||||
} else if outputPath, ok := jars[0].(android.OutputPath); ok && !stub {
|
||||
// The path is an OutputPath so reuse it directly.
|
||||
outputFile = outputPath
|
||||
} else {
|
||||
// The file is not in the out directory so create an OutputPath into which it can be copied
|
||||
// and which the following code can use to refer to it.
|
||||
if stub {
|
||||
combinedJar := android.PathForModuleOut(ctx, "combined", jarName)
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
Rule: android.Cp,
|
||||
Input: jars[0],
|
||||
Output: combinedJar,
|
||||
})
|
||||
outputFile = combinedJar.OutputPath
|
||||
outputFile = combinedJar
|
||||
} else {
|
||||
outputFile = jars[0]
|
||||
}
|
||||
} else {
|
||||
combinedJar := android.PathForModuleOut(ctx, "combined", jarName)
|
||||
TransformJarsToJar(ctx, combinedJar, "for javac", jars, manifest,
|
||||
false, nil, nil)
|
||||
outputFile = combinedJar.OutputPath
|
||||
outputFile = combinedJar
|
||||
}
|
||||
|
||||
// jarjar implementation jar if necessary
|
||||
if j.expandJarjarRules != nil {
|
||||
// Transform classes.jar into classes-jarjar.jar
|
||||
jarjarFile := android.PathForModuleOut(ctx, "jarjar", jarName).OutputPath
|
||||
jarjarFile := android.PathForModuleOut(ctx, "jarjar", jarName)
|
||||
TransformJarJar(ctx, jarjarFile, outputFile, j.expandJarjarRules)
|
||||
outputFile = jarjarFile
|
||||
|
||||
@@ -1583,15 +1575,16 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath
|
||||
// will check that the jar only contains the permitted packages. The new location will become
|
||||
// the output file of this module.
|
||||
inputFile := outputFile
|
||||
outputFile = android.PathForModuleOut(ctx, "package-check", jarName).OutputPath
|
||||
packageCheckOutputFile := android.PathForModuleOut(ctx, "package-check", jarName)
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
Rule: android.Cp,
|
||||
Input: inputFile,
|
||||
Output: outputFile,
|
||||
Output: packageCheckOutputFile,
|
||||
// Make sure that any dependency on the output file will cause ninja to run the package check
|
||||
// rule.
|
||||
Validation: pkgckFile,
|
||||
})
|
||||
outputFile = packageCheckOutputFile
|
||||
|
||||
// Check packages and create a timestamp file when complete.
|
||||
CheckJarPackages(ctx, pkgckFile, outputFile, j.properties.Permitted_packages)
|
||||
@@ -1626,7 +1619,7 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath
|
||||
implementationAndResourcesJar := outputFile
|
||||
if j.resourceJar != nil {
|
||||
jars := android.Paths{j.resourceJar, implementationAndResourcesJar}
|
||||
combinedJar := android.PathForModuleOut(ctx, "withres", jarName).OutputPath
|
||||
combinedJar := android.PathForModuleOut(ctx, "withres", jarName)
|
||||
TransformJarsToJar(ctx, combinedJar, "for resources", jars, manifest,
|
||||
false, nil, nil)
|
||||
implementationAndResourcesJar = combinedJar
|
||||
@@ -1653,7 +1646,7 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath
|
||||
android.PathForSource(ctx, "build/make/core/proguard.jacoco.flags"))
|
||||
}
|
||||
// Dex compilation
|
||||
var dexOutputFile android.OutputPath
|
||||
var dexOutputFile android.Path
|
||||
params := &compileDexParams{
|
||||
flags: flags,
|
||||
sdkVersion: j.SdkVersion(ctx),
|
||||
@@ -1680,17 +1673,17 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath
|
||||
|
||||
// If r8/d8 provides a profile that matches the optimized dex, use that for dexpreopt.
|
||||
if dexArtProfileOutput != nil {
|
||||
j.dexpreopter.SetRewrittenProfile(*dexArtProfileOutput)
|
||||
j.dexpreopter.SetRewrittenProfile(dexArtProfileOutput)
|
||||
}
|
||||
|
||||
// merge dex jar with resources if necessary
|
||||
if j.resourceJar != nil {
|
||||
jars := android.Paths{dexOutputFile, j.resourceJar}
|
||||
combinedJar := android.PathForModuleOut(ctx, "dex-withres", jarName).OutputPath
|
||||
combinedJar := android.PathForModuleOut(ctx, "dex-withres", jarName)
|
||||
TransformJarsToJar(ctx, combinedJar, "for dex resources", jars, android.OptionalPath{},
|
||||
false, nil, nil)
|
||||
if *j.dexProperties.Uncompress_dex {
|
||||
combinedAlignedJar := android.PathForModuleOut(ctx, "dex-withres-aligned", jarName).OutputPath
|
||||
combinedAlignedJar := android.PathForModuleOut(ctx, "dex-withres-aligned", jarName)
|
||||
TransformZipAlign(ctx, combinedAlignedJar, combinedJar, nil)
|
||||
dexOutputFile = combinedAlignedJar
|
||||
} else {
|
||||
@@ -1850,7 +1843,7 @@ func enableErrorproneFlags(flags javaBuilderFlags) javaBuilderFlags {
|
||||
}
|
||||
|
||||
func (j *Module) compileJavaClasses(ctx android.ModuleContext, jarName string, idx int,
|
||||
srcFiles, srcJars android.Paths, flags javaBuilderFlags, extraJarDeps android.Paths) android.WritablePath {
|
||||
srcFiles, srcJars android.Paths, flags javaBuilderFlags, extraJarDeps android.Paths) android.Path {
|
||||
|
||||
kzipName := pathtools.ReplaceExtension(jarName, "kzip")
|
||||
annoSrcJar := android.PathForModuleOut(ctx, "javac", "anno.srcjar")
|
||||
@@ -1860,7 +1853,7 @@ func (j *Module) compileJavaClasses(ctx android.ModuleContext, jarName string, i
|
||||
jarName += strconv.Itoa(idx)
|
||||
}
|
||||
|
||||
classes := android.PathForModuleOut(ctx, "javac", jarName).OutputPath
|
||||
classes := android.PathForModuleOut(ctx, "javac", jarName)
|
||||
TransformJavaToClasses(ctx, classes, idx, srcFiles, srcJars, annoSrcJar, flags, extraJarDeps)
|
||||
|
||||
if ctx.Config().EmitXrefRules() && ctx.Module() == ctx.PrimaryModule() {
|
||||
@@ -1955,10 +1948,10 @@ func (j *Module) compileJavaHeader(ctx android.ModuleContext, srcFiles, srcJars
|
||||
}
|
||||
|
||||
func (j *Module) instrument(ctx android.ModuleContext, flags javaBuilderFlags,
|
||||
classesJar android.Path, jarName string, specs string) android.OutputPath {
|
||||
classesJar android.Path, jarName string, specs string) android.Path {
|
||||
|
||||
jacocoReportClassesFile := android.PathForModuleOut(ctx, "jacoco-report-classes", jarName)
|
||||
instrumentedJar := android.PathForModuleOut(ctx, "jacoco", jarName).OutputPath
|
||||
instrumentedJar := android.PathForModuleOut(ctx, "jacoco", jarName)
|
||||
|
||||
jacocoInstrumentJar(ctx, instrumentedJar, jacocoReportClassesFile, classesJar, specs)
|
||||
|
||||
@@ -2733,7 +2726,7 @@ func getJarJarRuleText(provider *JarJarProviderData) string {
|
||||
}
|
||||
|
||||
// Repackage the flags if the jarjar rule txt for the flags is generated
|
||||
func (j *Module) repackageFlagsIfNecessary(ctx android.ModuleContext, infile android.WritablePath, jarName, info string) android.WritablePath {
|
||||
func (j *Module) repackageFlagsIfNecessary(ctx android.ModuleContext, infile android.Path, jarName, info string) android.Path {
|
||||
if j.repackageJarjarRules == nil {
|
||||
return infile
|
||||
}
|
||||
|
@@ -428,7 +428,7 @@ func (d *dexer) addArtProfile(ctx android.ModuleContext, dexParams *compileDexPa
|
||||
}
|
||||
|
||||
// Return the compiled dex jar and (optional) profile _after_ r8 optimization
|
||||
func (d *dexer) compileDex(ctx android.ModuleContext, dexParams *compileDexParams) (android.OutputPath, *android.OutputPath) {
|
||||
func (d *dexer) compileDex(ctx android.ModuleContext, dexParams *compileDexParams) (android.Path, android.Path) {
|
||||
|
||||
// Compile classes.jar into classes.dex and then javalib.jar
|
||||
javalibJar := android.PathForModuleOut(ctx, "dex", dexParams.jarName).OutputPath
|
||||
|
@@ -359,7 +359,7 @@ func (d *Dexpreopter) DexpreoptPrebuiltApexSystemServerJars(ctx android.ModuleCo
|
||||
d.dexpreopt(ctx, libraryName, dexJarFile)
|
||||
}
|
||||
|
||||
func (d *dexpreopter) dexpreopt(ctx android.ModuleContext, libName string, dexJarFile android.WritablePath) {
|
||||
func (d *dexpreopter) dexpreopt(ctx android.ModuleContext, libName string, dexJarFile android.Path) {
|
||||
global := dexpreopt.GetGlobalConfig(ctx)
|
||||
|
||||
// TODO(b/148690468): The check on d.installPath is to bail out in cases where
|
||||
|
@@ -151,7 +151,7 @@ func isModuleInBootClassPath(ctx android.BaseModuleContext, module android.Modul
|
||||
//
|
||||
// Otherwise, it creates a copy of the supplied dex file into which it has encoded the hiddenapi
|
||||
// flags and returns this instead of the supplied dex jar.
|
||||
func (h *hiddenAPI) hiddenAPIEncodeDex(ctx android.ModuleContext, dexJar android.OutputPath) android.OutputPath {
|
||||
func (h *hiddenAPI) hiddenAPIEncodeDex(ctx android.ModuleContext, dexJar android.Path) android.Path {
|
||||
|
||||
if !h.active {
|
||||
return dexJar
|
||||
|
@@ -2762,7 +2762,7 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
setUncompressDex(ctx, &j.dexpreopter, &j.dexer)
|
||||
j.dexpreopter.uncompressedDex = *j.dexProperties.Uncompress_dex
|
||||
|
||||
var dexOutputFile android.OutputPath
|
||||
var dexOutputFile android.Path
|
||||
dexParams := &compileDexParams{
|
||||
flags: flags,
|
||||
sdkVersion: j.SdkVersion(ctx),
|
||||
|
Reference in New Issue
Block a user