Revert "Enforce min_sdk_version of apex(use_vendor:true)"
This reverts commit 380fc3615cf8c837e25dd7c480f8ce579ffd5d90.
Reason for revert: breaking one of internal targets
Change-Id: Ica96c44078e5a7f674410828af3ba851317775dd
Exempt-From-Owner-Approval: revert to fix build failure
diff --git a/apex/apex_test.go b/apex/apex_test.go
index 21d517f..babc27b 100644
--- a/apex/apex_test.go
+++ b/apex/apex_test.go
@@ -858,89 +858,58 @@
}
-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) {
- ctx, _ := testApex(t, `
- apex {
- name: "myapex",
- key: "myapex.key",
- use_vendor: true,
- native_shared_libs: ["mylib"],
- min_sdk_version: "`+tc.minSdkVersion+`",
- }
+func TestApexDependencyToLLNDK(t *testing.T) {
+ ctx, _ := testApex(t, `
+ apex {
+ name: "myapex",
+ key: "myapex.key",
+ use_vendor: true,
+ native_shared_libs: ["mylib"],
+ }
- apex_key {
- name: "myapex.key",
- public_key: "testkey.avbpubkey",
- private_key: "testkey.pem",
- }
+ apex_key {
+ name: "myapex.key",
+ public_key: "testkey.avbpubkey",
+ private_key: "testkey.pem",
+ }
- cc_library {
- name: "mylib",
- srcs: ["mylib.cpp"],
- vendor_available: true,
- shared_libs: ["libbar"],
- system_shared_libs: [],
- stl: "none",
- apex_available: [ "myapex" ],
- }
+ cc_library {
+ name: "mylib",
+ srcs: ["mylib.cpp"],
+ vendor_available: true,
+ shared_libs: ["libbar"],
+ system_shared_libs: [],
+ stl: "none",
+ apex_available: [ "myapex" ],
+ }
- cc_library {
- name: "libbar",
- srcs: ["mylib.cpp"],
- system_shared_libs: [],
- stl: "none",
- stubs: { versions: ["29","30"] },
- }
+ cc_library {
+ name: "libbar",
+ srcs: ["mylib.cpp"],
+ system_shared_libs: [],
+ stl: "none",
+ }
- llndk_library {
- name: "libbar",
- symbol_file: "",
- }
- `, func(fs map[string][]byte, config android.Config) {
- setUseVendorWhitelistForTest(config, []string{"myapex"})
- }, withUnbundledBuild)
+ llndk_library {
+ name: "libbar",
+ symbol_file: "",
+ }
+ `, func(fs map[string][]byte, config android.Config) {
+ setUseVendorWhitelistForTest(config, []string{"myapex"})
+ })
- // Ensure that LLNDK dep is not included
- ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{
- "lib64/mylib.so",
- })
+ apexRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexRule")
+ copyCmds := apexRule.Args["copy_commands"]
- // 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")
+ // Ensure that LLNDK dep is not included
+ ensureNotContains(t, copyCmds, "image.apex/lib64/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")
- }
+ apexManifestRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("apexManifestRule")
+ ensureListEmpty(t, names(apexManifestRule.Args["provideNativeLibs"]))
- mylibCFlags := ctx.ModuleForTests("mylib", "android_vendor.VER_arm64_armv8-a_static_myapex").Rule("cc").Args["cFlags"]
- ensureContains(t, mylibCFlags, "__LIBBAR_API__="+tc.shouldLink)
- })
- }
+ // Ensure that LLNDK dep is required
+ ensureListContains(t, names(apexManifestRule.Args["requireNativeLibs"]), "libbar.so")
+
}
func TestApexWithSystemLibsStubs(t *testing.T) {
@@ -1270,6 +1239,10 @@
// 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) {
diff --git a/cc/cc.go b/cc/cc.go
index 2009d91..61ae10a 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -622,10 +622,6 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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()...)
diff --git a/cc/cc_test.go b/cc/cc_test.go
index 67eb248..9a9678f 100644
--- a/cc/cc_test.go
+++ b/cc/cc_test.go
@@ -2398,34 +2398,6 @@
}
}
-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 {
diff --git a/cc/library.go b/cc/library.go
index 7d3bdc2..335b18e 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -1486,19 +1486,6 @@
}
}
-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 @@
return
}
+ // save the list of versions for later use
stubsVersionsLock.Lock()
defer stubsVersionsLock.Unlock()
- // 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("")
}
-
- 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
- }
-
- mctx.CreateVariations("")
return
}
if genrule, ok := mctx.Module().(*genrule.Module); ok {
diff --git a/cc/llndk_library.go b/cc/llndk_library.go
index 09050aa..3dee692 100644
--- a/cc/llndk_library.go
+++ b/cc/llndk_library.go
@@ -19,14 +19,8 @@
"strings"
"android/soong/android"
-
- "github.com/google/blueprint"
)
-var llndkImplDep = struct {
- blueprint.DependencyTag
-}{}
-
var (
llndkLibrarySuffix = ".llndk"
llndkHeadersSuffix = ".llndk"
@@ -87,9 +81,6 @@
// 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 @@
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)
}
diff --git a/cc/vndk.go b/cc/vndk.go
index 4888dcf..e02e7b5 100644
--- a/cc/vndk.go
+++ b/cc/vndk.go
@@ -297,9 +297,6 @@
if !Bool(lib.Properties.Vendor_available) {
vndkPrivateLibraries(mctx.Config())[name] = filename
}
- if mctx.OtherModuleExists(name) {
- mctx.AddFarVariationDependencies(m.Target().Variations(), llndkImplDep, name)
- }
}
func processVndkLibrary(mctx android.BottomUpMutatorContext, m *Module) {