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

Commit bacf34d9 authored by Jooyung Han's avatar Jooyung Han
Browse files

Revert "Enforce min_sdk_version of apex(use_vendor:true)"

This reverts commit 380fc361.

Reason for revert: breaking one of internal targets

Change-Id: Ica96c44078e5a7f674410828af3ba851317775dd

Exempt-From-Owner-Approval: revert to fix build failure
parent 380fc361
Loading
Loading
Loading
Loading
+51 −78
Original line number Diff line number Diff line
@@ -858,35 +858,13 @@ func TestApexWithRuntimeLibsDependency(t *testing.T) {

}

func TestApexDependsOnLLNDKTransitively(t *testing.T) {
	testcases := []struct {
		name          string
		minSdkVersion string
		shouldLink    string
		shouldNotLink []string
	}{
		{
			name:          "should link to test latest",
			minSdkVersion: "current",
			shouldLink:    "30",
			shouldNotLink: []string{"29"},
		},
		{
			name:          "should link to llndk#29",
			minSdkVersion: "29",
			shouldLink:    "29",
			shouldNotLink: []string{"30"},
		},
	}
	for _, tc := range testcases {
		t.Run(tc.name, func(t *testing.T) {
func TestApexDependencyToLLNDK(t *testing.T) {
	ctx, _ := testApex(t, `
		apex {
			name: "myapex",
			key: "myapex.key",
			use_vendor: true,
			native_shared_libs: ["mylib"],
				min_sdk_version: "`+tc.minSdkVersion+`",
		}

		apex_key {
@@ -910,7 +888,6 @@ func TestApexDependsOnLLNDKTransitively(t *testing.T) {
			srcs: ["mylib.cpp"],
			system_shared_libs: [],
			stl: "none",
				stubs: { versions: ["29","30"] },
		}

		llndk_library {
@@ -919,28 +896,20 @@ func TestApexDependsOnLLNDKTransitively(t *testing.T) {
		}
	`, func(fs map[string][]byte, config android.Config) {
		setUseVendorWhitelistForTest(config, []string{"myapex"})
			}, withUnbundledBuild)
	})

	apexRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexRule")
	copyCmds := apexRule.Args["copy_commands"]

	// Ensure that LLNDK dep is not included
			ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{
				"lib64/mylib.so",
			})
	ensureNotContains(t, copyCmds, "image.apex/lib64/libbar.so")

			// Ensure that LLNDK dep is required
	apexManifestRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexManifestRule")
	ensureListEmpty(t, names(apexManifestRule.Args["provideNativeLibs"]))
			ensureListContains(t, names(apexManifestRule.Args["requireNativeLibs"]), "libbar.so")

			mylibLdFlags := ctx.ModuleForTests("mylib", "android_vendor.VER_arm64_armv8-a_shared_myapex").Rule("ld").Args["libFlags"]
			ensureContains(t, mylibLdFlags, "libbar.llndk/android_vendor.VER_arm64_armv8-a_shared_"+tc.shouldLink+"/libbar.so")
			for _, ver := range tc.shouldNotLink {
				ensureNotContains(t, mylibLdFlags, "libbar.llndk/android_vendor.VER_arm64_armv8-a_shared_"+ver+"/libbar.so")
			}
	// Ensure that LLNDK dep is required
	ensureListContains(t, names(apexManifestRule.Args["requireNativeLibs"]), "libbar.so")

			mylibCFlags := ctx.ModuleForTests("mylib", "android_vendor.VER_arm64_armv8-a_static_myapex").Rule("cc").Args["cFlags"]
			ensureContains(t, mylibCFlags, "__LIBBAR_API__="+tc.shouldLink)
		})
	}
}

func TestApexWithSystemLibsStubs(t *testing.T) {
@@ -1270,6 +1239,10 @@ func TestQTargetApexUseStaticUnwinder(t *testing.T) {
	// note that platform variant is not.
	cm = ctx.ModuleForTests("libc++", "android_arm64_armv8-a_shared").Module().(*cc.Module)
	ensureListNotContains(t, cm.Properties.AndroidMkStaticLibs, "libgcc_stripped")

	libFlags := ctx.ModuleForTests("libx", "android_arm64_armv8-a_shared_myapex").Rule("ld").Args["libFlags"]
	ensureContains(t, libFlags, "android_arm64_armv8-a_shared_myapex/libc++.so")
	ensureContains(t, libFlags, "android_arm64_armv8-a_shared_29/libc.so") // min_sdk_version applied
}

func TestInvalidMinSdkVersion(t *testing.T) {
+2 −38
Original line number Diff line number Diff line
@@ -622,10 +622,6 @@ func (c *Module) SetBuildStubs() {
			c.Properties.PreventInstall = true
			return
		}
		if _, ok := c.linker.(*llndkStubDecorator); ok {
			c.Properties.HideFromMake = true
			return
		}
	}
	panic(fmt.Errorf("SetBuildStubs called on non-library module: %q", c.BaseModuleName()))
}
@@ -645,10 +641,6 @@ func (c *Module) SetStubsVersions(version string) {
			library.MutatedProperties.StubsVersion = version
			return
		}
		if llndk, ok := c.linker.(*llndkStubDecorator); ok {
			llndk.libraryDecorator.MutatedProperties.StubsVersion = version
			return
		}
	}
	panic(fmt.Errorf("SetStubsVersions called on non-library module: %q", c.BaseModuleName()))
}
@@ -658,9 +650,6 @@ func (c *Module) StubsVersion() string {
		if library, ok := c.linker.(*libraryDecorator); ok {
			return library.MutatedProperties.StubsVersion
		}
		if llndk, ok := c.linker.(*llndkStubDecorator); ok {
			return llndk.libraryDecorator.MutatedProperties.StubsVersion
		}
	}
	panic(fmt.Errorf("StubsVersion called on non-library module: %q", c.BaseModuleName()))
}
@@ -1862,7 +1851,7 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) {
	addSharedLibDependencies := func(depTag DependencyTag, name string, version string) {
		var variations []blueprint.Variation
		variations = append(variations, blueprint.Variation{Mutator: "link", Variation: "shared"})
		versionVariantAvail := !c.InRecovery() && !c.InRamdisk()
		versionVariantAvail := !ctx.useVndk() && !c.InRecovery() && !c.InRamdisk()
		if version != "" && versionVariantAvail {
			// Version is explicitly specified. i.e. libFoo#30
			variations = append(variations, blueprint.Variation{Mutator: "version", Variation: version})
@@ -2197,17 +2186,13 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
		if depTag == android.ProtoPluginDepTag {
			return
		}
		if depTag == llndkImplDep {
			return
		}

		if dep.Target().Os != ctx.Os() {
			ctx.ModuleErrorf("OS mismatch between %q and %q", ctx.ModuleName(), depName)
			return
		}
		if dep.Target().Arch.ArchType != ctx.Arch().ArchType {
			ctx.ModuleErrorf("Arch mismatch between %q(%v) and %q(%v)",
				ctx.ModuleName(), ctx.Arch().ArchType, depName, dep.Target().Arch.ArchType)
			ctx.ModuleErrorf("Arch mismatch between %q and %q", ctx.ModuleName(), depName)
			return
		}

@@ -2302,27 +2287,6 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
					return // stop processing this dep
				}
			}
			if c.UseVndk() {
				if m, ok := ccDep.(*Module); ok && m.IsStubs() { // LLNDK
					// by default, use current version of LLNDK
					versionToUse := ""
					versions := stubsVersionsFor(ctx.Config())[depName]
					if c.ApexName() != "" && len(versions) > 0 {
						// if this is for use_vendor apex && dep has stubsVersions
						// apply the same rule of apex sdk enforcement to choose right version
						var err error
						useLatest := c.ShouldSupportAndroid10() && !ctx.Config().UnbundledBuild()
						versionToUse, err = c.ChooseSdkVersion(versions, useLatest)
						if err != nil {
							ctx.OtherModuleErrorf(dep, err.Error())
							return
						}
					}
					if versionToUse != ccDep.StubsVersion() {
						return
					}
				}
			}

			depPaths.IncludeDirs = append(depPaths.IncludeDirs, ccDep.IncludeDirs()...)

+0 −28
Original line number Diff line number Diff line
@@ -2398,34 +2398,6 @@ func checkEquals(t *testing.T, message string, expected, actual interface{}) {
	}
}

func TestLlndkLibrary(t *testing.T) {
	ctx := testCc(t, `
	cc_library {
		name: "libllndk",
		stubs: { versions: ["1", "2"] },
	}
	llndk_library {
		name: "libllndk",
	}
	`)
	actual := ctx.ModuleVariantsForTests("libllndk.llndk")
	expected := []string{
		"android_vendor.VER_arm64_armv8-a_shared",
		"android_vendor.VER_arm64_armv8-a_shared_1",
		"android_vendor.VER_arm64_armv8-a_shared_2",
		"android_vendor.VER_arm_armv7-a-neon_shared",
		"android_vendor.VER_arm_armv7-a-neon_shared_1",
		"android_vendor.VER_arm_armv7-a-neon_shared_2",
	}
	checkEquals(t, "variants for llndk stubs", expected, actual)

	params := ctx.ModuleForTests("libllndk.llndk", "android_vendor.VER_arm_armv7-a-neon_shared").Description("generate stub")
	checkEquals(t, "use VNDK version for default stubs", "current", params.Args["apiLevel"])

	params = ctx.ModuleForTests("libllndk.llndk", "android_vendor.VER_arm_armv7-a-neon_shared_1").Description("generate stub")
	checkEquals(t, "override apiLevel for versioned stubs", "1", params.Args["apiLevel"])
}

func TestLlndkHeaders(t *testing.T) {
	ctx := testCc(t, `
	llndk_headers {
+12 −31
Original line number Diff line number Diff line
@@ -1486,19 +1486,6 @@ func checkVersions(ctx android.BaseModuleContext, versions []string) {
	}
}

func createVersionVariations(mctx android.BottomUpMutatorContext, versions []string) {
	// "" is for the non-stubs variant
	versions = append([]string{""}, versions...)

	modules := mctx.CreateVariations(versions...)
	for i, m := range modules {
		if versions[i] != "" {
			m.(LinkableInterface).SetBuildStubs()
			m.(LinkableInterface).SetStubsVersions(versions[i])
		}
	}
}

// Version mutator splits a module into the mandatory non-stubs variant
// (which is unnamed) and zero or more stubs variants.
func VersionMutator(mctx android.BottomUpMutatorContext) {
@@ -1510,30 +1497,24 @@ func VersionMutator(mctx android.BottomUpMutatorContext) {
				return
			}

			stubsVersionsLock.Lock()
			defer stubsVersionsLock.Unlock()
			// save the list of versions for later use
			stubsVersionsFor(mctx.Config())[mctx.ModuleName()] = versions

			createVersionVariations(mctx, versions)
			return
		}

		if c, ok := library.(*Module); ok && c.IsStubs() {
			stubsVersionsLock.Lock()
			defer stubsVersionsLock.Unlock()
			// For LLNDK llndk_library, we borrow vstubs.ersions from its implementation library.
			// Since llndk_library has dependency to its implementation library,
			// we can safely access stubsVersionsFor() with its baseModuleName.
			versions := stubsVersionsFor(mctx.Config())[c.BaseModuleName()]
			// save the list of versions for later use
			stubsVersionsFor(mctx.Config())[mctx.ModuleName()] = versions

			createVersionVariations(mctx, versions)
			return
		}
			// "" is for the non-stubs variant
			versions = append([]string{""}, versions...)

			modules := mctx.CreateVariations(versions...)
			for i, m := range modules {
				if versions[i] != "" {
					m.(LinkableInterface).SetBuildStubs()
					m.(LinkableInterface).SetStubsVersions(versions[i])
				}
			}
		} else {
			mctx.CreateVariations("")
		}
		return
	}
	if genrule, ok := mctx.Module().(*genrule.Module); ok {
+0 −13
Original line number Diff line number Diff line
@@ -19,14 +19,8 @@ import (
	"strings"

	"android/soong/android"

	"github.com/google/blueprint"
)

var llndkImplDep = struct {
	blueprint.DependencyTag
}{}

var (
	llndkLibrarySuffix = ".llndk"
	llndkHeadersSuffix = ".llndk"
@@ -87,9 +81,6 @@ func (stub *llndkStubDecorator) compile(ctx ModuleContext, flags Flags, deps Pat
		// For non-enforcing devices, vndkVer is empty. Use "current" in that case, too.
		vndkVer = "current"
	}
	if stub.stubsVersion() != "" {
		vndkVer = stub.stubsVersion()
	}
	objs, versionScript := compileStubLibrary(ctx, flags, String(stub.Properties.Symbol_file), vndkVer, "--llndk")
	stub.versionScriptPath = versionScript
	return objs
@@ -163,10 +154,6 @@ func (stub *llndkStubDecorator) link(ctx ModuleContext, flags Flags, deps PathDe
		stub.libraryDecorator.flagExporter.Properties.Export_include_dirs = []string{}
	}

	if stub.stubsVersion() != "" {
		stub.reexportFlags("-D" + versioningMacroName(ctx.baseModuleName()) + "=" + stub.stubsVersion())
	}

	return stub.libraryDecorator.link(ctx, flags, deps, objs)
}

Loading