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

Commit b370adbd authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Build VNDK with VNDK prebuilts without BOARD_VNDK_VERSION" into main

parents c219740e 0fcadd89
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -3772,13 +3772,6 @@ func TestVndkApexCurrent(t *testing.T) {
				"lib64/libvndk.so",
				"lib64/libvndksp.so"),
		},
		{
			vndkVersion: "",
			expectedFiles: append(commonFiles,
				// Legacy VNDK APEX contains only VNDK-SP files (of core variant)
				"lib/libvndksp.so",
				"lib64/libvndksp.so"),
		},
	}
	for _, tc := range testCases {
		t.Run("VNDK.current with DeviceVndkVersion="+tc.vndkVersion, func(t *testing.T) {
+0 −60
Original line number Diff line number Diff line
@@ -8,66 +8,6 @@ import (
	"android/soong/android"
)

func TestVndkApexForVndkLite(t *testing.T) {
	ctx := testApex(t, `
		apex_vndk {
			name: "com.android.vndk.current",
			key: "com.android.vndk.current.key",
			updatable: false,
		}

		apex_key {
			name: "com.android.vndk.current.key",
			public_key: "testkey.avbpubkey",
			private_key: "testkey.pem",
		}

		cc_library {
			name: "libvndk",
			srcs: ["mylib.cpp"],
			vendor_available: true,
			product_available: true,
			vndk: {
				enabled: true,
			},
			system_shared_libs: [],
			stl: "none",
			apex_available: [ "com.android.vndk.current" ],
		}

		cc_library {
			name: "libvndksp",
			srcs: ["mylib.cpp"],
			vendor_available: true,
			product_available: true,
			vndk: {
				enabled: true,
				support_system_process: true,
			},
			system_shared_libs: [],
			stl: "none",
			apex_available: [ "com.android.vndk.current" ],
		}
	`+vndkLibrariesTxtFiles("current"),
		android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
			variables.DeviceVndkVersion = proptools.StringPtr("")
			variables.KeepVndk = proptools.BoolPtr(true)
		}),
	)
	// VNDK-Lite contains only core variants of VNDK-Sp libraries
	ensureExactContents(t, ctx, "com.android.vndk.current", "android_common", []string{
		"lib/libvndksp.so",
		"lib/libc++.so",
		"lib64/libvndksp.so",
		"lib64/libc++.so",
		"etc/llndk.libraries.29.txt",
		"etc/vndkcore.libraries.29.txt",
		"etc/vndksp.libraries.29.txt",
		"etc/vndkprivate.libraries.29.txt",
		"etc/vndkproduct.libraries.29.txt",
	})
}

func TestVndkApexUsesVendorVariant(t *testing.T) {
	bp := `
		apex_vndk {
+7 −12
Original line number Diff line number Diff line
@@ -377,22 +377,17 @@ func IsForVndkApex(mctx android.BottomUpMutatorContext, m *Module) bool {
			return false
		}

		platformVndkVersion := mctx.DeviceConfig().PlatformVndkVersion()
		if platformVndkVersion != "" {
			// ignore prebuilt vndk modules that are newer than or equal to the platform vndk version
		platformVndkApiLevel := android.ApiLevelOrPanic(mctx, mctx.DeviceConfig().PlatformVndkVersion())
			platformVndkApiLevel := android.ApiLevelOrPanic(mctx, platformVndkVersion)
			if platformVndkApiLevel.LessThanOrEqualTo(android.ApiLevelOrPanic(mctx, p.Version())) {
				return false
			}
		}
	}

	if lib, ok := m.linker.(libraryInterface); ok {
		// VNDK APEX for VNDK-Lite devices will have VNDK-SP libraries from core variants
		if mctx.DeviceConfig().VndkVersion() == "" {
			// b/73296261: filter out libz.so because it is considered as LLNDK for VNDK-lite devices
			if mctx.ModuleName() == "libz" {
				return false
			}
			return m.ImageVariation().Variation == android.CoreVariation && lib.shared() && m.IsVndkSp() && !m.IsVndkExt()
		}
		// VNDK APEX doesn't need stub variants
		if lib.buildStubs() {
			return false
+8 −13
Original line number Diff line number Diff line
@@ -131,12 +131,15 @@ func (p *vndkPrebuiltLibraryDecorator) singleSourcePath(ctx ModuleContext) andro

func (p *vndkPrebuiltLibraryDecorator) link(ctx ModuleContext,
	flags Flags, deps PathDeps, objs Objects) android.Path {
	platformVndkApiLevel := android.ApiLevelOrPanic(ctx, ctx.DeviceConfig().PlatformVndkVersion())
	platformVndkVersion := ctx.DeviceConfig().PlatformVndkVersion()
	if platformVndkVersion != "" {
		platformVndkApiLevel := android.ApiLevelOrPanic(ctx, platformVndkVersion)
		if platformVndkApiLevel.LessThanOrEqualTo(android.ApiLevelOrPanic(ctx, p.Version())) {
			// This prebuilt VNDK module is not required for the current build
			ctx.Module().HideFromMake()
			return nil
		}
	}

	if !p.MatchesWithDevice(ctx.DeviceConfig()) {
		ctx.Module().HideFromMake()
@@ -247,14 +250,6 @@ func vndkPrebuiltSharedLibrary() *Module {
		&prebuilt.properties,
	)

	android.AddLoadHook(module, func(ctx android.LoadHookContext) {
		// empty BOARD_VNDK_VERSION implies that the device won't support
		// system only OTA. In this case, VNDK snapshots aren't needed.
		if ctx.DeviceConfig().VndkVersion() == "" {
			ctx.Module().Disable()
		}
	})

	return module
}