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

Commit eb8cd312 authored by Cole Faust's avatar Cole Faust
Browse files

Don't add flattened files apex as dependencies of an image apex

The image apex does not need all the files that make up a flattened
apex.

Bug: 254205429
Test: go tests
Change-Id: I7c574c5b30b55ab6d1b3981ee26d168c2f2427c4
parent 3a79caa3
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -317,14 +317,14 @@ func (a *apexBundle) writeRequiredModules(w io.Writer, moduleNames []string) {
func (a *apexBundle) androidMkForType() android.AndroidMkData {
	return android.AndroidMkData{
		Custom: func(w io.Writer, name, prefix, moduleDir string, data android.AndroidMkData) {
			moduleNames := []string{}
			apexType := a.properties.ApexType

			if apexType == flattenedApex {
				var moduleNames []string = nil
				if a.installable() {
					apexName := proptools.StringDefault(a.properties.Apex_name, name)
					moduleNames = a.androidMkForFiles(w, name, apexName, moduleDir, data)
				}

			if apexType == flattenedApex {
				// Only image APEXes can be flattened.
				fmt.Fprintln(w, "\ninclude $(CLEAR_VARS)  # apex.apexBundle.flat")
				fmt.Fprintln(w, "LOCAL_PATH :=", moduleDir)
@@ -366,7 +366,7 @@ func (a *apexBundle) androidMkForType() android.AndroidMkData {
				}

				android.AndroidMkEmitAssignList(w, "LOCAL_OVERRIDES_MODULES", a.overridableProperties.Overrides)
				a.writeRequiredModules(w, moduleNames)
				a.writeRequiredModules(w, nil)

				fmt.Fprintln(w, "include $(BUILD_PREBUILT)")

+11 −23
Original line number Diff line number Diff line
@@ -526,7 +526,6 @@ func TestBasicApex(t *testing.T) {
	data.Custom(&builder, ab.BaseModuleName(), "TARGET_", "", data)

	androidMk := builder.String()
	ensureContains(t, androidMk, "LOCAL_MODULE := mylib.myapex\n")
	ensureNotContains(t, androidMk, "LOCAL_MODULE := mylib.com.android.myapex\n")

	optFlags := apexRule.Args["opt_flags"]
@@ -2996,7 +2995,7 @@ func TestAndroidMk_VendorApexRequired(t *testing.T) {
	var builder strings.Builder
	data.Custom(&builder, name, prefix, "", data)
	androidMk := builder.String()
	ensureContains(t, androidMk, "LOCAL_REQUIRED_MODULES := libc++.vendor.myapex:64 mylib.vendor.myapex:64 apex_manifest.pb.myapex apex_pubkey.myapex libc.vendor libm.vendor libdl.vendor\n")
	ensureContains(t, androidMk, "LOCAL_REQUIRED_MODULES := libc.vendor libm.vendor libdl.vendor\n")
}

func TestAndroidMkWritesCommonProperties(t *testing.T) {
@@ -4153,7 +4152,6 @@ func TestApexName(t *testing.T) {
	var builder strings.Builder
	data.Custom(&builder, name, prefix, "", data)
	androidMk := builder.String()
	ensureContains(t, androidMk, "LOCAL_MODULE := mylib.myapex\n")
	ensureNotContains(t, androidMk, "LOCAL_MODULE := mylib.com.android.myapex\n")
}

@@ -5687,12 +5685,6 @@ func TestApexWithTests(t *testing.T) {
	var builder strings.Builder
	data.Custom(&builder, name, prefix, "", data)
	androidMk := builder.String()
	ensureContains(t, androidMk, "LOCAL_MODULE := mytest.myapex\n")
	ensureContains(t, androidMk, "LOCAL_MODULE := mytest1.myapex\n")
	ensureContains(t, androidMk, "LOCAL_MODULE := mytest2.myapex\n")
	ensureContains(t, androidMk, "LOCAL_MODULE := mytest3.myapex\n")
	ensureContains(t, androidMk, "LOCAL_MODULE := apex_manifest.pb.myapex\n")
	ensureContains(t, androidMk, "LOCAL_MODULE := apex_pubkey.myapex\n")
	ensureContains(t, androidMk, "LOCAL_MODULE := myapex\n")

	flatBundle := ctx.ModuleForTests("myapex", "android_common_myapex_flattened").Module().(*apexBundle)
@@ -5726,7 +5718,7 @@ func TestInstallExtraFlattenedApexes(t *testing.T) {
	var builder strings.Builder
	mk.Custom(&builder, ab.Name(), "TARGET_", "", mk)
	androidMk := builder.String()
	ensureContains(t, androidMk, "LOCAL_REQUIRED_MODULES := apex_manifest.pb.myapex apex_pubkey.myapex myapex.flattened\n")
	ensureContains(t, androidMk, "LOCAL_REQUIRED_MODULES := myapex.flattened\n")
}

func TestErrorsIfDepsAreNotEnabled(t *testing.T) {
@@ -6519,12 +6511,6 @@ func TestOverrideApex(t *testing.T) {
	var builder strings.Builder
	data.Custom(&builder, name, "TARGET_", "", data)
	androidMk := builder.String()
	ensureContains(t, androidMk, "LOCAL_MODULE := override_app.override_myapex")
	ensureContains(t, androidMk, "LOCAL_MODULE := overrideBpf.o.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_OVERRIDES_MODULES := unknownapex myapex")
	ensureNotContains(t, androidMk, "LOCAL_MODULE := app.myapex")
@@ -7116,7 +7102,7 @@ func TestCarryRequiredModuleNames(t *testing.T) {
	var builder strings.Builder
	data.Custom(&builder, name, prefix, "", data)
	androidMk := builder.String()
	ensureContains(t, androidMk, "LOCAL_REQUIRED_MODULES := mylib.myapex:64 apex_manifest.pb.myapex apex_pubkey.myapex a b\n")
	ensureContains(t, androidMk, "LOCAL_REQUIRED_MODULES := a b\n")
	ensureContains(t, androidMk, "LOCAL_HOST_REQUIRED_MODULES := c d\n")
	ensureContains(t, androidMk, "LOCAL_TARGET_REQUIRED_MODULES := e f\n")
}
@@ -7287,6 +7273,9 @@ func TestSymlinksFromApexToSystemRequiredModuleNames(t *testing.T) {
				"myapex",
				"//apex_available:platform",
			],
			stubs: {
				versions: ["current"],
			},
		}
	`)

@@ -7296,11 +7285,10 @@ func TestSymlinksFromApexToSystemRequiredModuleNames(t *testing.T) {
	data.Custom(&builder, apexBundle.BaseModuleName(), "TARGET_", "", data)
	androidMk := builder.String()
	// `myotherlib` is added to `myapex` as symlink
	ensureContains(t, androidMk, "LOCAL_MODULE := mylib.myapex\n")
	ensureNotContains(t, androidMk, "LOCAL_MODULE := prebuilt_myotherlib.myapex\n")
	ensureNotContains(t, androidMk, "LOCAL_MODULE := myotherlib.myapex\n")
	// `myapex` should have `myotherlib` in its required line, not `prebuilt_myotherlib`
	ensureContains(t, androidMk, "LOCAL_REQUIRED_MODULES := mylib.myapex:64 myotherlib:64 apex_manifest.pb.myapex apex_pubkey.myapex\n")
	ensureContains(t, androidMk, "LOCAL_REQUIRED_MODULES := myotherlib\n")
}

func TestApexWithJniLibs(t *testing.T) {
@@ -8813,7 +8801,7 @@ func TestPreferredPrebuiltSharedLibDep(t *testing.T) {

	// The make level dependency needs to be on otherlib - prebuilt_otherlib isn't
	// a thing there.
	ensureContains(t, androidMk, "LOCAL_REQUIRED_MODULES := libc++:64 mylib.myapex:64 apex_manifest.pb.myapex apex_pubkey.myapex otherlib\n")
	ensureContains(t, androidMk, "LOCAL_REQUIRED_MODULES := otherlib\n")
}

func TestExcludeDependency(t *testing.T) {
@@ -9207,7 +9195,7 @@ func TestAndroidMk_DexpreoptBuiltInstalledForApex(t *testing.T) {
	var builder strings.Builder
	data.Custom(&builder, apexBundle.BaseModuleName(), "TARGET_", "", data)
	androidMk := builder.String()
	ensureContains(t, androidMk, "LOCAL_REQUIRED_MODULES := foo.myapex apex_manifest.pb.myapex apex_pubkey.myapex foo-dexpreopt-arm64-apex@myapex@javalib@foo.jar@classes.odex foo-dexpreopt-arm64-apex@myapex@javalib@foo.jar@classes.vdex\n")
	ensureContains(t, androidMk, "LOCAL_REQUIRED_MODULES := foo-dexpreopt-arm64-apex@myapex@javalib@foo.jar@classes.odex foo-dexpreopt-arm64-apex@myapex@javalib@foo.jar@classes.vdex\n")
}

func TestAndroidMk_DexpreoptBuiltInstalledForApex_Prebuilt(t *testing.T) {
@@ -9283,7 +9271,7 @@ func TestAndroidMk_RequiredModules(t *testing.T) {
	var builder strings.Builder
	data.Custom(&builder, apexBundle.BaseModuleName(), "TARGET_", "", data)
	androidMk := builder.String()
	ensureContains(t, androidMk, "LOCAL_REQUIRED_MODULES := foo.myapex apex_manifest.pb.myapex apex_pubkey.myapex otherapex")
	ensureContains(t, androidMk, "LOCAL_REQUIRED_MODULES := otherapex")
}

func TestAndroidMk_RequiredDeps(t *testing.T) {
@@ -9307,7 +9295,7 @@ func TestAndroidMk_RequiredDeps(t *testing.T) {
	var builder strings.Builder
	data.Custom(&builder, bundle.BaseModuleName(), "TARGET_", "", data)
	androidMk := builder.String()
	ensureContains(t, androidMk, "LOCAL_REQUIRED_MODULES := apex_manifest.pb.myapex apex_pubkey.myapex foo\n")
	ensureContains(t, androidMk, "LOCAL_REQUIRED_MODULES := foo\n")

	flattenedBundle := ctx.ModuleForTests("myapex", "android_common_myapex_flattened").Module().(*apexBundle)
	flattenedBundle.requiredDeps = append(flattenedBundle.requiredDeps, "foo")