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:
parent
cb13b5d1bd
commit
4d90da29a8
5 changed files with 74 additions and 18 deletions
|
@ -107,6 +107,7 @@ bootstrap_go_package {
|
|||
"bazel_test.go",
|
||||
"config_test.go",
|
||||
"config_bp2build_test.go",
|
||||
"configured_jars_test.go",
|
||||
"csuite_config_test.go",
|
||||
"defaults_test.go",
|
||||
"depset_test.go",
|
||||
|
|
|
@ -178,7 +178,7 @@ func (l *ConfiguredJarList) CopyOfApexJarPairs() []string {
|
|||
func (l *ConfiguredJarList) BuildPaths(ctx PathContext, dir OutputPath) WritablePaths {
|
||||
paths := make(WritablePaths, l.Len())
|
||||
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
|
||||
}
|
||||
|
@ -187,8 +187,8 @@ func (l *ConfiguredJarList) BuildPaths(ctx PathContext, dir OutputPath) Writable
|
|||
// prefix.
|
||||
func (l *ConfiguredJarList) BuildPathsByModule(ctx PathContext, dir OutputPath) map[string]WritablePath {
|
||||
paths := map[string]WritablePath{}
|
||||
for _, jar := range l.jars {
|
||||
paths[jar] = dir.Join(ctx, ModuleStem(jar)+".jar")
|
||||
for i, jar := range l.jars {
|
||||
paths[jar] = dir.Join(ctx, ModuleStem(ctx.Config(), l.Apex(i), jar)+".jar")
|
||||
}
|
||||
return paths
|
||||
}
|
||||
|
@ -228,24 +228,32 @@ func (l *ConfiguredJarList) MarshalJSON() ([]byte, error) {
|
|||
return json.Marshal(list)
|
||||
}
|
||||
|
||||
// ModuleStem hardcodes the stem of framework-minus-apex to return "framework".
|
||||
//
|
||||
// TODO(b/139391334): hard coded until we find a good way to query the stem of a
|
||||
// module before any other mutators are run.
|
||||
func ModuleStem(module string) string {
|
||||
if module == "framework-minus-apex" {
|
||||
return "framework"
|
||||
func OverrideConfiguredJarLocationFor(cfg Config, apex string, jar string) (newApex string, newJar string) {
|
||||
for _, entry := range cfg.productVariables.ConfiguredJarLocationOverrides {
|
||||
tuple := strings.Split(entry, ":")
|
||||
if len(tuple) != 4 {
|
||||
panic("malformed configured jar location override '%s', expected format: <old_apex>:<old_jar>:<new_apex>:<new_jar>")
|
||||
}
|
||||
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,
|
||||
// based on the operating system.
|
||||
func (l *ConfiguredJarList) DevicePaths(cfg Config, ostype OsType) []string {
|
||||
paths := make([]string, l.Len())
|
||||
for i, jar := range l.jars {
|
||||
apex := l.apexes[i]
|
||||
name := ModuleStem(jar) + ".jar"
|
||||
for i := 0; i < l.Len(); i++ {
|
||||
apex, jar := OverrideConfiguredJarLocationFor(cfg, l.Apex(i), l.Jar(i))
|
||||
name := jar + ".jar"
|
||||
|
||||
var subdir string
|
||||
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"`
|
||||
|
||||
ManifestPackageNameOverrides []string `json:",omitempty"`
|
||||
CertificateOverrides []string `json:",omitempty"`
|
||||
PackageNameOverrides []string `json:",omitempty"`
|
||||
ManifestPackageNameOverrides []string `json:",omitempty"`
|
||||
CertificateOverrides []string `json:",omitempty"`
|
||||
PackageNameOverrides []string `json:",omitempty"`
|
||||
ConfiguredJarLocationOverrides []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)
|
||||
name := image.stem
|
||||
if idx != 0 || image.extends != nil {
|
||||
name += "-" + android.ModuleStem(m)
|
||||
name += "-" + android.ModuleStem(ctx.Config(), image.modules.Apex(idx), m)
|
||||
}
|
||||
return name
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue