From c6ec9fb849aa8d459c9571d2262bf8667a90c148 Mon Sep 17 00:00:00 2001 From: Bob Badour Date: Wed, 8 Jun 2022 15:59:35 -0700 Subject: [PATCH] Fix strip_prefix flags to strip install paths. Bug: 235331488 Test: m droid dist Change-Id: I3cd2af5d90e46a4c983728bc9b2d941d6ffda229 --- android/gen_notice.go | 7 ++++++- android/notices.go | 29 ++++++++++++++++++++--------- android_sdk/sdk_repo_host.go | 7 ++++++- apex/builder.go | 7 ++++++- java/app.go | 8 +++++++- 5 files changed, 45 insertions(+), 13 deletions(-) diff --git a/android/gen_notice.go b/android/gen_notice.go index fda91ac94..e2b839f69 100644 --- a/android/gen_notice.go +++ b/android/gen_notice.go @@ -67,7 +67,12 @@ func (s *genNoticeBuildRules) GenerateBuildActions(ctx SingletonContext) { if ctx.Failed() { return } - out(ctx, gm.output, ctx.ModuleName(gm), proptools.StringDefault(gm.properties.ArtifactName, defaultName), "", modules...) + out(ctx, gm.output, ctx.ModuleName(gm), + proptools.StringDefault(gm.properties.ArtifactName, defaultName), + []string{ + ctx.Config().OutDir() + "/", + ctx.Config().SoongOutDir() + "/", + }, modules...) }) } diff --git a/android/notices.go b/android/notices.go index 562a156e2..b9c1682e3 100644 --- a/android/notices.go +++ b/android/notices.go @@ -47,7 +47,9 @@ func modulesLicenseMetadata(ctx BuilderContext, modules ...Module) Paths { } // buildNoticeOutputFromLicenseMetadata writes out a notice file. -func buildNoticeOutputFromLicenseMetadata(ctx BuilderContext, tool, ruleName string, outputFile WritablePath, libraryName, stripPrefix string, modules ...Module) { +func buildNoticeOutputFromLicenseMetadata( + ctx BuilderContext, tool, ruleName string, outputFile WritablePath, + libraryName string, stripPrefix []string, modules ...Module) { depsFile := outputFile.ReplaceExtension(ctx, strings.TrimPrefix(outputFile.Ext()+".d", ".")) rule := NewRuleBuilder(pctx, ctx) if len(modules) == 0 { @@ -64,8 +66,8 @@ func buildNoticeOutputFromLicenseMetadata(ctx BuilderContext, tool, ruleName str BuiltTool(tool). FlagWithOutput("-o ", outputFile). FlagWithDepFile("-d ", depsFile) - if stripPrefix != "" { - cmd = cmd.FlagWithArg("--strip_prefix ", stripPrefix) + if len(stripPrefix) > 0 { + cmd = cmd.FlagForEachArg("--strip_prefix ", stripPrefix) } outputs := modulesOutputDirs(ctx, modules...) if len(outputs) > 0 { @@ -81,20 +83,29 @@ func buildNoticeOutputFromLicenseMetadata(ctx BuilderContext, tool, ruleName str // BuildNoticeTextOutputFromLicenseMetadata writes out a notice text file based // on the license metadata files for the input `modules` defaulting to the // current context module if none given. -func BuildNoticeTextOutputFromLicenseMetadata(ctx BuilderContext, outputFile WritablePath, ruleName, libraryName, stripPrefix string, modules ...Module) { - buildNoticeOutputFromLicenseMetadata(ctx, "textnotice", "text_notice_"+ruleName, outputFile, libraryName, stripPrefix, modules...) +func BuildNoticeTextOutputFromLicenseMetadata( + ctx BuilderContext, outputFile WritablePath, ruleName, libraryName string, + stripPrefix []string, modules ...Module) { + buildNoticeOutputFromLicenseMetadata(ctx, "textnotice", "text_notice_"+ruleName, + outputFile, libraryName, stripPrefix, modules...) } // BuildNoticeHtmlOutputFromLicenseMetadata writes out a notice text file based // on the license metadata files for the input `modules` defaulting to the // current context module if none given. -func BuildNoticeHtmlOutputFromLicenseMetadata(ctx BuilderContext, outputFile WritablePath, ruleName, libraryName, stripPrefix string, modules ...Module) { - buildNoticeOutputFromLicenseMetadata(ctx, "htmlnotice", "html_notice_"+ruleName, outputFile, libraryName, stripPrefix, modules...) +func BuildNoticeHtmlOutputFromLicenseMetadata( + ctx BuilderContext, outputFile WritablePath, ruleName, libraryName string, + stripPrefix []string, modules ...Module) { + buildNoticeOutputFromLicenseMetadata(ctx, "htmlnotice", "html_notice_"+ruleName, + outputFile, libraryName, stripPrefix, modules...) } // BuildNoticeXmlOutputFromLicenseMetadata writes out a notice text file based // on the license metadata files for the input `modules` defaulting to the // current context module if none given. -func BuildNoticeXmlOutputFromLicenseMetadata(ctx BuilderContext, outputFile WritablePath, ruleName, libraryName, stripPrefix string, modules ...Module) { - buildNoticeOutputFromLicenseMetadata(ctx, "xmlnotice", "xml_notice_"+ruleName, outputFile, libraryName, stripPrefix, modules...) +func BuildNoticeXmlOutputFromLicenseMetadata( + ctx BuilderContext, outputFile WritablePath, ruleName, libraryName string, + stripPrefix []string, modules ...Module) { + buildNoticeOutputFromLicenseMetadata(ctx, "xmlnotice", "xml_notice_"+ruleName, + outputFile, libraryName, stripPrefix, modules...) } diff --git a/android_sdk/sdk_repo_host.go b/android_sdk/sdk_repo_host.go index 9519be047..280dae89c 100644 --- a/android_sdk/sdk_repo_host.go +++ b/android_sdk/sdk_repo_host.go @@ -124,7 +124,12 @@ func (s *sdkRepoHost) GenerateAndroidBuildActions(ctx android.ModuleContext) { s.CopySpecsToDir(ctx, builder, packageSpecs, dir) noticeFile := android.PathForModuleOut(ctx, "NOTICES.txt") - android.BuildNoticeTextOutputFromLicenseMetadata(ctx, noticeFile, "", "", outputZipFile.String()) + android.BuildNoticeTextOutputFromLicenseMetadata( + ctx, noticeFile, "", "", + []string{ + android.PathForModuleInstall(ctx, "sdk-repo").String() + "/", + outputZipFile.String(), + }) builder.Command().Text("cp"). Input(noticeFile). Text(filepath.Join(dir.String(), "NOTICE.txt")) diff --git a/apex/builder.go b/apex/builder.go index 91193637c..a21fcb899 100644 --- a/apex/builder.go +++ b/apex/builder.go @@ -618,7 +618,12 @@ func (a *apexBundle) buildUnflattenedApex(ctx android.ModuleContext) { // Create a NOTICE file, and embed it as an asset file in the APEX. a.htmlGzNotice = android.PathForModuleOut(ctx, "NOTICE.html.gz") - android.BuildNoticeHtmlOutputFromLicenseMetadata(ctx, a.htmlGzNotice, "", "", unsignedOutputFile.String()) + android.BuildNoticeHtmlOutputFromLicenseMetadata( + ctx, a.htmlGzNotice, "", "", + []string{ + android.PathForModuleInstall(ctx).String() + "/", + android.PathForModuleInPartitionInstall(ctx, "apex").String() + "/", + }) noticeAssetPath := android.PathForModuleOut(ctx, "NOTICE", "NOTICE.html.gz") builder := android.NewRuleBuilder(pctx, ctx) builder.Command().Text("cp"). diff --git a/java/app.go b/java/app.go index c61c4e5d0..c5d88e978 100755 --- a/java/app.go +++ b/java/app.go @@ -656,7 +656,13 @@ func (a *AndroidApp) generateAndroidBuildActions(ctx android.ModuleContext) { if Bool(a.appProperties.Embed_notices) || ctx.Config().IsEnvTrue("ALWAYS_EMBED_NOTICES") { noticeFile := android.PathForModuleOut(ctx, "NOTICE.html.gz") - android.BuildNoticeHtmlOutputFromLicenseMetadata(ctx, noticeFile, "", "", a.outputFile.String()) + android.BuildNoticeHtmlOutputFromLicenseMetadata( + ctx, noticeFile, "", "", + []string{ + a.installDir.String() + "/", + android.PathForModuleInstall(ctx).String() + "/", + a.outputFile.String(), + }) noticeAssetPath := android.PathForModuleOut(ctx, "NOTICE", "NOTICE.html.gz") builder := android.NewRuleBuilder(pctx, ctx) builder.Command().Text("cp").