diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-08-01 10:26:13 +0200 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-08-01 19:00:47 +0200 |
commit | 03f948f4b10e916052a2234448b6658b80ee9143 (patch) | |
tree | 8eb0e2c26a31fd83fa0691b0d8fde55a15942a9d /src/buildtool/execution_api/remote/bazel | |
parent | ed71beee3e3a2bbfcba24281ad9e28a0f6df4054 (diff) | |
download | justbuild-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')
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, |