Add a Make variable that overrides configured jar locations.
We had hardcoded logic to override "framework-minus-apex", but we need to override more jars, so this CL adds a general solution for this. Bug: 290583827 Test: m nothing Change-Id: I211ebda7aa2803886ab6e6d081d26327665e49a6
This commit is contained in:
@@ -107,6 +107,7 @@ bootstrap_go_package {
|
|||||||
"bazel_test.go",
|
"bazel_test.go",
|
||||||
"config_test.go",
|
"config_test.go",
|
||||||
"config_bp2build_test.go",
|
"config_bp2build_test.go",
|
||||||
|
"configured_jars_test.go",
|
||||||
"csuite_config_test.go",
|
"csuite_config_test.go",
|
||||||
"defaults_test.go",
|
"defaults_test.go",
|
||||||
"depset_test.go",
|
"depset_test.go",
|
||||||
|
@@ -178,7 +178,7 @@ func (l *ConfiguredJarList) CopyOfApexJarPairs() []string {
|
|||||||
func (l *ConfiguredJarList) BuildPaths(ctx PathContext, dir OutputPath) WritablePaths {
|
func (l *ConfiguredJarList) BuildPaths(ctx PathContext, dir OutputPath) WritablePaths {
|
||||||
paths := make(WritablePaths, l.Len())
|
paths := make(WritablePaths, l.Len())
|
||||||
for i, jar := range l.jars {
|
for i, jar := range l.jars {
|
||||||
paths[i] = dir.Join(ctx, ModuleStem(jar)+".jar")
|
paths[i] = dir.Join(ctx, ModuleStem(ctx.Config(), l.Apex(i), jar)+".jar")
|
||||||
}
|
}
|
||||||
return paths
|
return paths
|
||||||
}
|
}
|
||||||
@@ -187,8 +187,8 @@ func (l *ConfiguredJarList) BuildPaths(ctx PathContext, dir OutputPath) Writable
|
|||||||
// prefix.
|
// prefix.
|
||||||
func (l *ConfiguredJarList) BuildPathsByModule(ctx PathContext, dir OutputPath) map[string]WritablePath {
|
func (l *ConfiguredJarList) BuildPathsByModule(ctx PathContext, dir OutputPath) map[string]WritablePath {
|
||||||
paths := map[string]WritablePath{}
|
paths := map[string]WritablePath{}
|
||||||
for _, jar := range l.jars {
|
for i, jar := range l.jars {
|
||||||
paths[jar] = dir.Join(ctx, ModuleStem(jar)+".jar")
|
paths[jar] = dir.Join(ctx, ModuleStem(ctx.Config(), l.Apex(i), jar)+".jar")
|
||||||
}
|
}
|
||||||
return paths
|
return paths
|
||||||
}
|
}
|
||||||
@@ -228,24 +228,32 @@ func (l *ConfiguredJarList) MarshalJSON() ([]byte, error) {
|
|||||||
return json.Marshal(list)
|
return json.Marshal(list)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ModuleStem hardcodes the stem of framework-minus-apex to return "framework".
|
func OverrideConfiguredJarLocationFor(cfg Config, apex string, jar string) (newApex string, newJar string) {
|
||||||
//
|
for _, entry := range cfg.productVariables.ConfiguredJarLocationOverrides {
|
||||||
// TODO(b/139391334): hard coded until we find a good way to query the stem of a
|
tuple := strings.Split(entry, ":")
|
||||||
// module before any other mutators are run.
|
if len(tuple) != 4 {
|
||||||
func ModuleStem(module string) string {
|
panic("malformed configured jar location override '%s', expected format: <old_apex>:<old_jar>:<new_apex>:<new_jar>")
|
||||||
if module == "framework-minus-apex" {
|
}
|
||||||
return "framework"
|
if apex == tuple[0] && jar == tuple[1] {
|
||||||
|
return tuple[2], tuple[3]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return module
|
return apex, jar
|
||||||
|
}
|
||||||
|
|
||||||
|
// ModuleStem returns the overridden jar name.
|
||||||
|
func ModuleStem(cfg Config, apex string, jar string) string {
|
||||||
|
_, newJar := OverrideConfiguredJarLocationFor(cfg, apex, jar)
|
||||||
|
return newJar
|
||||||
}
|
}
|
||||||
|
|
||||||
// DevicePaths computes the on-device paths for the list of (apex, jar) pairs,
|
// DevicePaths computes the on-device paths for the list of (apex, jar) pairs,
|
||||||
// based on the operating system.
|
// based on the operating system.
|
||||||
func (l *ConfiguredJarList) DevicePaths(cfg Config, ostype OsType) []string {
|
func (l *ConfiguredJarList) DevicePaths(cfg Config, ostype OsType) []string {
|
||||||
paths := make([]string, l.Len())
|
paths := make([]string, l.Len())
|
||||||
for i, jar := range l.jars {
|
for i := 0; i < l.Len(); i++ {
|
||||||
apex := l.apexes[i]
|
apex, jar := OverrideConfiguredJarLocationFor(cfg, l.Apex(i), l.Jar(i))
|
||||||
name := ModuleStem(jar) + ".jar"
|
name := jar + ".jar"
|
||||||
|
|
||||||
var subdir string
|
var subdir string
|
||||||
if apex == "platform" {
|
if apex == "platform" {
|
||||||
|
46
android/configured_jars_test.go
Normal file
46
android/configured_jars_test.go
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
// Copyright 2023 Google Inc. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package android
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestOverrideConfiguredJarLocationFor(t *testing.T) {
|
||||||
|
cfg := NullConfig("", "")
|
||||||
|
|
||||||
|
cfg.productVariables = productVariables{
|
||||||
|
ConfiguredJarLocationOverrides: []string{
|
||||||
|
"platform:libfoo-old:com.android.foo:libfoo-new",
|
||||||
|
"com.android.bar:libbar-old:platform:libbar-new",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
apex, jar := OverrideConfiguredJarLocationFor(cfg, "platform", "libfoo-old")
|
||||||
|
AssertStringEquals(t, "", "com.android.foo", apex)
|
||||||
|
AssertStringEquals(t, "", "libfoo-new", jar)
|
||||||
|
|
||||||
|
apex, jar = OverrideConfiguredJarLocationFor(cfg, "platform", "libbar-old")
|
||||||
|
AssertStringEquals(t, "", "platform", apex)
|
||||||
|
AssertStringEquals(t, "", "libbar-old", jar)
|
||||||
|
|
||||||
|
apex, jar = OverrideConfiguredJarLocationFor(cfg, "com.android.bar", "libbar-old")
|
||||||
|
AssertStringEquals(t, "", "platform", apex)
|
||||||
|
AssertStringEquals(t, "", "libbar-new", jar)
|
||||||
|
|
||||||
|
apex, jar = OverrideConfiguredJarLocationFor(cfg, "platform", "libbar-old")
|
||||||
|
AssertStringEquals(t, "", "platform", apex)
|
||||||
|
AssertStringEquals(t, "", "libbar-old", jar)
|
||||||
|
}
|
@@ -401,9 +401,10 @@ type productVariables struct {
|
|||||||
|
|
||||||
WithDexpreopt bool `json:",omitempty"`
|
WithDexpreopt bool `json:",omitempty"`
|
||||||
|
|
||||||
ManifestPackageNameOverrides []string `json:",omitempty"`
|
ManifestPackageNameOverrides []string `json:",omitempty"`
|
||||||
CertificateOverrides []string `json:",omitempty"`
|
CertificateOverrides []string `json:",omitempty"`
|
||||||
PackageNameOverrides []string `json:",omitempty"`
|
PackageNameOverrides []string `json:",omitempty"`
|
||||||
|
ConfiguredJarLocationOverrides []string `json:",omitempty"`
|
||||||
|
|
||||||
ApexGlobalMinSdkVersionOverride *string `json:",omitempty"`
|
ApexGlobalMinSdkVersionOverride *string `json:",omitempty"`
|
||||||
|
|
||||||
|
@@ -386,7 +386,7 @@ func (image bootImageConfig) moduleName(ctx android.PathContext, idx int) string
|
|||||||
m := image.modules.Jar(idx)
|
m := image.modules.Jar(idx)
|
||||||
name := image.stem
|
name := image.stem
|
||||||
if idx != 0 || image.extends != nil {
|
if idx != 0 || image.extends != nil {
|
||||||
name += "-" + android.ModuleStem(m)
|
name += "-" + android.ModuleStem(ctx.Config(), image.modules.Apex(idx), m)
|
||||||
}
|
}
|
||||||
return name
|
return name
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user