Use implementation jar for updatable-media in snapshot for S
While enabling prebuilts in T we hit b/229932396 which was caused by some parts of the build depending on the prebuilt updatable-media jar which used to be a full implementation jar but which is now an invalid jar as the snapshot must not be including implementation details. We fixed the issue in T but we are hitting the same problem in S with the M-2022-07. That is the first train in which the prebuilt updatable-media module provides an invalid jar, prior to that it was always providing an implementation jar. This change tweaks the sdk snapshot generation code to use an implementation jar for updatable-media in the S snapshot to avoid partners having to cherry pick changes similar to those needed to fix b/229932396 in T. Bug: 239121291 Test: packages/modules/common/build/mainline_modules_sdks.sh # Check that S media snapshot includes implementation jar. # Check that S art snapshot includes invalid jar. # Check that T media snapshot includes invalid jar. Change-Id: Ib49484d00a60b4ed7f8268e04f9c10a3498edb56
This commit is contained in:
@@ -24,18 +24,22 @@ import (
|
||||
|
||||
// buildRelease represents the version of a build system used to create a specific release.
|
||||
//
|
||||
// The name of the release, is the same as the code for the dessert release, e.g. S, T, etc.
|
||||
// The name of the release, is the same as the code for the dessert release, e.g. S, Tiramisu, etc.
|
||||
type buildRelease struct {
|
||||
// The name of the release, e.g. S, T, etc.
|
||||
// The name of the release, e.g. S, Tiramisu, etc.
|
||||
name string
|
||||
|
||||
// The index of this structure within the buildReleases list.
|
||||
ordinal int
|
||||
}
|
||||
|
||||
func (br *buildRelease) EarlierThan(other *buildRelease) bool {
|
||||
return br.ordinal < other.ordinal
|
||||
}
|
||||
|
||||
// String returns the name of the build release.
|
||||
func (s *buildRelease) String() string {
|
||||
return s.name
|
||||
func (br *buildRelease) String() string {
|
||||
return br.name
|
||||
}
|
||||
|
||||
// buildReleaseSet represents a set of buildRelease objects.
|
||||
|
@@ -15,6 +15,7 @@
|
||||
package sdk
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"android/soong/android"
|
||||
@@ -257,8 +258,8 @@ func TestSnapshotWithJavaBootLibrary(t *testing.T) {
|
||||
android.FixtureAddFile("aidl", nil),
|
||||
android.FixtureAddFile("resource.txt", nil),
|
||||
).RunTestWithBp(t, `
|
||||
module_exports {
|
||||
name: "myexports",
|
||||
sdk {
|
||||
name: "mysdk",
|
||||
java_boot_libs: ["myjavalib"],
|
||||
}
|
||||
|
||||
@@ -278,7 +279,7 @@ func TestSnapshotWithJavaBootLibrary(t *testing.T) {
|
||||
}
|
||||
`)
|
||||
|
||||
CheckSnapshot(t, result, "myexports", "",
|
||||
CheckSnapshot(t, result, "mysdk", "",
|
||||
checkAndroidBpContents(`
|
||||
// This is auto-generated. DO NOT EDIT.
|
||||
|
||||
@@ -292,11 +293,65 @@ java_import {
|
||||
}
|
||||
`),
|
||||
checkAllCopyRules(`
|
||||
.intermediates/myexports/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/myjavalib.jar
|
||||
.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/myjavalib.jar
|
||||
`),
|
||||
)
|
||||
}
|
||||
|
||||
func TestSnapshotWithJavaBootLibrary_UpdatableMedia(t *testing.T) {
|
||||
runTest := func(t *testing.T, targetBuildRelease, expectedJarPath, expectedCopyRule string) {
|
||||
result := android.GroupFixturePreparers(
|
||||
prepareForSdkTestWithJava,
|
||||
android.FixtureMergeEnv(map[string]string{
|
||||
"SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": targetBuildRelease,
|
||||
}),
|
||||
).RunTestWithBp(t, `
|
||||
sdk {
|
||||
name: "mysdk",
|
||||
java_boot_libs: ["updatable-media"],
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "updatable-media",
|
||||
srcs: ["Test.java"],
|
||||
system_modules: "none",
|
||||
sdk_version: "none",
|
||||
compile_dex: true,
|
||||
permitted_packages: ["pkg.media"],
|
||||
apex_available: ["com.android.media"],
|
||||
}
|
||||
`)
|
||||
|
||||
CheckSnapshot(t, result, "mysdk", "",
|
||||
checkAndroidBpContents(fmt.Sprintf(`
|
||||
// This is auto-generated. DO NOT EDIT.
|
||||
|
||||
java_import {
|
||||
name: "updatable-media",
|
||||
prefer: false,
|
||||
visibility: ["//visibility:public"],
|
||||
apex_available: ["com.android.media"],
|
||||
jars: ["%s"],
|
||||
permitted_packages: ["pkg.media"],
|
||||
}
|
||||
`, expectedJarPath)),
|
||||
checkAllCopyRules(expectedCopyRule),
|
||||
)
|
||||
}
|
||||
|
||||
t.Run("updatable-media in S", func(t *testing.T) {
|
||||
runTest(t, "S", "java/updatable-media.jar", `
|
||||
.intermediates/updatable-media/android_common/package-check/updatable-media.jar -> java/updatable-media.jar
|
||||
`)
|
||||
})
|
||||
|
||||
t.Run("updatable-media in T", func(t *testing.T) {
|
||||
runTest(t, "Tiramisu", "java_boot_libs/snapshot/jars/are/invalid/updatable-media.jar", `
|
||||
.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/updatable-media.jar
|
||||
`)
|
||||
})
|
||||
}
|
||||
|
||||
func TestSnapshotWithJavaSystemserverLibrary(t *testing.T) {
|
||||
result := android.GroupFixturePreparers(
|
||||
prepareForSdkTestWithJava,
|
||||
|
@@ -1972,6 +1972,12 @@ func (m *memberContext) RequiresTrait(trait android.SdkMemberTrait) bool {
|
||||
return m.requiredTraits.Contains(trait)
|
||||
}
|
||||
|
||||
func (m *memberContext) IsTargetBuildBeforeTiramisu() bool {
|
||||
return m.builder.targetBuildRelease.EarlierThan(buildReleaseT)
|
||||
}
|
||||
|
||||
var _ android.SdkMemberContext = (*memberContext)(nil)
|
||||
|
||||
func (s *sdk) createMemberSnapshot(ctx *memberContext, member *sdkMember, bpModule *bpModule) {
|
||||
|
||||
memberType := member.memberType
|
||||
|
Reference in New Issue
Block a user