Prepend header jar for sharded javac compilation am: 3d56ed5605
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1897430 Change-Id: Id8c71095d07439c3722dbf1585a3d18ea3b70f0f
This commit is contained in:
20
java/base.go
20
java/base.go
@@ -1066,7 +1066,7 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) {
|
|||||||
j.compiledSrcJars = srcJars
|
j.compiledSrcJars = srcJars
|
||||||
|
|
||||||
enableSharding := false
|
enableSharding := false
|
||||||
var headerJarFileWithoutJarjar android.Path
|
var headerJarFileWithoutDepsOrJarjar android.Path
|
||||||
if ctx.Device() && !ctx.Config().IsEnvFalse("TURBINE_ENABLED") && !deps.disableTurbine {
|
if ctx.Device() && !ctx.Config().IsEnvFalse("TURBINE_ENABLED") && !deps.disableTurbine {
|
||||||
if j.properties.Javac_shard_size != nil && *(j.properties.Javac_shard_size) > 0 {
|
if j.properties.Javac_shard_size != nil && *(j.properties.Javac_shard_size) > 0 {
|
||||||
enableSharding = true
|
enableSharding = true
|
||||||
@@ -1076,7 +1076,7 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) {
|
|||||||
// allow for the use of annotation processors that do function correctly
|
// allow for the use of annotation processors that do function correctly
|
||||||
// with sharding enabled. See: b/77284273.
|
// with sharding enabled. See: b/77284273.
|
||||||
}
|
}
|
||||||
headerJarFileWithoutJarjar, j.headerJarFile =
|
headerJarFileWithoutDepsOrJarjar, j.headerJarFile =
|
||||||
j.compileJavaHeader(ctx, uniqueSrcFiles, srcJars, deps, flags, jarName, kotlinJars)
|
j.compileJavaHeader(ctx, uniqueSrcFiles, srcJars, deps, flags, jarName, kotlinJars)
|
||||||
if ctx.Failed() {
|
if ctx.Failed() {
|
||||||
return
|
return
|
||||||
@@ -1105,7 +1105,9 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if enableSharding {
|
if enableSharding {
|
||||||
flags.classpath = append(flags.classpath, headerJarFileWithoutJarjar)
|
if headerJarFileWithoutDepsOrJarjar != nil {
|
||||||
|
flags.classpath = append(classpath{headerJarFileWithoutDepsOrJarjar}, flags.classpath...)
|
||||||
|
}
|
||||||
shardSize := int(*(j.properties.Javac_shard_size))
|
shardSize := int(*(j.properties.Javac_shard_size))
|
||||||
var shardSrcs []android.Paths
|
var shardSrcs []android.Paths
|
||||||
if len(uniqueSrcFiles) > 0 {
|
if len(uniqueSrcFiles) > 0 {
|
||||||
@@ -1508,7 +1510,7 @@ func CheckKotlincFlags(ctx android.ModuleContext, flags []string) {
|
|||||||
|
|
||||||
func (j *Module) compileJavaHeader(ctx android.ModuleContext, srcFiles, srcJars android.Paths,
|
func (j *Module) compileJavaHeader(ctx android.ModuleContext, srcFiles, srcJars android.Paths,
|
||||||
deps deps, flags javaBuilderFlags, jarName string,
|
deps deps, flags javaBuilderFlags, jarName string,
|
||||||
extraJars android.Paths) (headerJar, jarjarHeaderJar android.Path) {
|
extraJars android.Paths) (headerJar, jarjarAndDepsHeaderJar android.Path) {
|
||||||
|
|
||||||
var jars android.Paths
|
var jars android.Paths
|
||||||
if len(srcFiles) > 0 || len(srcJars) > 0 {
|
if len(srcFiles) > 0 || len(srcJars) > 0 {
|
||||||
@@ -1519,6 +1521,7 @@ func (j *Module) compileJavaHeader(ctx android.ModuleContext, srcFiles, srcJars
|
|||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
jars = append(jars, turbineJar)
|
jars = append(jars, turbineJar)
|
||||||
|
headerJar = turbineJar
|
||||||
}
|
}
|
||||||
|
|
||||||
jars = append(jars, extraJars...)
|
jars = append(jars, extraJars...)
|
||||||
@@ -1532,20 +1535,19 @@ func (j *Module) compileJavaHeader(ctx android.ModuleContext, srcFiles, srcJars
|
|||||||
combinedJar := android.PathForModuleOut(ctx, "turbine-combined", jarName)
|
combinedJar := android.PathForModuleOut(ctx, "turbine-combined", jarName)
|
||||||
TransformJarsToJar(ctx, combinedJar, "for turbine", jars, android.OptionalPath{},
|
TransformJarsToJar(ctx, combinedJar, "for turbine", jars, android.OptionalPath{},
|
||||||
false, nil, []string{"META-INF/TRANSITIVE"})
|
false, nil, []string{"META-INF/TRANSITIVE"})
|
||||||
headerJar = combinedJar
|
jarjarAndDepsHeaderJar = combinedJar
|
||||||
jarjarHeaderJar = combinedJar
|
|
||||||
|
|
||||||
if j.expandJarjarRules != nil {
|
if j.expandJarjarRules != nil {
|
||||||
// Transform classes.jar into classes-jarjar.jar
|
// Transform classes.jar into classes-jarjar.jar
|
||||||
jarjarFile := android.PathForModuleOut(ctx, "turbine-jarjar", jarName)
|
jarjarFile := android.PathForModuleOut(ctx, "turbine-jarjar", jarName)
|
||||||
TransformJarJar(ctx, jarjarFile, headerJar, j.expandJarjarRules)
|
TransformJarJar(ctx, jarjarFile, jarjarAndDepsHeaderJar, j.expandJarjarRules)
|
||||||
jarjarHeaderJar = jarjarFile
|
jarjarAndDepsHeaderJar = jarjarFile
|
||||||
if ctx.Failed() {
|
if ctx.Failed() {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return headerJar, jarjarHeaderJar
|
return headerJar, jarjarAndDepsHeaderJar
|
||||||
}
|
}
|
||||||
|
|
||||||
func (j *Module) instrument(ctx android.ModuleContext, flags javaBuilderFlags,
|
func (j *Module) instrument(ctx android.ModuleContext, flags javaBuilderFlags,
|
||||||
|
@@ -988,11 +988,11 @@ func TestSharding(t *testing.T) {
|
|||||||
}
|
}
|
||||||
`)
|
`)
|
||||||
|
|
||||||
barHeaderJar := filepath.Join("out", "soong", ".intermediates", "bar", "android_common", "turbine-combined", "bar.jar")
|
barHeaderJar := filepath.Join("out", "soong", ".intermediates", "bar", "android_common", "turbine", "bar.jar")
|
||||||
for i := 0; i < 3; i++ {
|
for i := 0; i < 3; i++ {
|
||||||
barJavac := ctx.ModuleForTests("bar", "android_common").Description("javac" + strconv.Itoa(i))
|
barJavac := ctx.ModuleForTests("bar", "android_common").Description("javac" + strconv.Itoa(i))
|
||||||
if !strings.Contains(barJavac.Args["classpath"], barHeaderJar) {
|
if !strings.HasPrefix(barJavac.Args["classpath"], "-classpath "+barHeaderJar+":") {
|
||||||
t.Errorf("bar javac classpath %v does not contain %q", barJavac.Args["classpath"], barHeaderJar)
|
t.Errorf("bar javac classpath %v does start with %q", barJavac.Args["classpath"], barHeaderJar)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user