Populate individual classpath_fragments' classpaths.proto configs.

To avoid duplicates on *CLASSPATH environ variables at runtime, remove
split entries from platform-*classpath, i.e. all updatable jars that
have their own classpath fragments should not appear in the
platform-*classpath's classpaths.proto config.

Bug: 180105615
Test: m && launch_cvd; atest CtsClasspathsTestCases
Change-Id: Id2759ab8e106cc183e695bf3509a6ab60ab0ef2a
This commit is contained in:
satayev
2021-05-20 11:24:00 +01:00
parent 796421bdf1
commit 95bfbb169f
5 changed files with 37 additions and 52 deletions

View File

@@ -47,24 +47,19 @@ func (p *platformSystemServerClasspathModule) AndroidMkEntries() (entries []andr
}
func (p *platformSystemServerClasspathModule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
configuredJars := configuredJarListToClasspathJars(ctx, p.ClasspathFragmentToConfiguredJarList(ctx), p.classpathType)
p.classpathFragmentBase().generateClasspathProtoBuildActions(ctx, configuredJars)
classpathJars := configuredJarListToClasspathJars(ctx, p.ClasspathFragmentToConfiguredJarList(ctx), p.classpathType)
p.classpathFragmentBase().generateClasspathProtoBuildActions(ctx, classpathJars)
}
var platformSystemServerClasspathKey = android.NewOnceKey("platform_systemserverclasspath")
func (p *platformSystemServerClasspathModule) ClasspathFragmentToConfiguredJarList(ctx android.ModuleContext) android.ConfiguredJarList {
return ctx.Config().Once(platformSystemServerClasspathKey, func() interface{} {
global := dexpreopt.GetGlobalConfig(ctx)
global := dexpreopt.GetGlobalConfig(ctx)
jars := global.SystemServerJars
// TODO(satayev): split apex jars into separate configs.
for i := 0; i < global.UpdatableSystemServerJars.Len(); i++ {
jars = jars.Append(global.UpdatableSystemServerJars.Apex(i), global.UpdatableSystemServerJars.Jar(i))
}
return jars
}).(android.ConfiguredJarList)
jars := global.SystemServerJars
// TODO(satayev): split apex jars into separate configs.
for i := 0; i < global.UpdatableSystemServerJars.Len(); i++ {
jars = jars.Append(global.UpdatableSystemServerJars.Apex(i), global.UpdatableSystemServerJars.Jar(i))
}
return jars
}
type SystemServerClasspathModule struct {
@@ -101,7 +96,8 @@ func (s *SystemServerClasspathModule) GenerateAndroidBuildActions(ctx android.Mo
ctx.PropertyErrorf("contents", "empty contents are not allowed")
}
s.classpathFragmentBase().generateClasspathProtoBuildActions(ctx, configuredJarListToClasspathJars(ctx, s.ClasspathFragmentToConfiguredJarList(ctx)))
classpathJars := configuredJarListToClasspathJars(ctx, s.ClasspathFragmentToConfiguredJarList(ctx), s.classpathType)
s.classpathFragmentBase().generateClasspathProtoBuildActions(ctx, classpathJars)
}
func (s *SystemServerClasspathModule) ClasspathFragmentToConfiguredJarList(ctx android.ModuleContext) android.ConfiguredJarList {