Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dd0418a4 authored by Ramy Medhat's avatar Ramy Medhat Committed by Colin Cross
Browse files

Run non-RBE supported actions in the local pool when USE_RBE is set.

Bug: 143938974
Test: ran CTS build at -j500 successfully.
Change-Id: I55074bd67308cd716972e24fb56a20bc393d5d9d
parent 1f056cd6
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1195,9 +1195,9 @@ 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.UseGoma() && params.Pool == nil {
		// When USE_GOMA=true is set and the rule is not supported by goma, restrict jobs to the
		// local parallelism value
	if (m.config.UseGoma() || m.config.UseRBE()) && 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
	}

+33 −7
Original line number Diff line number Diff line
@@ -115,9 +115,9 @@ func (p PackageContext) RuleFunc(name string,
		if len(ctx.errors) > 0 {
			return params, ctx.errors[0]
		}
		if ctx.Config().UseGoma() && params.Pool == nil {
			// When USE_GOMA=true is set and the rule is not supported by goma, restrict jobs to the
			// local parallelism value
		if (ctx.Config().UseGoma() || ctx.Config().UseRBE()) && 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
		}
		return params, nil
@@ -254,9 +254,35 @@ func (p PackageContext) StaticRule(name string, params blueprint.RuleParams,
	}, argNames...)
}

// AndroidGomaStaticRule wraps blueprint.StaticRule but uses goma's parallelism if goma is enabled
func (p PackageContext) AndroidGomaStaticRule(name string, params blueprint.RuleParams,
// RemoteRuleSupports selects if a AndroidRemoteStaticRule supports goma, RBE, or both.
type RemoteRuleSupports int

const (
	SUPPORTS_NONE = 0
	SUPPORTS_GOMA = 1 << iota
	SUPPORTS_RBE  = 1 << iota
	SUPPORTS_BOTH = SUPPORTS_GOMA | SUPPORTS_RBE
)

// AndroidRemoteStaticRule wraps blueprint.StaticRule but uses goma or RBE's parallelism if goma or RBE are enabled
// and the appropriate SUPPORTS_* flag is set.
func (p PackageContext) AndroidRemoteStaticRule(name string, supports RemoteRuleSupports, params blueprint.RuleParams,
	argNames ...string) blueprint.Rule {
	// bypass android.PackageContext.StaticRule so that Pool does not get set to local_pool.
	return p.PackageContext.StaticRule(name, params, argNames...)

	return p.PackageContext.RuleFunc(name, func(config interface{}) (blueprint.RuleParams, error) {
		ctx := &configErrorWrapper{p, config.(Config), nil}
		if ctx.Config().UseGoma() && supports&SUPPORTS_GOMA == 0 {
			// When USE_GOMA=true is set and the rule is not supported by goma, restrict jobs to the
			// local parallelism value
			params.Pool = localPool
		}

		if ctx.Config().UseRBE() && supports&SUPPORTS_RBE == 0 {
			// When USE_RBE=true is set and the rule is not supported by RBE, restrict jobs to the
			// local parallelism value
			params.Pool = localPool
		}

		return params, nil
	}, argNames...)
}
+3 −3
Original line number Diff line number Diff line
@@ -131,9 +131,9 @@ func (s *singletonContextAdaptor) Variable(pctx PackageContext, name, value stri
}

func (s *singletonContextAdaptor) Rule(pctx PackageContext, name string, params blueprint.RuleParams, argNames ...string) blueprint.Rule {
	if s.Config().UseGoma() && params.Pool == nil {
		// When USE_GOMA=true is set and the rule is not supported by goma, restrict jobs to the
		// local parallelism value
	if (s.Config().UseGoma() || s.Config().UseRBE()) && 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
	}
	rule := s.SingletonContext.Rule(pctx.PackageContext, name, params, argNames...)
+1 −1
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@ func init() {
var (
	pctx = android.NewPackageContext("android/soong/bpf")

	ccRule = pctx.AndroidGomaStaticRule("ccRule",
	ccRule = pctx.AndroidRemoteStaticRule("ccRule", android.SUPPORTS_GOMA,
		blueprint.RuleParams{
			Depfile:     "${out}.d",
			Deps:        blueprint.DepsGCC,
+2 −2
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ var (
var (
	pctx = android.NewPackageContext("android/soong/cc")

	cc = pctx.AndroidGomaStaticRule("cc",
	cc = pctx.AndroidRemoteStaticRule("cc", android.SUPPORTS_BOTH,
		blueprint.RuleParams{
			Depfile:     "${out}.d",
			Deps:        blueprint.DepsGCC,
@@ -55,7 +55,7 @@ var (
		},
		"ccCmd", "cFlags")

	ccNoDeps = pctx.AndroidGomaStaticRule("ccNoDeps",
	ccNoDeps = pctx.AndroidRemoteStaticRule("ccNoDeps", android.SUPPORTS_GOMA,
		blueprint.RuleParams{
			Command:     "$relPwd ${config.CcWrapper}$ccCmd -c $cFlags -o $out $in",
			CommandDeps: []string{"$ccCmd"},
Loading