Revert "Build notice files from license metadata."
This reverts commit 43c2dcaef609c4a268bfab6c95ed924af4ead6b1.
Reason for revert: suspect build break
Bug: 227682036
Test: TARGET_BUILD_VARIANT=userdebug UNBUNDLED_BUILD_SDKS_FROM_SOURCE=true vendor/google/build/mainline_modules_bundles.sh -j97
Change-Id: Ibfb8b4fefc264f52f32ba661c269a9cd625d800a
diff --git a/java/app.go b/java/app.go
index 5b1daa4..8728df6 100755
--- a/java/app.go
+++ b/java/app.go
@@ -19,6 +19,7 @@
import (
"path/filepath"
+ "sort"
"strings"
"github.com/google/blueprint"
@@ -163,6 +164,8 @@
additionalAaptFlags []string
+ noticeOutputs android.NoticeOutputs
+
overriddenManifestPackageName string
android.ApexBundleDepsInfo
@@ -520,6 +523,53 @@
return jniSymbols
}
+func (a *AndroidApp) noticeBuildActions(ctx android.ModuleContext) {
+ // Collect NOTICE files from all dependencies.
+ seenModules := make(map[android.Module]bool)
+ noticePathSet := make(map[android.Path]bool)
+
+ ctx.WalkDeps(func(child android.Module, parent android.Module) bool {
+ // Have we already seen this?
+ if _, ok := seenModules[child]; ok {
+ return false
+ }
+ seenModules[child] = true
+
+ // Skip host modules.
+ if child.Target().Os.Class == android.Host {
+ return false
+ }
+
+ paths := child.(android.Module).NoticeFiles()
+ if len(paths) > 0 {
+ for _, path := range paths {
+ noticePathSet[path] = true
+ }
+ }
+ return true
+ })
+
+ // If the app has one, add it too.
+ if len(a.NoticeFiles()) > 0 {
+ for _, path := range a.NoticeFiles() {
+ noticePathSet[path] = true
+ }
+ }
+
+ if len(noticePathSet) == 0 {
+ return
+ }
+ var noticePaths []android.Path
+ for path := range noticePathSet {
+ noticePaths = append(noticePaths, path)
+ }
+ sort.Slice(noticePaths, func(i, j int) bool {
+ return noticePaths[i].String() < noticePaths[j].String()
+ })
+
+ a.noticeOutputs = android.BuildNoticeOutput(ctx, a.installDir, a.installApkName+".apk", noticePaths)
+}
+
// Reads and prepends a main cert from the default cert dir if it hasn't been set already, i.e. it
// isn't a cert module reference. Also checks and enforces system cert restriction if applicable.
func processMainCert(m android.ModuleBase, certPropValue string, certificates []Certificate, ctx android.ModuleContext) []Certificate {
@@ -586,10 +636,9 @@
}
a.onDeviceDir = android.InstallPathToOnDevicePath(ctx, a.installDir)
- noticeFile := android.PathForModuleOut(ctx, "NOTICE", "NOTICE.html.gz")
- android.BuildNoticeHtmlOutputFromLicenseMetadata(ctx, noticeFile)
+ a.noticeBuildActions(ctx)
if Bool(a.appProperties.Embed_notices) || ctx.Config().IsEnvTrue("ALWAYS_EMBED_NOTICES") {
- a.aapt.noticeFile = android.OptionalPathForPath(noticeFile)
+ a.aapt.noticeFile = a.noticeOutputs.HtmlGzOutput
}
a.classLoaderContexts = a.usesLibrary.classLoaderContextForUsesLibDeps(ctx)