Raise an error instead of panic in SplitApexJarPairs.
Test: aosp_walleye-userdebug boots Change-Id: I9a1c4ec5c8862b1936820b3cee6db9a85015cb0e
This commit is contained in:
@@ -109,11 +109,11 @@ func (image bootImageConfig) getAnyAndroidVariant() *bootImageVariant {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (image bootImageConfig) moduleName(idx int) string {
|
||||
func (image bootImageConfig) moduleName(ctx android.PathContext, idx int) string {
|
||||
// Dexpreopt on the boot class path produces multiple files. The first dex file
|
||||
// is converted into 'name'.art (to match the legacy assumption that 'name'.art
|
||||
// exists), and the rest are converted to 'name'-<jar>.art.
|
||||
_, m := android.SplitApexJarPair(image.modules[idx])
|
||||
_, m := android.SplitApexJarPair(ctx, image.modules[idx])
|
||||
name := image.stem
|
||||
if idx != 0 || image.extends != nil {
|
||||
name += "-" + stemOf(m)
|
||||
@@ -121,9 +121,9 @@ func (image bootImageConfig) moduleName(idx int) string {
|
||||
return name
|
||||
}
|
||||
|
||||
func (image bootImageConfig) firstModuleNameOrStem() string {
|
||||
func (image bootImageConfig) firstModuleNameOrStem(ctx android.PathContext) string {
|
||||
if len(image.modules) > 0 {
|
||||
return image.moduleName(0)
|
||||
return image.moduleName(ctx, 0)
|
||||
} else {
|
||||
return image.stem
|
||||
}
|
||||
@@ -132,7 +132,7 @@ func (image bootImageConfig) firstModuleNameOrStem() string {
|
||||
func (image bootImageConfig) moduleFiles(ctx android.PathContext, dir android.OutputPath, exts ...string) android.OutputPaths {
|
||||
ret := make(android.OutputPaths, 0, len(image.modules)*len(exts))
|
||||
for i := range image.modules {
|
||||
name := image.moduleName(i)
|
||||
name := image.moduleName(ctx, i)
|
||||
for _, ext := range exts {
|
||||
ret = append(ret, dir.Join(ctx, name+ext))
|
||||
}
|
||||
@@ -261,7 +261,7 @@ func getBootImageJar(ctx android.SingletonContext, image *bootImageConfig, modul
|
||||
}
|
||||
|
||||
name := ctx.ModuleName(module)
|
||||
index := android.IndexList(name, android.GetJarsFromApexJarPairs(image.modules))
|
||||
index := android.IndexList(name, android.GetJarsFromApexJarPairs(ctx, image.modules))
|
||||
if index == -1 {
|
||||
return -1, nil
|
||||
}
|
||||
@@ -314,7 +314,7 @@ func buildBootImage(ctx android.SingletonContext, image *bootImageConfig) *bootI
|
||||
// Ensure all modules were converted to paths
|
||||
for i := range bootDexJars {
|
||||
if bootDexJars[i] == nil {
|
||||
_, m := android.SplitApexJarPair(image.modules[i])
|
||||
_, m := android.SplitApexJarPair(ctx, image.modules[i])
|
||||
if ctx.Config().AllowMissingDependencies() {
|
||||
missingDeps = append(missingDeps, m)
|
||||
bootDexJars[i] = android.PathForOutput(ctx, "missing")
|
||||
@@ -614,7 +614,7 @@ func updatableBcpPackagesRule(ctx android.SingletonContext, image *bootImageConf
|
||||
|
||||
return ctx.Config().Once(updatableBcpPackagesRuleKey, func() interface{} {
|
||||
global := dexpreopt.GetGlobalConfig(ctx)
|
||||
updatableModules := android.GetJarsFromApexJarPairs(global.UpdatableBootJars)
|
||||
updatableModules := android.GetJarsFromApexJarPairs(ctx, global.UpdatableBootJars)
|
||||
|
||||
// Collect `permitted_packages` for updatable boot jars.
|
||||
var updatablePackages []string
|
||||
|
@@ -39,7 +39,7 @@ func systemServerClasspath(ctx android.MakeVarsContext) []string {
|
||||
// 2) The jars that are from an updatable apex.
|
||||
for _, m := range global.UpdatableSystemServerJars {
|
||||
systemServerClasspathLocations = append(systemServerClasspathLocations,
|
||||
dexpreopt.GetJarLocationFromApexJarPair(m))
|
||||
dexpreopt.GetJarLocationFromApexJarPair(ctx, m))
|
||||
}
|
||||
if len(systemServerClasspathLocations) != len(global.SystemServerJars)+len(global.UpdatableSystemServerJars) {
|
||||
panic(fmt.Errorf("Wrong number of system server jars, got %d, expected %d",
|
||||
@@ -80,7 +80,7 @@ func stemOf(moduleName string) string {
|
||||
}
|
||||
|
||||
func getDexLocation(ctx android.PathContext, target android.Target, module string) string {
|
||||
apex, jar := android.SplitApexJarPair(module)
|
||||
apex, jar := android.SplitApexJarPair(ctx, module)
|
||||
|
||||
name := stemOf(jar) + ".jar"
|
||||
|
||||
@@ -156,7 +156,7 @@ func genBootImageConfigs(ctx android.PathContext) map[string]*bootImageConfig {
|
||||
c.symbolsDir = deviceDir.Join(ctx, "dex_"+c.name+"jars_unstripped")
|
||||
|
||||
// expands to <stem>.art for primary image and <stem>-<1st module>.art for extension
|
||||
imageName := c.firstModuleNameOrStem() + ".art"
|
||||
imageName := c.firstModuleNameOrStem(ctx) + ".art"
|
||||
|
||||
// The path to bootclasspath dex files needs to be known at module
|
||||
// GenerateAndroidBuildAction time, before the bootclasspath modules have been compiled.
|
||||
@@ -164,7 +164,7 @@ func genBootImageConfigs(ctx android.PathContext) map[string]*bootImageConfig {
|
||||
// TODO(b/143682396): use module dependencies instead
|
||||
inputDir := deviceDir.Join(ctx, "dex_"+c.name+"jars_input")
|
||||
for _, m := range c.modules {
|
||||
_, jar := android.SplitApexJarPair(m)
|
||||
_, jar := android.SplitApexJarPair(ctx, m)
|
||||
c.dexPaths = append(c.dexPaths, inputDir.Join(ctx, stemOf(jar)+".jar"))
|
||||
}
|
||||
c.dexPathsDeps = c.dexPaths
|
||||
@@ -215,7 +215,7 @@ func defaultBootclasspath(ctx android.PathContext) []string {
|
||||
|
||||
updatableBootclasspath := make([]string, len(global.UpdatableBootJars))
|
||||
for i, p := range global.UpdatableBootJars {
|
||||
updatableBootclasspath[i] = dexpreopt.GetJarLocationFromApexJarPair(p)
|
||||
updatableBootclasspath[i] = dexpreopt.GetJarLocationFromApexJarPair(ctx, p)
|
||||
}
|
||||
|
||||
bootclasspath := append(copyOf(image.getAnyAndroidVariant().dexLocationsDeps), updatableBootclasspath...)
|
||||
|
Reference in New Issue
Block a user