diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2023-06-22 09:32:56 +0200 |
---|---|---|
committer | Oliver Reiche <oliver.reiche@huawei.com> | 2023-07-05 13:08:38 +0200 |
commit | 9014ee19dbab4708527d7c4d846e5f6773c47bef (patch) | |
tree | e0ebe789263ea20aa68ae5d40c88017dc5d707e6 /src | |
parent | 600358e826fe991c40f2c11a5074299bcdab4712 (diff) | |
download | justbuild-9014ee19dbab4708527d7c4d846e5f6773c47bef.tar.gz |
Add CLI argument to dispatch endpoint
In this way, the user can specify which execution endpoint
to use depending on the execution properties.
Diffstat (limited to 'src')
-rw-r--r-- | src/buildtool/common/cli.hpp | 8 | ||||
-rw-r--r-- | src/buildtool/main/main.cpp | 9 |
2 files changed, 16 insertions, 1 deletions
diff --git a/src/buildtool/common/cli.hpp b/src/buildtool/common/cli.hpp index d3d15409..74ff0cce 100644 --- a/src/buildtool/common/cli.hpp +++ b/src/buildtool/common/cli.hpp @@ -90,6 +90,7 @@ struct EndpointArguments { std::optional<std::filesystem::path> local_root{}; std::optional<std::string> remote_execution_address; std::vector<std::string> platform_properties; + std::optional<std::filesystem::path> remote_execution_dispatch_file{}; }; /// \brief Arguments required for building. @@ -378,8 +379,13 @@ static inline auto SetupEndpointArguments( gsl::not_null<EndpointArguments*> const& clargs) { app->add_option("-r,--remote-execution-address", clargs->remote_execution_address, - "Address of the remote execution service.") + "Address of the remote-execution service.") ->type_name("NAME:PORT"); + app->add_option("--endpoint-configuration", + clargs->remote_execution_dispatch_file, + "File with dispatch instructions to use different " + "remote-execution services, depending on the properties") + ->type_name("PATH"); app->add_option( "--remote-execution-property", clargs->platform_properties, diff --git a/src/buildtool/main/main.cpp b/src/buildtool/main/main.cpp index ceecc77c..846fe257 100644 --- a/src/buildtool/main/main.cpp +++ b/src/buildtool/main/main.cpp @@ -330,6 +330,15 @@ void SetupExecutionConfig(EndpointArguments const& eargs, std::exit(kExitFailure); } } + if (eargs.remote_execution_dispatch_file) { + if (not RemoteConfig::SetRemoteExecutionDispatch( + *eargs.remote_execution_dispatch_file)) { + Logger::Log(LogLevel::Error, + "setting remote execution dispatch based on file '{}'", + eargs.remote_execution_dispatch_file->string()); + std::exit(kExitFailure); + } + } if (rargs.cache_endpoint) { if (not(RemoteConfig::SetCacheAddress(*rargs.cache_endpoint) == (*rargs.cache_endpoint != "local"))) { |