From 2a2e0db2a2ebc75d5f8dea674c84c2019530a543 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Fri, 21 Feb 2020 16:55:46 -0800 Subject: [PATCH] Add an order-only dependency on the build number file Remote execution and other tools can be confused by references to build_number.txt without a dependency. Add an order-only dependency, which maintains the current behavior. Test: BUILD_NUMBER=1 && m aapt && aapt version # shows 1 BUILD_NUMBER=2 && m aapt && aapt version # shows 1 rm out/soong/.intermediates/frameworks/base/tools/aapt/aapt/linux_glibc_x86_64/aapt BUILD_NUMBER=2 && m aapt && aapt version # shows 2 Change-Id: Icfa98d6840b1dc2e273ba29c33011635d1cf93b1 --- android/config.go | 4 ++-- android/variable.go | 7 +++---- cc/linker.go | 8 +++++--- java/droiddoc.go | 3 ++- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/android/config.go b/android/config.go index 32e32ae99..b2bda2a44 100644 --- a/android/config.go +++ b/android/config.go @@ -570,8 +570,8 @@ func (c *config) BuildId() string { return String(c.productVariables.BuildId) } -func (c *config) BuildNumberFromFile() string { - return String(c.productVariables.BuildNumberFromFile) +func (c *config) BuildNumberFile(ctx PathContext) Path { + return PathForOutput(ctx, String(c.productVariables.BuildNumberFile)) } // DeviceName returns the name of the current device target diff --git a/android/variable.go b/android/variable.go index 9cbe624e4..25c94bccf 100644 --- a/android/variable.go +++ b/android/variable.go @@ -140,9 +140,8 @@ type productVariables struct { // Suffix to add to generated Makefiles Make_suffix *string `json:",omitempty"` - BuildId *string `json:",omitempty"` - BuildNumberFromFile *string `json:",omitempty"` - DateFromFile *string `json:",omitempty"` + BuildId *string `json:",omitempty"` + BuildNumberFile *string `json:",omitempty"` Platform_version_name *string `json:",omitempty"` Platform_sdk_version *int `json:",omitempty"` @@ -345,7 +344,7 @@ func stringPtr(v string) *string { func (v *productVariables) SetDefaultConfig() { *v = productVariables{ - BuildNumberFromFile: stringPtr("123456789"), + BuildNumberFile: stringPtr("build_number.txt"), Platform_version_name: stringPtr("Q"), Platform_sdk_version: intPtr(28), diff --git a/cc/linker.go b/cc/linker.go index af4cbf333..a7b621a91 100644 --- a/cc/linker.go +++ b/cc/linker.go @@ -501,19 +501,21 @@ func init() { var injectVersionSymbol = pctx.AndroidStaticRule("injectVersionSymbol", blueprint.RuleParams{ Command: "$symbolInjectCmd -i $in -o $out -s soong_build_number " + - "-from 'SOONG BUILD NUMBER PLACEHOLDER' -v $buildNumberFromFile", + "-from 'SOONG BUILD NUMBER PLACEHOLDER' -v $$(cat $buildNumberFile)", CommandDeps: []string{"$symbolInjectCmd"}, }, - "buildNumberFromFile") + "buildNumberFile") func (linker *baseLinker) injectVersionSymbol(ctx ModuleContext, in android.Path, out android.WritablePath) { + buildNumberFile := ctx.Config().BuildNumberFile(ctx) ctx.Build(pctx, android.BuildParams{ Rule: injectVersionSymbol, Description: "inject version symbol", Input: in, Output: out, + OrderOnly: android.Paths{buildNumberFile}, Args: map[string]string{ - "buildNumberFromFile": proptools.NinjaEscape(ctx.Config().BuildNumberFromFile()), + "buildNumberFile": buildNumberFile.String(), }, }) } diff --git a/java/droiddoc.go b/java/droiddoc.go index fd4b90df3..543749983 100644 --- a/java/droiddoc.go +++ b/java/droiddoc.go @@ -773,6 +773,7 @@ func (d *Droiddoc) DepsMutator(ctx android.BottomUpMutatorContext) { } func (d *Droiddoc) doclavaDocsFlags(ctx android.ModuleContext, cmd *android.RuleBuilderCommand, docletPath classpath) { + buildNumberFile := ctx.Config().BuildNumberFile(ctx) // Droiddoc always gets "-source 1.8" because it doesn't support 1.9 sources. For modules with 1.9 // sources, droiddoc will get sources produced by metalava which will have already stripped out the // 1.9 language features. @@ -782,7 +783,7 @@ func (d *Droiddoc) doclavaDocsFlags(ctx android.ModuleContext, cmd *android.Rule Flag("-XDignore.symbol.file"). FlagWithArg("-doclet ", "com.google.doclava.Doclava"). FlagWithInputList("-docletpath ", docletPath.Paths(), ":"). - FlagWithArg("-hdf page.build ", ctx.Config().BuildId()+"-"+ctx.Config().BuildNumberFromFile()). + FlagWithArg("-hdf page.build ", ctx.Config().BuildId()+"-$(cat "+buildNumberFile.String()+")").OrderOnly(buildNumberFile). FlagWithArg("-hdf page.now ", `"$(date -d @$(cat `+ctx.Config().Getenv("BUILD_DATETIME_FILE")+`) "+%d %b %Y %k:%M")" `) if String(d.properties.Custom_template) == "" {