diff options
| author | 2020-03-31 22:14:52 -0400 | |
|---|---|---|
| committer | 2020-03-31 22:18:40 -0400 | |
| commit | 944839a88a26dafc01737912eb1911d514391d46 (patch) | |
| tree | b2bf00474bdc8bf19b3803fa73cb9321f00acabf /android/module.go | |
| parent | 7182c45fe7c986fa6a6d251af91d0b8d011c5131 (diff) | |
Fix RuleBuilder remoteable actions running in the local pool.
This CL fixes a bug with RuleBuilder's handling of remoteable actions.
It adds a new type of pool to identify remoteable rules by the android
module context. The pool is then set to nil to actually run actions at
NINJA_REMOTE_NUM_JOBS parallelism.
Test: built aosp crosshatch userdebug
Change-Id: I29452f6fc7a161b94189731e3e3cc1f34907b80c
Diffstat (limited to 'android/module.go')
| -rw-r--r-- | android/module.go | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/android/module.go b/android/module.go index d57abd168..80f477b04 100644 --- a/android/module.go +++ b/android/module.go @@ -908,7 +908,7 @@ func (m *ModuleBase) PartitionTag(config DeviceConfig) string { // partition at "system/vendor/odm". if config.OdmPath() == "odm" { partition = "odm" - } else if strings.HasPrefix(config.OdmPath (), "vendor/") { + } else if strings.HasPrefix(config.OdmPath(), "vendor/") { partition = "vendor" } } else if m.ProductSpecific() { @@ -1506,10 +1506,17 @@ func (m *moduleContext) Variable(pctx PackageContext, name, value string) { func (m *moduleContext) Rule(pctx PackageContext, name string, params blueprint.RuleParams, argNames ...string) blueprint.Rule { - if m.config.UseRemoteBuild() && params.Pool == nil { - // When USE_GOMA=true or USE_RBE=true are set and the rule is not supported by goma/RBE, restrict - // jobs to the local parallelism value - params.Pool = localPool + if m.config.UseRemoteBuild() { + if params.Pool == nil { + // When USE_GOMA=true or USE_RBE=true are set and the rule is not supported by goma/RBE, restrict + // jobs to the local parallelism value + params.Pool = localPool + } else if params.Pool == remotePool { + // remotePool is a fake pool used to identify rule that are supported for remoting. If the rule's + // pool is the remotePool, replace with nil so that ninja runs it at NINJA_REMOTE_NUM_JOBS + // parallelism. + params.Pool = nil + } } rule := m.bp.Rule(pctx.PackageContext, name, params, argNames...) |