diff --git a/cmd/rbe_configs_gen/rbe_configs_gen.go b/cmd/rbe_configs_gen/rbe_configs_gen.go index 8a440a58f..7daea4c88 100644 --- a/cmd/rbe_configs_gen/rbe_configs_gen.go +++ b/cmd/rbe_configs_gen/rbe_configs_gen.go @@ -22,6 +22,7 @@ import ( "fmt" "log" "os" + "strings" "github.com/bazelbuild/bazel-toolchains/pkg/monitoring" "github.com/bazelbuild/bazel-toolchains/pkg/rbeconfigsgen" @@ -47,6 +48,7 @@ var ( cppEnvJSON = flag.String("cpp_env_json", "", "(Optional) JSON file containing a str -> str dict of environment variables to be set when generating C++ configs inside the toolchain container. This replaces any exec OS specific defaults that would usually be applied.") cppToolchainTarget = flag.String("cpp_toolchain_target", "", "(Optional) Set the CPP toolchain target. When exec_os is linux, the default is cc-compiler-k8. When exec_os is windows, the default is cc-compiler-x64_windows.") genJavaConfigs = flag.Bool("generate_java_configs", true, "(Optional) Generate Java configs. Defaults to true.") + execConstraints = flag.String("exec_constraints", "", "(Optional) Set the platform constraint values. Use ',' to seperate multiple values.") // Other misc arguments. tempWorkDir = flag.String("temp_work_dir", "", "(Optional) Temporary directory to use to store intermediate files. Defaults to a temporary directory automatically allocated by the OS. The temporary working directory is deleted at the end unless --cleanup=false is specified.") @@ -146,6 +148,9 @@ func main() { log.Fatalf("Failed to initialize monitoring: %v", err) } + platformParams := new(rbeconfigsgen.PlatformToolchainsTemplateParams) + platformParams.ExecConstraints = strings.Split(*execConstraints, ",") + o := rbeconfigsgen.Options{ BazelVersion: *bazelVersion, ToolchainContainer: *toolchainContainer, @@ -157,6 +162,7 @@ func main() { OutputManifest: *outputManifest, GenCPPConfigs: *genCppConfigs, CppGenEnvJSON: *cppEnvJSON, + PlatformParams: platformParams, CPPToolchainTargetName: *cppToolchainTarget, GenJavaConfigs: *genJavaConfigs, TempWorkDir: *tempWorkDir, diff --git a/pkg/rbeconfigsgen/options.go b/pkg/rbeconfigsgen/options.go index e3c8f1571..006caa4eb 100644 --- a/pkg/rbeconfigsgen/options.go +++ b/pkg/rbeconfigsgen/options.go @@ -186,8 +186,13 @@ func (o *Options) ApplyDefaults(os string) error { if !ok { return fmt.Errorf("got unknown OS %q, want one of %s", os, strings.Join(validOS, ", ")) } - o.PlatformParams = new(PlatformToolchainsTemplateParams) - *o.PlatformParams = dopts.PlatformParams + + if len(o.PlatformParams.ExecConstraints) == 0 { + o.PlatformParams.ExecConstraints = dopts.PlatformParams.ExecConstraints + } + o.PlatformParams.TargetConstraints = dopts.PlatformParams.TargetConstraints + o.PlatformParams.OSFamily = dopts.PlatformParams.OSFamily + o.CPPConfigTargets = dopts.CPPConfigTargets o.CPPConfigRepo = dopts.CPPConfigRepo o.CppBazelCmd = dopts.CppBazelCmd