Merge "Support overriding APEX java contents"
This commit is contained in:
30
apex/apex.go
30
apex/apex.go
@@ -108,15 +108,6 @@ type apexBundleProperties struct {
|
|||||||
|
|
||||||
Multilib apexMultilibProperties
|
Multilib apexMultilibProperties
|
||||||
|
|
||||||
// List of bootclasspath fragments that are embedded inside this APEX bundle.
|
|
||||||
Bootclasspath_fragments []string
|
|
||||||
|
|
||||||
// List of systemserverclasspath fragments that are embedded inside this APEX bundle.
|
|
||||||
Systemserverclasspath_fragments []string
|
|
||||||
|
|
||||||
// List of java libraries that are embedded inside this APEX bundle.
|
|
||||||
Java_libs []string
|
|
||||||
|
|
||||||
// List of sh binaries that are embedded inside this APEX bundle.
|
// List of sh binaries that are embedded inside this APEX bundle.
|
||||||
Sh_binaries []string
|
Sh_binaries []string
|
||||||
|
|
||||||
@@ -316,6 +307,15 @@ type overridableProperties struct {
|
|||||||
// List of BPF programs inside this APEX bundle.
|
// List of BPF programs inside this APEX bundle.
|
||||||
Bpfs []string
|
Bpfs []string
|
||||||
|
|
||||||
|
// List of bootclasspath fragments that are embedded inside this APEX bundle.
|
||||||
|
Bootclasspath_fragments []string
|
||||||
|
|
||||||
|
// List of systemserverclasspath fragments that are embedded inside this APEX bundle.
|
||||||
|
Systemserverclasspath_fragments []string
|
||||||
|
|
||||||
|
// List of java libraries that are embedded inside this APEX bundle.
|
||||||
|
Java_libs []string
|
||||||
|
|
||||||
// Names of modules to be overridden. Listed modules can only be other binaries (in Make or
|
// Names of modules to be overridden. Listed modules can only be other binaries (in Make or
|
||||||
// Soong). This does not completely prevent installation of the overridden binaries, but if
|
// Soong). This does not completely prevent installation of the overridden binaries, but if
|
||||||
// both binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will
|
// both binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will
|
||||||
@@ -787,9 +787,6 @@ func (a *apexBundle) DepsMutator(ctx android.BottomUpMutatorContext) {
|
|||||||
|
|
||||||
// Common-arch dependencies come next
|
// Common-arch dependencies come next
|
||||||
commonVariation := ctx.Config().AndroidCommonTarget.Variations()
|
commonVariation := ctx.Config().AndroidCommonTarget.Variations()
|
||||||
ctx.AddFarVariationDependencies(commonVariation, bcpfTag, a.properties.Bootclasspath_fragments...)
|
|
||||||
ctx.AddFarVariationDependencies(commonVariation, sscpfTag, a.properties.Systemserverclasspath_fragments...)
|
|
||||||
ctx.AddFarVariationDependencies(commonVariation, javaLibTag, a.properties.Java_libs...)
|
|
||||||
ctx.AddFarVariationDependencies(commonVariation, fsTag, a.properties.Filesystems...)
|
ctx.AddFarVariationDependencies(commonVariation, fsTag, a.properties.Filesystems...)
|
||||||
ctx.AddFarVariationDependencies(commonVariation, compatConfigTag, a.properties.Compat_configs...)
|
ctx.AddFarVariationDependencies(commonVariation, compatConfigTag, a.properties.Compat_configs...)
|
||||||
|
|
||||||
@@ -817,6 +814,9 @@ func (a *apexBundle) OverridablePropertiesDepsMutator(ctx android.BottomUpMutato
|
|||||||
ctx.AddFarVariationDependencies(commonVariation, androidAppTag, a.overridableProperties.Apps...)
|
ctx.AddFarVariationDependencies(commonVariation, androidAppTag, a.overridableProperties.Apps...)
|
||||||
ctx.AddFarVariationDependencies(commonVariation, bpfTag, a.overridableProperties.Bpfs...)
|
ctx.AddFarVariationDependencies(commonVariation, bpfTag, a.overridableProperties.Bpfs...)
|
||||||
ctx.AddFarVariationDependencies(commonVariation, rroTag, a.overridableProperties.Rros...)
|
ctx.AddFarVariationDependencies(commonVariation, rroTag, a.overridableProperties.Rros...)
|
||||||
|
ctx.AddFarVariationDependencies(commonVariation, bcpfTag, a.overridableProperties.Bootclasspath_fragments...)
|
||||||
|
ctx.AddFarVariationDependencies(commonVariation, sscpfTag, a.overridableProperties.Systemserverclasspath_fragments...)
|
||||||
|
ctx.AddFarVariationDependencies(commonVariation, javaLibTag, a.overridableProperties.Java_libs...)
|
||||||
if prebuilts := a.overridableProperties.Prebuilts; len(prebuilts) > 0 {
|
if prebuilts := a.overridableProperties.Prebuilts; len(prebuilts) > 0 {
|
||||||
// For prebuilt_etc, use the first variant (64 on 64/32bit device, 32 on 32bit device)
|
// For prebuilt_etc, use the first variant (64 on 64/32bit device, 32 on 32bit device)
|
||||||
// regardless of the TARGET_PREFER_* setting. See b/144532908
|
// regardless of the TARGET_PREFER_* setting. See b/144532908
|
||||||
@@ -2595,9 +2595,9 @@ func isStaticExecutableAllowed(apex string, exec string) bool {
|
|||||||
|
|
||||||
// Collect information for opening IDE project files in java/jdeps.go.
|
// Collect information for opening IDE project files in java/jdeps.go.
|
||||||
func (a *apexBundle) IDEInfo(dpInfo *android.IdeInfo) {
|
func (a *apexBundle) IDEInfo(dpInfo *android.IdeInfo) {
|
||||||
dpInfo.Deps = append(dpInfo.Deps, a.properties.Java_libs...)
|
dpInfo.Deps = append(dpInfo.Deps, a.overridableProperties.Java_libs...)
|
||||||
dpInfo.Deps = append(dpInfo.Deps, a.properties.Bootclasspath_fragments...)
|
dpInfo.Deps = append(dpInfo.Deps, a.overridableProperties.Bootclasspath_fragments...)
|
||||||
dpInfo.Deps = append(dpInfo.Deps, a.properties.Systemserverclasspath_fragments...)
|
dpInfo.Deps = append(dpInfo.Deps, a.overridableProperties.Systemserverclasspath_fragments...)
|
||||||
dpInfo.Paths = append(dpInfo.Paths, a.modulePaths...)
|
dpInfo.Paths = append(dpInfo.Paths, a.modulePaths...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -6091,6 +6091,9 @@ func TestOverrideApex(t *testing.T) {
|
|||||||
apps: ["app"],
|
apps: ["app"],
|
||||||
bpfs: ["bpf"],
|
bpfs: ["bpf"],
|
||||||
prebuilts: ["myetc"],
|
prebuilts: ["myetc"],
|
||||||
|
bootclasspath_fragments: ["mybootclasspath_fragment"],
|
||||||
|
systemserverclasspath_fragments: ["mysystemserverclasspath_fragment"],
|
||||||
|
java_libs: ["myjava_library"],
|
||||||
overrides: ["oldapex"],
|
overrides: ["oldapex"],
|
||||||
updatable: false,
|
updatable: false,
|
||||||
}
|
}
|
||||||
@@ -6101,6 +6104,9 @@ func TestOverrideApex(t *testing.T) {
|
|||||||
apps: ["override_app"],
|
apps: ["override_app"],
|
||||||
bpfs: ["override_bpf"],
|
bpfs: ["override_bpf"],
|
||||||
prebuilts: ["override_myetc"],
|
prebuilts: ["override_myetc"],
|
||||||
|
bootclasspath_fragments: ["override_bootclasspath_fragment"],
|
||||||
|
systemserverclasspath_fragments: ["override_systemserverclasspath_fragment"],
|
||||||
|
java_libs: ["override_java_library"],
|
||||||
overrides: ["unknownapex"],
|
overrides: ["unknownapex"],
|
||||||
logging_parent: "com.foo.bar",
|
logging_parent: "com.foo.bar",
|
||||||
package_name: "test.overridden.package",
|
package_name: "test.overridden.package",
|
||||||
@@ -6159,6 +6165,72 @@ func TestOverrideApex(t *testing.T) {
|
|||||||
name: "override_myetc",
|
name: "override_myetc",
|
||||||
src: "override_myprebuilt",
|
src: "override_myprebuilt",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
java_library {
|
||||||
|
name: "bcplib",
|
||||||
|
srcs: ["a.java"],
|
||||||
|
compile_dex: true,
|
||||||
|
apex_available: ["myapex"],
|
||||||
|
permitted_packages: ["bcp.lib"],
|
||||||
|
}
|
||||||
|
|
||||||
|
bootclasspath_fragment {
|
||||||
|
name: "mybootclasspath_fragment",
|
||||||
|
contents: ["bcplib"],
|
||||||
|
apex_available: ["myapex"],
|
||||||
|
}
|
||||||
|
|
||||||
|
java_library {
|
||||||
|
name: "override_bcplib",
|
||||||
|
srcs: ["a.java"],
|
||||||
|
compile_dex: true,
|
||||||
|
apex_available: ["myapex"],
|
||||||
|
permitted_packages: ["override.bcp.lib"],
|
||||||
|
}
|
||||||
|
|
||||||
|
bootclasspath_fragment {
|
||||||
|
name: "override_bootclasspath_fragment",
|
||||||
|
contents: ["override_bcplib"],
|
||||||
|
apex_available: ["myapex"],
|
||||||
|
}
|
||||||
|
|
||||||
|
java_library {
|
||||||
|
name: "systemserverlib",
|
||||||
|
srcs: ["a.java"],
|
||||||
|
apex_available: ["myapex"],
|
||||||
|
}
|
||||||
|
|
||||||
|
systemserverclasspath_fragment {
|
||||||
|
name: "mysystemserverclasspath_fragment",
|
||||||
|
standalone_contents: ["systemserverlib"],
|
||||||
|
apex_available: ["myapex"],
|
||||||
|
}
|
||||||
|
|
||||||
|
java_library {
|
||||||
|
name: "override_systemserverlib",
|
||||||
|
srcs: ["a.java"],
|
||||||
|
apex_available: ["myapex"],
|
||||||
|
}
|
||||||
|
|
||||||
|
systemserverclasspath_fragment {
|
||||||
|
name: "override_systemserverclasspath_fragment",
|
||||||
|
standalone_contents: ["override_systemserverlib"],
|
||||||
|
apex_available: ["myapex"],
|
||||||
|
}
|
||||||
|
|
||||||
|
java_library {
|
||||||
|
name: "myjava_library",
|
||||||
|
srcs: ["a.java"],
|
||||||
|
compile_dex: true,
|
||||||
|
apex_available: ["myapex"],
|
||||||
|
}
|
||||||
|
|
||||||
|
java_library {
|
||||||
|
name: "override_java_library",
|
||||||
|
srcs: ["a.java"],
|
||||||
|
compile_dex: true,
|
||||||
|
apex_available: ["myapex"],
|
||||||
|
}
|
||||||
`, withManifestPackageNameOverrides([]string{"myapex:com.android.myapex"}))
|
`, withManifestPackageNameOverrides([]string{"myapex:com.android.myapex"}))
|
||||||
|
|
||||||
originalVariant := ctx.ModuleForTests("myapex", "android_common_myapex_image").Module().(android.OverridableModule)
|
originalVariant := ctx.ModuleForTests("myapex", "android_common_myapex_image").Module().(android.OverridableModule)
|
||||||
@@ -6193,6 +6265,13 @@ func TestOverrideApex(t *testing.T) {
|
|||||||
t.Errorf("override_myapex should have logging parent (com.foo.bar), but was %q.", apexBundle.overridableProperties.Logging_parent)
|
t.Errorf("override_myapex should have logging parent (com.foo.bar), but was %q.", apexBundle.overridableProperties.Logging_parent)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
android.AssertArrayString(t, "Bootclasspath_fragments does not match",
|
||||||
|
[]string{"override_bootclasspath_fragment"}, apexBundle.overridableProperties.Bootclasspath_fragments)
|
||||||
|
android.AssertArrayString(t, "Systemserverclasspath_fragments does not match",
|
||||||
|
[]string{"override_systemserverclasspath_fragment"}, apexBundle.overridableProperties.Systemserverclasspath_fragments)
|
||||||
|
android.AssertArrayString(t, "Java_libs does not match",
|
||||||
|
[]string{"override_java_library"}, apexBundle.overridableProperties.Java_libs)
|
||||||
|
|
||||||
optFlags := apexRule.Args["opt_flags"]
|
optFlags := apexRule.Args["opt_flags"]
|
||||||
ensureContains(t, optFlags, "--override_apk_package_name test.overridden.package")
|
ensureContains(t, optFlags, "--override_apk_package_name test.overridden.package")
|
||||||
ensureContains(t, optFlags, "--pubkey testkey2.avbpubkey")
|
ensureContains(t, optFlags, "--pubkey testkey2.avbpubkey")
|
||||||
@@ -6207,12 +6286,18 @@ func TestOverrideApex(t *testing.T) {
|
|||||||
ensureContains(t, androidMk, "LOCAL_MODULE := override_app.override_myapex")
|
ensureContains(t, androidMk, "LOCAL_MODULE := override_app.override_myapex")
|
||||||
ensureContains(t, androidMk, "LOCAL_MODULE := override_bpf.o.override_myapex")
|
ensureContains(t, androidMk, "LOCAL_MODULE := override_bpf.o.override_myapex")
|
||||||
ensureContains(t, androidMk, "LOCAL_MODULE := apex_manifest.pb.override_myapex")
|
ensureContains(t, androidMk, "LOCAL_MODULE := apex_manifest.pb.override_myapex")
|
||||||
|
ensureContains(t, androidMk, "LOCAL_MODULE := override_bcplib.override_myapex")
|
||||||
|
ensureContains(t, androidMk, "LOCAL_MODULE := override_systemserverlib.override_myapex")
|
||||||
|
ensureContains(t, androidMk, "LOCAL_MODULE := override_java_library.override_myapex")
|
||||||
ensureContains(t, androidMk, "LOCAL_MODULE_STEM := override_myapex.apex")
|
ensureContains(t, androidMk, "LOCAL_MODULE_STEM := override_myapex.apex")
|
||||||
ensureContains(t, androidMk, "LOCAL_OVERRIDES_MODULES := unknownapex myapex")
|
ensureContains(t, androidMk, "LOCAL_OVERRIDES_MODULES := unknownapex myapex")
|
||||||
ensureNotContains(t, androidMk, "LOCAL_MODULE := app.myapex")
|
ensureNotContains(t, androidMk, "LOCAL_MODULE := app.myapex")
|
||||||
ensureNotContains(t, androidMk, "LOCAL_MODULE := bpf.myapex")
|
ensureNotContains(t, androidMk, "LOCAL_MODULE := bpf.myapex")
|
||||||
ensureNotContains(t, androidMk, "LOCAL_MODULE := override_app.myapex")
|
ensureNotContains(t, androidMk, "LOCAL_MODULE := override_app.myapex")
|
||||||
ensureNotContains(t, androidMk, "LOCAL_MODULE := apex_manifest.pb.myapex")
|
ensureNotContains(t, androidMk, "LOCAL_MODULE := apex_manifest.pb.myapex")
|
||||||
|
ensureNotContains(t, androidMk, "LOCAL_MODULE := override_bcplib.myapex")
|
||||||
|
ensureNotContains(t, androidMk, "LOCAL_MODULE := override_systemserverlib.myapex")
|
||||||
|
ensureNotContains(t, androidMk, "LOCAL_MODULE := override_java_library.pb.myapex")
|
||||||
ensureNotContains(t, androidMk, "LOCAL_MODULE_STEM := myapex.apex")
|
ensureNotContains(t, androidMk, "LOCAL_MODULE_STEM := myapex.apex")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user