summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2023-06-22 09:32:56 +0200
committerOliver Reiche <oliver.reiche@huawei.com>2023-07-05 13:08:38 +0200
commit9014ee19dbab4708527d7c4d846e5f6773c47bef (patch)
treee0ebe789263ea20aa68ae5d40c88017dc5d707e6 /src
parent600358e826fe991c40f2c11a5074299bcdab4712 (diff)
downloadjustbuild-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.hpp8
-rw-r--r--src/buildtool/main/main.cpp9
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"))) {