Merge changes Iefcf4fbe,I450d4769,I1ffc7e7b am: 2c79c871d9 am: 3757864b5f

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1354643

Change-Id: I35b96bffc99f9066982e6ea99332fb84c8f7a840
This commit is contained in:
Treehugger Robot
2020-07-09 12:56:24 +00:00
committed by Automerger Merge Worker
5 changed files with 89 additions and 11 deletions

View File

@@ -1852,9 +1852,15 @@ func (a *apexBundle) WalkPayloadDeps(ctx android.ModuleContext, do android.Paylo
return false return false
} }
dt := ctx.OtherModuleDependencyTag(child)
if _, ok := dt.(android.ExcludeFromApexContentsTag); ok {
return false
}
// Check for the direct dependencies that contribute to the payload // Check for the direct dependencies that contribute to the payload
if dt, ok := ctx.OtherModuleDependencyTag(child).(dependencyTag); ok { if adt, ok := dt.(dependencyTag); ok {
if dt.payload { if adt.payload {
return do(ctx, parent, am, false /* externalDep */) return do(ctx, parent, am, false /* externalDep */)
} }
// As soon as the dependency graph crosses the APEX boundary, don't go further. // As soon as the dependency graph crosses the APEX boundary, don't go further.

View File

@@ -5928,6 +5928,41 @@ func TestAllowedFiles(t *testing.T) {
} }
} }
func TestNonPreferredPrebuiltDependency(t *testing.T) {
_, _ = testApex(t, `
apex {
name: "myapex",
key: "myapex.key",
native_shared_libs: ["mylib"],
}
apex_key {
name: "myapex.key",
public_key: "testkey.avbpubkey",
private_key: "testkey.pem",
}
cc_library {
name: "mylib",
srcs: ["mylib.cpp"],
stubs: {
versions: ["10000"],
},
apex_available: ["myapex"],
}
cc_prebuilt_library_shared {
name: "mylib",
prefer: false,
srcs: ["prebuilt.so"],
stubs: {
versions: ["10000"],
},
apex_available: ["myapex"],
}
`)
}
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
run := func() int { run := func() int {
setUp() setUp()

View File

@@ -69,6 +69,28 @@ func TestSdkIsCompileMultilibBoth(t *testing.T) {
ensureListContains(t, inputs, arm64Output.String()) ensureListContains(t, inputs, arm64Output.String())
} }
func TestSdkCompileMultilibOverride(t *testing.T) {
result := testSdkWithCc(t, `
sdk {
name: "mysdk",
native_shared_libs: ["sdkmember"],
compile_multilib: "64",
}
cc_library_shared {
name: "sdkmember",
srcs: ["Test.cpp"],
stl: "none",
compile_multilib: "64",
}
`)
result.CheckSnapshot("mysdk", "",
checkAllCopyRules(`
.intermediates/sdkmember/android_arm64_armv8-a_shared/sdkmember.so -> arm64/lib/sdkmember.so
`))
}
func TestBasicSdkWithCc(t *testing.T) { func TestBasicSdkWithCc(t *testing.T) {
result := testSdkWithCc(t, ` result := testSdkWithCc(t, `
sdk { sdk {
@@ -79,6 +101,8 @@ func TestBasicSdkWithCc(t *testing.T) {
cc_library_shared { cc_library_shared {
name: "sdkmember", name: "sdkmember",
system_shared_libs: [], system_shared_libs: [],
stl: "none",
apex_available: ["mysdkapex"],
} }
sdk_snapshot { sdk_snapshot {
@@ -152,6 +176,13 @@ func TestBasicSdkWithCc(t *testing.T) {
key: "myapex.key", key: "myapex.key",
certificate: ":myapex.cert", certificate: ":myapex.cert",
} }
apex {
name: "mysdkapex",
native_shared_libs: ["sdkmember"],
key: "myapex.key",
certificate: ":myapex.cert",
}
`) `)
sdkMemberV1 := result.ModuleForTests("sdkmember_mysdk_1", "android_arm64_armv8-a_shared_myapex").Rule("toc").Output sdkMemberV1 := result.ModuleForTests("sdkmember_mysdk_1", "android_arm64_armv8-a_shared_myapex").Rule("toc").Output

View File

@@ -218,7 +218,7 @@ func newSdkModule(moduleExports bool) *sdk {
Compile_multilib *string Compile_multilib *string
} }
p := &props{Compile_multilib: proptools.StringPtr("both")} p := &props{Compile_multilib: proptools.StringPtr("both")}
ctx.AppendProperties(p) ctx.PrependProperties(p)
}) })
return s return s
} }
@@ -330,6 +330,11 @@ type dependencyTag struct {
blueprint.BaseDependencyTag blueprint.BaseDependencyTag
} }
// Mark this tag so dependencies that use it are excluded from APEX contents.
func (t dependencyTag) ExcludeFromApexContents() {}
var _ android.ExcludeFromApexContentsTag = dependencyTag{}
// For dependencies from an in-development version of an SDK member to frozen versions of the same member // For dependencies from an in-development version of an SDK member to frozen versions of the same member
// e.g. libfoo -> libfoo.mysdk.11 and libfoo.mysdk.12 // e.g. libfoo -> libfoo.mysdk.11 and libfoo.mysdk.12
type sdkMemberVersionedDepTag struct { type sdkMemberVersionedDepTag struct {

View File

@@ -44,14 +44,15 @@ func testSdkContext(bp string, fs map[string][]byte) (*android.TestContext, andr
` + cc.GatherRequiredDepsForTest(android.Android, android.Windows) ` + cc.GatherRequiredDepsForTest(android.Android, android.Windows)
mockFS := map[string][]byte{ mockFS := map[string][]byte{
"build/make/target/product/security": nil, "build/make/target/product/security": nil,
"apex_manifest.json": nil, "apex_manifest.json": nil,
"system/sepolicy/apex/myapex-file_contexts": nil, "system/sepolicy/apex/myapex-file_contexts": nil,
"system/sepolicy/apex/myapex2-file_contexts": nil, "system/sepolicy/apex/myapex2-file_contexts": nil,
"myapex.avbpubkey": nil, "system/sepolicy/apex/mysdkapex-file_contexts": nil,
"myapex.pem": nil, "myapex.avbpubkey": nil,
"myapex.x509.pem": nil, "myapex.pem": nil,
"myapex.pk8": nil, "myapex.x509.pem": nil,
"myapex.pk8": nil,
} }
cc.GatherRequiredFilesForTest(mockFS) cc.GatherRequiredFilesForTest(mockFS)