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

Commit 8c844e0b authored by Colin Cross's avatar Colin Cross Committed by Gerrit Code Review
Browse files

Merge changes I2b182cd3,Ibf6d9b79 into main

* changes:
  Split jarjarIfNecessary out of compileJavaHeader
  Convert JavaInfoProvider to *JavaInfo
parents 79a10d90 edec77c4
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1348,7 +1348,7 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
		a.headerJarFile = classpathFile
	}

	android.SetProvider(ctx, JavaInfoProvider, JavaInfo{
	android.SetProvider(ctx, JavaInfoProvider, &JavaInfo{
		HeaderJars:                     android.PathsIfNonNil(a.headerJarFile),
		ResourceJars:                   android.PathsIfNonNil(resourceJarFile),
		TransitiveLibsHeaderJars:       a.transitiveLibsHeaderJars,
+58 −72
Original line number Diff line number Diff line
@@ -1228,14 +1228,17 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath
			ctx.ModuleErrorf("headers_only is enabled but Turbine is disabled.")
		}

		_, j.headerJarFile, _ =
			j.compileJavaHeader(ctx, uniqueJavaFiles, srcJars, deps, flags, jarName,
		_, combinedHeaderJarFile := j.compileJavaHeader(ctx, uniqueJavaFiles, srcJars, deps, flags, jarName,
			extraCombinedJars)

		combinedHeaderJarFile = j.jarjarIfNecessary(ctx, combinedHeaderJarFile, jarName, "turbine")
		combinedHeaderJarFile = j.repackageFlagsIfNecessary(ctx, combinedHeaderJarFile, jarName, "repackage-turbine")
		if ctx.Failed() {
			return
		}
		j.headerJarFile = combinedHeaderJarFile

		android.SetProvider(ctx, JavaInfoProvider, JavaInfo{
		android.SetProvider(ctx, JavaInfoProvider, &JavaInfo{
			HeaderJars:                          android.PathsIfNonNil(j.headerJarFile),
			TransitiveLibsHeaderJars:            j.transitiveLibsHeaderJars,
			TransitiveStaticLibsHeaderJars:      j.transitiveStaticLibsHeaderJars,
@@ -1347,11 +1350,12 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath
			// with sharding enabled. See: b/77284273.
		}
		extraJars := append(slices.Clone(kotlinHeaderJars), extraCombinedJars...)
		headerJarFileWithoutDepsOrJarjar, j.headerJarFile, j.repackagedHeaderJarFile =
		var combinedHeaderJarFile android.Path
		headerJarFileWithoutDepsOrJarjar, combinedHeaderJarFile =
			j.compileJavaHeader(ctx, uniqueJavaFiles, srcJars, deps, flags, jarName, extraJars)
		if ctx.Failed() {
			return
		}

		j.headerJarFile = j.jarjarIfNecessary(ctx, combinedHeaderJarFile, jarName, "turbine")
		j.repackagedHeaderJarFile = j.repackageFlagsIfNecessary(ctx, j.headerJarFile, jarName, "turbine")
	}
	if len(uniqueJavaFiles) > 0 || len(srcJars) > 0 {
		hasErrorproneableFiles := false
@@ -1548,23 +1552,18 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath
	}

	// jarjar implementation jar if necessary
	if j.expandJarjarRules != nil {
		// Transform classes.jar into classes-jarjar.jar
		jarjarFile := android.PathForModuleOut(ctx, "jarjar", jarName)
		TransformJarJar(ctx, jarjarFile, outputFile, j.expandJarjarRules)
	jarjarFile := j.jarjarIfNecessary(ctx, outputFile, jarName, "")
	outputFile = jarjarFile

	// jarjar resource jar if necessary
	if j.resourceJar != nil {
			resourceJarJarFile := android.PathForModuleOut(ctx, "res-jarjar", jarName)
			TransformJarJar(ctx, resourceJarJarFile, j.resourceJar, j.expandJarjarRules)
		resourceJarJarFile := j.jarjarIfNecessary(ctx, j.resourceJar, jarName, "resource")
		j.resourceJar = resourceJarJarFile
	}

	if ctx.Failed() {
		return
	}
	}

	// Check package restrictions if necessary.
	if len(j.properties.Permitted_packages) > 0 {
@@ -1753,7 +1752,7 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath

	ctx.CheckbuildFile(outputFile)

	android.SetProvider(ctx, JavaInfoProvider, JavaInfo{
	android.SetProvider(ctx, JavaInfoProvider, &JavaInfo{
		HeaderJars:                          android.PathsIfNonNil(j.headerJarFile),
		RepackagedHeaderJars:                android.PathsIfNonNil(j.repackagedHeaderJarFile),
		TransitiveLibsHeaderJars:            j.transitiveLibsHeaderJars,
@@ -1896,16 +1895,13 @@ func CheckKotlincFlags(ctx android.ModuleContext, flags []string) {

func (j *Module) compileJavaHeader(ctx android.ModuleContext, srcFiles, srcJars android.Paths,
	deps deps, flags javaBuilderFlags, jarName string,
	extraJars android.Paths) (headerJar, jarjarAndDepsHeaderJar, jarjarAndDepsRepackagedHeaderJar android.Path) {
	extraJars android.Paths) (headerJar android.Path, combinedHeaderJar android.Path) {

	var jars android.Paths
	if len(srcFiles) > 0 || len(srcJars) > 0 {
		// Compile java sources into turbine.jar.
		turbineJar := android.PathForModuleOut(ctx, "turbine", jarName)
		TransformJavaToHeaderClasses(ctx, turbineJar, srcFiles, srcJars, flags)
		if ctx.Failed() {
			return nil, nil, nil
		}
		jars = append(jars, turbineJar)
		headerJar = turbineJar
	}
@@ -1918,33 +1914,11 @@ func (j *Module) compileJavaHeader(ctx android.ModuleContext, srcFiles, srcJars

	// we cannot skip the combine step for now if there is only one jar
	// since we have to strip META-INF/TRANSITIVE dir from turbine.jar
	combinedJar := android.PathForModuleOut(ctx, "turbine-combined", jarName)
	TransformJarsToJar(ctx, combinedJar, "for turbine", jars, android.OptionalPath{},
	combinedHeaderJarOutputPath := android.PathForModuleOut(ctx, "turbine-combined", jarName)
	TransformJarsToJar(ctx, combinedHeaderJarOutputPath, "for turbine", jars, android.OptionalPath{},
		false, nil, []string{"META-INF/TRANSITIVE"})
	jarjarAndDepsHeaderJar = combinedJar

	if j.expandJarjarRules != nil {
		// Transform classes.jar into classes-jarjar.jar
		jarjarFile := android.PathForModuleOut(ctx, "turbine-jarjar", jarName)
		TransformJarJar(ctx, jarjarFile, jarjarAndDepsHeaderJar, j.expandJarjarRules)
		jarjarAndDepsHeaderJar = jarjarFile
		if ctx.Failed() {
			return nil, nil, nil
		}
	}

	if j.repackageJarjarRules != nil {
		repackagedJarjarFile := android.PathForModuleOut(ctx, "repackaged-turbine-jarjar", jarName)
		TransformJarJar(ctx, repackagedJarjarFile, jarjarAndDepsHeaderJar, j.repackageJarjarRules)
		jarjarAndDepsRepackagedHeaderJar = repackagedJarjarFile
		if ctx.Failed() {
			return nil, nil, nil
		}
	} else {
		jarjarAndDepsRepackagedHeaderJar = jarjarAndDepsHeaderJar
	}

	return headerJar, jarjarAndDepsHeaderJar, jarjarAndDepsRepackagedHeaderJar
	return headerJar, combinedHeaderJarOutputPath
}

func (j *Module) instrument(ctx android.ModuleContext, flags javaBuilderFlags,
@@ -1986,7 +1960,7 @@ func (j *providesTransitiveHeaderJars) collectTransitiveHeaderJars(ctx android.M
			return
		}

		dep, _ := android.OtherModuleProvider(ctx, module, JavaInfoProvider)
		if dep, ok := android.OtherModuleProvider(ctx, module, JavaInfoProvider); ok {
			tag := ctx.OtherModuleDependencyTag(module)
			_, isUsesLibDep := tag.(usesLibraryDependencyTag)
			if tag == libTag || tag == r8LibraryJarTag || isUsesLibDep {
@@ -2004,6 +1978,7 @@ func (j *providesTransitiveHeaderJars) collectTransitiveHeaderJars(ctx android.M
			if dep.TransitiveStaticLibsHeaderJars != nil {
				transitiveStaticLibs = append(transitiveStaticLibs, dep.TransitiveStaticLibsHeaderJars)
			}
		}
	})
	j.transitiveLibsHeaderJars = android.NewDepSet(android.POSTORDER, directLibs, transitiveLibs)
	j.transitiveStaticLibsHeaderJars = android.NewDepSet(android.POSTORDER, directStaticLibs, transitiveStaticLibs)
@@ -2108,11 +2083,12 @@ func (j *Module) collectTransitiveSrcFiles(ctx android.ModuleContext, mine andro
	ctx.VisitDirectDeps(func(module android.Module) {
		tag := ctx.OtherModuleDependencyTag(module)
		if tag == staticLibTag {
			depInfo, _ := android.OtherModuleProvider(ctx, module, JavaInfoProvider)
			if depInfo, ok := android.OtherModuleProvider(ctx, module, JavaInfoProvider); ok {
				if depInfo.TransitiveSrcFiles != nil {
					fromDeps = append(fromDeps, depInfo.TransitiveSrcFiles)
				}
			}
		}
	})

	j.transitiveSrcFiles = android.NewDepSet(android.POSTORDER, mine, fromDeps)
@@ -2730,11 +2706,21 @@ func (j *Module) repackageFlagsIfNecessary(ctx android.ModuleContext, infile and
	if j.repackageJarjarRules == nil {
		return infile
	}
	repackagedJarjarFile := android.PathForModuleOut(ctx, "repackaged-jarjar", info+jarName)
	repackagedJarjarFile := android.PathForModuleOut(ctx, "repackaged-jarjar", info, jarName)
	TransformJarJar(ctx, repackagedJarjarFile, infile, j.repackageJarjarRules)
	return repackagedJarjarFile
}

func (j *Module) jarjarIfNecessary(ctx android.ModuleContext, infile android.Path, jarName, info string) android.Path {
	if j.expandJarjarRules == nil {
		return infile
	}
	jarjarFile := android.PathForModuleOut(ctx, "jarjar", info, jarName)
	TransformJarJar(ctx, jarjarFile, infile, j.expandJarjarRules)
	return jarjarFile

}

func addPlugins(deps *deps, pluginJars android.Paths, pluginClasses ...string) {
	deps.processorPath = append(deps.processorPath, pluginJars...)
	deps.processorClasses = append(deps.processorClasses, pluginClasses...)
+1 −1
Original line number Diff line number Diff line
@@ -130,7 +130,7 @@ func (d *DeviceHostConverter) GenerateAndroidBuildActions(ctx android.ModuleCont
		d.combinedHeaderJar = d.headerJars[0]
	}

	android.SetProvider(ctx, JavaInfoProvider, JavaInfo{
	android.SetProvider(ctx, JavaInfoProvider, &JavaInfo{
		HeaderJars:                     d.headerJars,
		ImplementationAndResourcesJars: d.implementationAndResourceJars,
		ImplementationJars:             d.implementationJars,
+3 −2
Original line number Diff line number Diff line
@@ -291,8 +291,9 @@ func (d *dexer) r8Flags(ctx android.ModuleContext, dexParams *compileDexParams)
	// See b/20667396
	var proguardRaiseDeps classpath
	ctx.VisitDirectDepsWithTag(proguardRaiseTag, func(m android.Module) {
		dep, _ := android.OtherModuleProvider(ctx, m, JavaInfoProvider)
		if dep, ok := android.OtherModuleProvider(ctx, m, JavaInfoProvider); ok {
			proguardRaiseDeps = append(proguardRaiseDeps, dep.RepackagedHeaderJars...)
		}
	})

	r8Flags = append(r8Flags, proguardRaiseDeps.FormJavaClassPath("-libraryjars"))
+3 −2
Original line number Diff line number Diff line
@@ -98,8 +98,9 @@ func (h *hiddenAPI) initHiddenAPI(ctx android.ModuleContext, dexJar OptionalDexJ
	// processing.
	classesJars := android.Paths{classesJar}
	ctx.VisitDirectDepsWithTag(hiddenApiAnnotationsTag, func(dep android.Module) {
		javaInfo, _ := android.OtherModuleProvider(ctx, dep, JavaInfoProvider)
		if javaInfo, ok := android.OtherModuleProvider(ctx, dep, JavaInfoProvider); ok {
			classesJars = append(classesJars, javaInfo.ImplementationJars...)
		}
	})
	h.classesJarPaths = classesJars

Loading