Propagate transitive missing optional_uses_libs.
Bug: 331528424 Test: m --no-skip-soong-tests Ignore-AOSP-First: Depends on internal changes. Will cherry-pick once merged. (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:22154d8c3e82225c2d295f137ec37eebbef70235) Merged-In: Ied2821f11b6a5056ecf577e1e25765bc6dd212c0 Change-Id: Ied2821f11b6a5056ecf577e1e25765bc6dd212c0
This commit is contained in:
committed by
Cherrypicker Worker
parent
2665d27939
commit
b7bc8d9508
13
java/aar.go
13
java/aar.go
@@ -356,12 +356,13 @@ type aaptBuildActionOptions struct {
|
|||||||
forceNonFinalResourceIDs bool
|
forceNonFinalResourceIDs bool
|
||||||
extraLinkFlags []string
|
extraLinkFlags []string
|
||||||
aconfigTextFiles android.Paths
|
aconfigTextFiles android.Paths
|
||||||
|
usesLibrary *usesLibrary
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *aapt) buildActions(ctx android.ModuleContext, opts aaptBuildActionOptions) {
|
func (a *aapt) buildActions(ctx android.ModuleContext, opts aaptBuildActionOptions) {
|
||||||
|
|
||||||
staticResourcesNodesDepSet, sharedResourcesNodesDepSet, staticRRODirsDepSet, staticManifestsDepSet, sharedExportPackages, libFlags :=
|
staticResourcesNodesDepSet, sharedResourcesNodesDepSet, staticRRODirsDepSet, staticManifestsDepSet, sharedExportPackages, libFlags :=
|
||||||
aaptLibs(ctx, opts.sdkContext, opts.classLoaderContexts)
|
aaptLibs(ctx, opts.sdkContext, opts.classLoaderContexts, opts.usesLibrary)
|
||||||
|
|
||||||
// Exclude any libraries from the supplied list.
|
// Exclude any libraries from the supplied list.
|
||||||
opts.classLoaderContexts = opts.classLoaderContexts.ExcludeLibs(opts.excludedLibs)
|
opts.classLoaderContexts = opts.classLoaderContexts.ExcludeLibs(opts.excludedLibs)
|
||||||
@@ -703,7 +704,8 @@ func (t transitiveAarDeps) assets() android.Paths {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// aaptLibs collects libraries from dependencies and sdk_version and converts them into paths
|
// aaptLibs collects libraries from dependencies and sdk_version and converts them into paths
|
||||||
func aaptLibs(ctx android.ModuleContext, sdkContext android.SdkContext, classLoaderContexts dexpreopt.ClassLoaderContextMap) (
|
func aaptLibs(ctx android.ModuleContext, sdkContext android.SdkContext,
|
||||||
|
classLoaderContexts dexpreopt.ClassLoaderContextMap, usesLibrary *usesLibrary) (
|
||||||
staticResourcesNodes, sharedResourcesNodes *android.DepSet[*resourcesNode], staticRRODirs *android.DepSet[rroDir],
|
staticResourcesNodes, sharedResourcesNodes *android.DepSet[*resourcesNode], staticRRODirs *android.DepSet[rroDir],
|
||||||
staticManifests *android.DepSet[android.Path], sharedLibs android.Paths, flags []string) {
|
staticManifests *android.DepSet[android.Path], sharedLibs android.Paths, flags []string) {
|
||||||
|
|
||||||
@@ -753,6 +755,9 @@ func aaptLibs(ctx android.ModuleContext, sdkContext android.SdkContext, classLoa
|
|||||||
}
|
}
|
||||||
|
|
||||||
addCLCFromDep(ctx, module, classLoaderContexts)
|
addCLCFromDep(ctx, module, classLoaderContexts)
|
||||||
|
if usesLibrary != nil {
|
||||||
|
addMissingOptionalUsesLibsFromDep(ctx, module, usesLibrary)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
// AAPT2 overlays are in lowest to highest priority order, the topological order will be reversed later.
|
// AAPT2 overlays are in lowest to highest priority order, the topological order will be reversed later.
|
||||||
@@ -829,6 +834,7 @@ func (a *AndroidLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext)
|
|||||||
classLoaderContexts: a.classLoaderContexts,
|
classLoaderContexts: a.classLoaderContexts,
|
||||||
enforceDefaultTargetSdkVersion: false,
|
enforceDefaultTargetSdkVersion: false,
|
||||||
aconfigTextFiles: getAconfigFilePaths(ctx),
|
aconfigTextFiles: getAconfigFilePaths(ctx),
|
||||||
|
usesLibrary: &a.usesLibrary,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -1215,7 +1221,7 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||||||
linkDeps = append(linkDeps, a.manifest)
|
linkDeps = append(linkDeps, a.manifest)
|
||||||
|
|
||||||
staticResourcesNodesDepSet, sharedResourcesNodesDepSet, staticRRODirsDepSet, staticManifestsDepSet, sharedLibs, libFlags :=
|
staticResourcesNodesDepSet, sharedResourcesNodesDepSet, staticRRODirsDepSet, staticManifestsDepSet, sharedLibs, libFlags :=
|
||||||
aaptLibs(ctx, android.SdkContext(a), nil)
|
aaptLibs(ctx, android.SdkContext(a), nil, nil)
|
||||||
|
|
||||||
_ = sharedResourcesNodesDepSet
|
_ = sharedResourcesNodesDepSet
|
||||||
_ = staticRRODirsDepSet
|
_ = staticRRODirsDepSet
|
||||||
@@ -1287,6 +1293,7 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
addCLCFromDep(ctx, module, a.classLoaderContexts)
|
addCLCFromDep(ctx, module, a.classLoaderContexts)
|
||||||
|
addMissingOptionalUsesLibsFromDep(ctx, module, &a.usesLibrary)
|
||||||
})
|
})
|
||||||
|
|
||||||
var implementationJarFile android.OutputPath
|
var implementationJarFile android.OutputPath
|
||||||
|
@@ -531,6 +531,7 @@ func (a *AndroidApp) aaptBuildActions(ctx android.ModuleContext) {
|
|||||||
forceNonFinalResourceIDs: nonFinalIds,
|
forceNonFinalResourceIDs: nonFinalIds,
|
||||||
extraLinkFlags: aaptLinkFlags,
|
extraLinkFlags: aaptLinkFlags,
|
||||||
aconfigTextFiles: getAconfigFilePaths(ctx),
|
aconfigTextFiles: getAconfigFilePaths(ctx),
|
||||||
|
usesLibrary: &a.usesLibrary,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@@ -3244,7 +3244,10 @@ func TestUsesLibraries(t *testing.T) {
|
|||||||
name: "static-y",
|
name: "static-y",
|
||||||
srcs: ["a.java"],
|
srcs: ["a.java"],
|
||||||
uses_libs: ["runtime-required-y"],
|
uses_libs: ["runtime-required-y"],
|
||||||
optional_uses_libs: ["runtime-optional-y"],
|
optional_uses_libs: [
|
||||||
|
"runtime-optional-y",
|
||||||
|
"missing-lib-a",
|
||||||
|
],
|
||||||
sdk_version: "current",
|
sdk_version: "current",
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3341,7 +3344,8 @@ func TestUsesLibraries(t *testing.T) {
|
|||||||
`--optional-uses-library bar ` +
|
`--optional-uses-library bar ` +
|
||||||
`--optional-uses-library runtime-optional-x ` +
|
`--optional-uses-library runtime-optional-x ` +
|
||||||
`--optional-uses-library runtime-optional-y ` +
|
`--optional-uses-library runtime-optional-y ` +
|
||||||
`--missing-optional-uses-library missing-lib-b `
|
`--missing-optional-uses-library missing-lib-b ` +
|
||||||
|
`--missing-optional-uses-library missing-lib-a`
|
||||||
android.AssertStringDoesContain(t, "verify cmd args", verifyCmd, verifyArgs)
|
android.AssertStringDoesContain(t, "verify cmd args", verifyCmd, verifyArgs)
|
||||||
|
|
||||||
// Test that all libraries are verified for an APK (library order matters).
|
// Test that all libraries are verified for an APK (library order matters).
|
||||||
|
@@ -2389,6 +2389,7 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
addCLCFromDep(ctx, module, j.classLoaderContexts)
|
addCLCFromDep(ctx, module, j.classLoaderContexts)
|
||||||
|
addMissingOptionalUsesLibsFromDep(ctx, module, &j.usesLibrary)
|
||||||
})
|
})
|
||||||
|
|
||||||
return deps
|
return deps
|
||||||
|
16
java/java.go
16
java/java.go
@@ -3175,6 +3175,22 @@ func addCLCFromDep(ctx android.ModuleContext, depModule android.Module,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func addMissingOptionalUsesLibsFromDep(ctx android.ModuleContext, depModule android.Module,
|
||||||
|
usesLibrary *usesLibrary) {
|
||||||
|
|
||||||
|
dep, ok := depModule.(ModuleWithUsesLibrary)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, lib := range dep.UsesLibrary().usesLibraryProperties.Missing_optional_uses_libs {
|
||||||
|
if !android.InList(lib, usesLibrary.usesLibraryProperties.Missing_optional_uses_libs) {
|
||||||
|
usesLibrary.usesLibraryProperties.Missing_optional_uses_libs =
|
||||||
|
append(usesLibrary.usesLibraryProperties.Missing_optional_uses_libs, lib)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type JavaApiContributionImport struct {
|
type JavaApiContributionImport struct {
|
||||||
JavaApiContribution
|
JavaApiContribution
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user