From 3bb934f0ade1463b38f270f5ecc0980217854579 Mon Sep 17 00:00:00 2001 From: Chih-Hung Hsieh Date: Mon, 25 Oct 2021 11:09:19 -0700 Subject: [PATCH] Do not add .tidy files as RBE link inputs * RBE adds implicit dependent files as inputs and creates too long commands. * Adds .tidy files as validation paths. * Change type of tidyFiles to WritablePaths. Bug: 203577539 Test: lunch aosp_cf_arm64_phone-userdebug; USE_RBE=true WITH_TIDY=1 make Test: USE_RBE=true WITH_TIDY=1 mm in external/skia Change-Id: I5fc9d6f8c9c58abcd3721ca9fbae1bc785e4e609 --- android/module.go | 12 ++++++------ cc/binary.go | 2 +- cc/builder.go | 11 ++++++----- cc/library.go | 5 ++--- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/android/module.go b/android/module.go index 02706eccb..d98998da5 100644 --- a/android/module.go +++ b/android/module.go @@ -409,7 +409,7 @@ type ModuleContext interface { PackageFile(installPath InstallPath, name string, srcPath Path) PackagingSpec CheckbuildFile(srcPath Path) - TidyFile(srcPath Path) + TidyFile(srcPath WritablePath) InstallInData() bool InstallInTestcases() bool @@ -1190,7 +1190,7 @@ type ModuleBase struct { installFiles InstallPaths installFilesDepSet *installPathsDepSet checkbuildFiles Paths - tidyFiles Paths + tidyFiles WritablePaths packagingSpecs []PackagingSpec packagingSpecsDepSet *packagingSpecsDepSet noticeFiles Paths @@ -1764,7 +1764,7 @@ func (m *ModuleBase) VintfFragments() Paths { func (m *ModuleBase) generateModuleTarget(ctx ModuleContext) { var allInstalledFiles InstallPaths var allCheckbuildFiles Paths - var allTidyFiles Paths + var allTidyFiles WritablePaths ctx.VisitAllModuleVariants(func(module Module) { a := module.base() allInstalledFiles = append(allInstalledFiles, a.installFiles...) @@ -1795,7 +1795,7 @@ func (m *ModuleBase) generateModuleTarget(ctx ModuleContext) { if len(allTidyFiles) > 0 { name := namespacePrefix + ctx.ModuleName() + "-tidy" - ctx.Phony(name, allTidyFiles...) + ctx.Phony(name, allTidyFiles.Paths()...) m.tidyTarget = PathForPhony(ctx, name) deps = append(deps, m.tidyTarget) } @@ -2207,7 +2207,7 @@ type moduleContext struct { packagingSpecs []PackagingSpec installFiles InstallPaths checkbuildFiles Paths - tidyFiles Paths + tidyFiles WritablePaths module Module phonies map[string]Paths @@ -2942,7 +2942,7 @@ func (m *moduleContext) CheckbuildFile(srcPath Path) { m.checkbuildFiles = append(m.checkbuildFiles, srcPath) } -func (m *moduleContext) TidyFile(srcPath Path) { +func (m *moduleContext) TidyFile(srcPath WritablePath) { m.tidyFiles = append(m.tidyFiles, srcPath) } diff --git a/cc/binary.go b/cc/binary.go index 4d1301bb4..47e520dd7 100644 --- a/cc/binary.go +++ b/cc/binary.go @@ -413,7 +413,7 @@ func (binary *binaryDecorator) link(ctx ModuleContext, linkerDeps = append(linkerDeps, deps.LateSharedLibsDeps...) } - linkerDeps = append(linkerDeps, objs.tidyFiles...) + validations = append(validations, objs.tidyFiles...) linkerDeps = append(linkerDeps, flags.LdFlagsDeps...) // Register link action. diff --git a/cc/builder.go b/cc/builder.go index b494f7bab..a56489099 100644 --- a/cc/builder.go +++ b/cc/builder.go @@ -421,7 +421,7 @@ type StripFlags struct { // Objects is a collection of file paths corresponding to outputs for C++ related build statements. type Objects struct { objFiles android.Paths - tidyFiles android.Paths + tidyFiles android.WritablePaths coverageFiles android.Paths sAbiDumpFiles android.Paths kytheFiles android.Paths @@ -430,7 +430,7 @@ type Objects struct { func (a Objects) Copy() Objects { return Objects{ objFiles: append(android.Paths{}, a.objFiles...), - tidyFiles: append(android.Paths{}, a.tidyFiles...), + tidyFiles: append(android.WritablePaths{}, a.tidyFiles...), coverageFiles: append(android.Paths{}, a.coverageFiles...), sAbiDumpFiles: append(android.Paths{}, a.sAbiDumpFiles...), kytheFiles: append(android.Paths{}, a.kytheFiles...), @@ -459,11 +459,11 @@ func transformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles, no // Source files are one-to-one with tidy, coverage, or kythe files, if enabled. objFiles := make(android.Paths, len(srcFiles)) - var tidyFiles android.Paths + var tidyFiles android.WritablePaths noTidySrcsMap := make(map[android.Path]bool) var tidyVars string if flags.tidy { - tidyFiles = make(android.Paths, 0, len(srcFiles)) + tidyFiles = make(android.WritablePaths, 0, len(srcFiles)) for _, path := range noTidySrcs { noTidySrcsMap[path] = true } @@ -741,7 +741,7 @@ func transformSourceToObj(ctx android.ModuleContext, subdir string, srcFiles, no // Generate a rule for compiling multiple .o files to a static library (.a) func transformObjToStaticLib(ctx android.ModuleContext, objFiles android.Paths, wholeStaticLibs android.Paths, - flags builderFlags, outputFile android.ModuleOutPath, deps android.Paths) { + flags builderFlags, outputFile android.ModuleOutPath, deps android.Paths, validations android.WritablePaths) { arCmd := "${config.ClangBin}/llvm-ar" arFlags := "" @@ -756,6 +756,7 @@ func transformObjToStaticLib(ctx android.ModuleContext, Output: outputFile, Inputs: objFiles, Implicits: deps, + Validations: validations.Paths(), Args: map[string]string{ "arFlags": "crsPD" + arFlags, "arCmd": arCmd, diff --git a/cc/library.go b/cc/library.go index d63acfbf7..bb6c96a76 100644 --- a/cc/library.go +++ b/cc/library.go @@ -1288,7 +1288,7 @@ func (library *libraryDecorator) linkStatic(ctx ModuleContext, } } - transformObjToStaticLib(ctx, library.objects.objFiles, deps.WholeStaticLibsFromPrebuilts, builderFlags, outputFile, objs.tidyFiles) + transformObjToStaticLib(ctx, library.objects.objFiles, deps.WholeStaticLibsFromPrebuilts, builderFlags, outputFile, nil, objs.tidyFiles) library.coverageOutputFile = transformCoverageFilesToZip(ctx, library.objects, ctx.ModuleName()) @@ -1417,10 +1417,9 @@ func (library *libraryDecorator) linkShared(ctx ModuleContext, linkerDeps = append(linkerDeps, deps.EarlySharedLibsDeps...) linkerDeps = append(linkerDeps, deps.SharedLibsDeps...) linkerDeps = append(linkerDeps, deps.LateSharedLibsDeps...) - linkerDeps = append(linkerDeps, objs.tidyFiles...) transformObjToDynamicBinary(ctx, objs.objFiles, sharedLibs, deps.StaticLibs, deps.LateStaticLibs, deps.WholeStaticLibs, - linkerDeps, deps.CrtBegin, deps.CrtEnd, false, builderFlags, outputFile, implicitOutputs, nil) + linkerDeps, deps.CrtBegin, deps.CrtEnd, false, builderFlags, outputFile, implicitOutputs, objs.tidyFiles) objs.coverageFiles = append(objs.coverageFiles, deps.StaticLibObjs.coverageFiles...) objs.coverageFiles = append(objs.coverageFiles, deps.WholeStaticLibObjs.coverageFiles...)