Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 58367574 authored by Paul Duffin's avatar Paul Duffin Committed by Gerrit Code Review
Browse files

Merge "Add the transitive dependencies of boot_image to apex"

parents da0470d8 4d101b60
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -1702,6 +1702,9 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) {
							filesInfo = append(filesInfo, af)
						}
					}

					// Track transitive dependencies.
					return true
				}
			case javaLibTag:
				switch child.(type) {
@@ -1910,6 +1913,21 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) {
						filesInfo = append(filesInfo, af)
						return true // track transitive dependencies
					}
				} else if java.IsbootImageContentDepTag(depTag) {
					// Add the contents of the boot image to the apex.
					switch child.(type) {
					case *java.Library, *java.SdkLibrary:
						af := apexFileForJavaModule(ctx, child.(javaModule))
						if !af.ok() {
							ctx.PropertyErrorf("boot_images", "boot image content %q is not configured to be compiled into dex", depName)
							return false
						}
						filesInfo = append(filesInfo, af)
						return true // track transitive dependencies
					default:
						ctx.PropertyErrorf("boot_images", "boot image content %q of type %q is not supported", depName, ctx.OtherModuleType(child))
					}

				} else if _, ok := depTag.(android.CopyDirectlyInAnyApexTag); ok {
					// nothing
				} else if am.CanHaveApexVariants() && am.IsInstallableToApex() {
+9 −4
Original line number Diff line number Diff line
@@ -177,8 +177,10 @@ func TestBootImageInArtApex(t *testing.T) {
			boot_images: [
				"mybootimage",
			],
			// bar (like foo) should be transitively included in this apex because it is part of the
			// mybootimage boot_image. However, it is kept here to ensure that the apex dedups the files
			// correctly.
			java_libs: [
				"foo",
				"bar",
			],
			updatable: false,
@@ -247,7 +249,6 @@ func TestBootImageInArtApex(t *testing.T) {
	java.CheckModuleDependencies(t, result.TestContext, "com.android.art", "android_common_com.android.art_image", []string{
		`bar`,
		`com.android.art.key`,
		`foo`,
		`mybootimage`,
	})
}
@@ -365,8 +366,12 @@ func TestBootImageContentsNoName(t *testing.T) {
		}
	`)

	// The apex is empty because the contents of boot_image are not transitively included, yet!
	ensureExactContents(t, result.TestContext, "myapex", "android_common_myapex_image", []string{})
	ensureExactContents(t, result.TestContext, "myapex", "android_common_myapex_image", []string{
		// This does not include art, oat or vdex files as they are only included for the art boot
		// image.
		"javalib/bar.jar",
		"javalib/foo.jar",
	})

	java.CheckModuleDependencies(t, result.TestContext, "myapex", "android_common_myapex_image", []string{
		`myapex.key`,
+6 −2
Original line number Diff line number Diff line
@@ -70,6 +70,10 @@ var bootImageContentDepTag = bootImageContentDependencyTag{}

var _ android.ExcludeFromVisibilityEnforcementTag = bootImageContentDepTag

func IsbootImageContentDepTag(tag blueprint.DependencyTag) bool {
	return tag == bootImageContentDepTag
}

type bootImageProperties struct {
	// The name of the image this represents.
	//
@@ -182,8 +186,8 @@ func (i BootImageInfo) AndroidBootImageFilesByArchType() map[android.ArchType]an
func (b *BootImageModule) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Module) bool {
	tag := ctx.OtherModuleDependencyTag(dep)
	if tag == bootImageContentDepTag {
		// Boot image contents are not automatically added to apex, yet.
		return false
		// Boot image contents are automatically added to apex.
		return true
	}
	if android.IsMetaDependencyTag(tag) {
		// Cross-cutting metadata dependencies are metadata.