Merge "Make ConfiguredJarList immutable" am: e1878c101d
am: 7ad2fa969b
am: 89e8d18655
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1471776 Change-Id: I67c890408cc0d1029420350e54dc3959a75e7fb8
This commit is contained in:
@@ -1362,13 +1362,22 @@ func (l *ConfiguredJarList) IndexOfJar(jar string) int {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Append an (apex, jar) pair to the list.
|
// Append an (apex, jar) pair to the list.
|
||||||
func (l *ConfiguredJarList) Append(apex string, jar string) {
|
func (l *ConfiguredJarList) Append(apex string, jar string) ConfiguredJarList {
|
||||||
l.apexes = append(l.apexes, apex)
|
// Create a copy of the backing arrays before appending to avoid sharing backing
|
||||||
l.jars = append(l.jars, jar)
|
// arrays that are mutated across instances.
|
||||||
|
apexes := make([]string, 0, len(l.apexes)+1)
|
||||||
|
copy(apexes, l.apexes)
|
||||||
|
apexes = append(apexes, apex)
|
||||||
|
|
||||||
|
jars := make([]string, 0, len(l.jars)+1)
|
||||||
|
copy(jars, l.jars)
|
||||||
|
jars = append(l.jars, jar)
|
||||||
|
|
||||||
|
return ConfiguredJarList{apexes, jars}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Filter out sublist.
|
// Filter out sublist.
|
||||||
func (l *ConfiguredJarList) RemoveList(list ConfiguredJarList) {
|
func (l *ConfiguredJarList) RemoveList(list ConfiguredJarList) ConfiguredJarList {
|
||||||
apexes := make([]string, 0, l.Len())
|
apexes := make([]string, 0, l.Len())
|
||||||
jars := make([]string, 0, l.Len())
|
jars := make([]string, 0, l.Len())
|
||||||
|
|
||||||
@@ -1380,13 +1389,7 @@ func (l *ConfiguredJarList) RemoveList(list ConfiguredJarList) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
l.apexes = apexes
|
return ConfiguredJarList{apexes, jars}
|
||||||
l.jars = jars
|
|
||||||
}
|
|
||||||
|
|
||||||
// A copy of itself.
|
|
||||||
func (l *ConfiguredJarList) CopyOf() ConfiguredJarList {
|
|
||||||
return ConfiguredJarList{CopyOf(l.apexes), CopyOf(l.jars)}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// A copy of the list of strings containing jar components.
|
// A copy of the list of strings containing jar components.
|
||||||
@@ -1461,17 +1464,16 @@ func splitConfiguredJarPair(ctx PathContext, str string) (string, string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func CreateConfiguredJarList(ctx PathContext, list []string) ConfiguredJarList {
|
func CreateConfiguredJarList(ctx PathContext, list []string) ConfiguredJarList {
|
||||||
apexes := make([]string, 0, len(list))
|
apexes := make([]string, len(list))
|
||||||
jars := make([]string, 0, len(list))
|
jars := make([]string, len(list))
|
||||||
|
|
||||||
l := ConfiguredJarList{apexes, jars}
|
for i, apexjar := range list {
|
||||||
|
|
||||||
for _, apexjar := range list {
|
|
||||||
apex, jar := splitConfiguredJarPair(ctx, apexjar)
|
apex, jar := splitConfiguredJarPair(ctx, apexjar)
|
||||||
l.Append(apex, jar)
|
apexes[i] = apex
|
||||||
|
jars[i] = jar
|
||||||
}
|
}
|
||||||
|
|
||||||
return l
|
return ConfiguredJarList{apexes, jars}
|
||||||
}
|
}
|
||||||
|
|
||||||
func EmptyConfiguredJarList() ConfiguredJarList {
|
func EmptyConfiguredJarList() ConfiguredJarList {
|
||||||
|
@@ -81,13 +81,12 @@ func genBootImageConfigs(ctx android.PathContext) map[string]*bootImageConfig {
|
|||||||
targets := dexpreoptTargets(ctx)
|
targets := dexpreoptTargets(ctx)
|
||||||
deviceDir := android.PathForOutput(ctx, ctx.Config().DeviceName())
|
deviceDir := android.PathForOutput(ctx, ctx.Config().DeviceName())
|
||||||
|
|
||||||
artModules := global.ArtApexJars.CopyOf()
|
artModules := global.ArtApexJars
|
||||||
// With EMMA_INSTRUMENT_FRAMEWORK=true the Core libraries depend on jacoco.
|
// With EMMA_INSTRUMENT_FRAMEWORK=true the Core libraries depend on jacoco.
|
||||||
if ctx.Config().IsEnvTrue("EMMA_INSTRUMENT_FRAMEWORK") {
|
if ctx.Config().IsEnvTrue("EMMA_INSTRUMENT_FRAMEWORK") {
|
||||||
artModules.Append("com.android.art", "jacocoagent")
|
artModules = artModules.Append("com.android.art", "jacocoagent")
|
||||||
}
|
}
|
||||||
frameworkModules := global.BootJars.CopyOf()
|
frameworkModules := global.BootJars.RemoveList(artModules)
|
||||||
frameworkModules.RemoveList(artModules)
|
|
||||||
|
|
||||||
artSubdir := "apex/art_boot_images/javalib"
|
artSubdir := "apex/art_boot_images/javalib"
|
||||||
frameworkSubdir := "system/framework"
|
frameworkSubdir := "system/framework"
|
||||||
|
Reference in New Issue
Block a user