summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/remote/bazel
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2024-08-01 10:26:13 +0200
committerKlaus Aehlig <klaus.aehlig@huawei.com>2024-08-01 19:00:47 +0200
commit03f948f4b10e916052a2234448b6658b80ee9143 (patch)
tree8eb0e2c26a31fd83fa0691b0d8fde55a15942a9d /src/buildtool/execution_api/remote/bazel
parented71beee3e3a2bbfcba24281ad9e28a0f6df4054 (diff)
downloadjustbuild-03f948f4b10e916052a2234448b6658b80ee9143.tar.gz
Execution API: support cwd
... following the remote-execution standard that all output paths (but none of the input paths) are relative to the working directory. Therefore, the executor has to do the path translation. For our implementation of the API interface - the local API now handles cwd correctly, - the remote API forwards cwd correctly, and - the git API continues to report actions as not implemented.
Diffstat (limited to 'src/buildtool/execution_api/remote/bazel')
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_action.cpp3
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_action.hpp2
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_api.cpp2
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_api.hpp1
4 files changed, 8 insertions, 0 deletions
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_action.cpp b/src/buildtool/execution_api/remote/bazel/bazel_action.cpp
index 4190ea19..dcbddb8d 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_action.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_action.cpp
@@ -26,6 +26,7 @@ BazelAction::BazelAction(
std::shared_ptr<BazelNetwork> network,
bazel_re::Digest root_digest,
std::vector<std::string> command,
+ std::string cwd,
std::vector<std::string> output_files,
std::vector<std::string> output_dirs,
std::map<std::string, std::string> const& env_vars,
@@ -33,6 +34,7 @@ BazelAction::BazelAction(
: network_{std::move(network)},
root_digest_{std::move(root_digest)},
cmdline_{std::move(command)},
+ cwd_{std::move(cwd)},
output_files_{std::move(output_files)},
output_dirs_{std::move(output_dirs)},
env_vars_{BazelMsgFactory::CreateMessageVectorFromMap<
@@ -122,6 +124,7 @@ auto BazelAction::CreateBundlesForAction(BazelBlobContainer* blobs,
}
BazelMsgFactory::ActionDigestRequest request{
.command_line = &cmdline_,
+ .cwd = &cwd_,
.output_files = &output_files_,
.output_dirs = &output_dirs_,
.env_vars = &env_vars_,
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_action.hpp b/src/buildtool/execution_api/remote/bazel/bazel_action.hpp
index 8316cec1..7bf62a45 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_action.hpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_action.hpp
@@ -44,6 +44,7 @@ class BazelAction final : public IExecutionAction {
std::shared_ptr<BazelNetwork> const network_;
bazel_re::Digest const root_digest_;
std::vector<std::string> const cmdline_;
+ std::string const cwd_;
std::vector<std::string> output_files_;
std::vector<std::string> output_dirs_;
std::vector<bazel_re::Command_EnvironmentVariable> const env_vars_;
@@ -55,6 +56,7 @@ class BazelAction final : public IExecutionAction {
std::shared_ptr<BazelNetwork> network,
bazel_re::Digest root_digest,
std::vector<std::string> command,
+ std::string cwd,
std::vector<std::string> output_files,
std::vector<std::string> output_dirs,
std::map<std::string, std::string> const& env_vars,
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
index d3dc1b2f..2f54a377 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
@@ -213,6 +213,7 @@ BazelApi::~BazelApi() = default;
auto BazelApi::CreateAction(
ArtifactDigest const& root_digest,
std::vector<std::string> const& command,
+ std::string const& cwd,
std::vector<std::string> const& output_files,
std::vector<std::string> const& output_dirs,
std::map<std::string, std::string> const& env_vars,
@@ -221,6 +222,7 @@ auto BazelApi::CreateAction(
return std::unique_ptr<BazelAction>{new BazelAction{network_,
root_digest,
command,
+ cwd,
output_files,
output_dirs,
env_vars,
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.hpp b/src/buildtool/execution_api/remote/bazel/bazel_api.hpp
index 5946f0f7..6b2a6f17 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_api.hpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_api.hpp
@@ -58,6 +58,7 @@ class BazelApi final : public IExecutionApi {
[[nodiscard]] auto CreateAction(
ArtifactDigest const& root_digest,
std::vector<std::string> const& command,
+ std::string const& cwd,
std::vector<std::string> const& output_files,
std::vector<std::string> const& output_dirs,
std::map<std::string, std::string> const& env_vars,