summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/execution_api/common/TARGETS8
-rw-r--r--src/buildtool/execution_api/common/api_bundle.cpp34
-rw-r--r--src/buildtool/execution_api/common/api_bundle.hpp (renamed from src/buildtool/execution_api/common/create_execution_api.hpp)22
-rw-r--r--src/buildtool/graph_traverser/TARGETS2
-rw-r--r--src/buildtool/graph_traverser/graph_traverser.hpp2
-rw-r--r--src/buildtool/main/TARGETS2
-rw-r--r--src/buildtool/main/describe.cpp2
-rw-r--r--src/buildtool/serve_api/remote/TARGETS2
-rw-r--r--src/buildtool/serve_api/remote/target_client.hpp2
-rw-r--r--src/buildtool/serve_api/serve_service/TARGETS4
-rw-r--r--src/buildtool/serve_api/serve_service/source_tree.hpp2
-rw-r--r--src/buildtool/serve_api/serve_service/target.hpp2
12 files changed, 68 insertions, 16 deletions
diff --git a/src/buildtool/execution_api/common/TARGETS b/src/buildtool/execution_api/common/TARGETS
index 8b3659e6..f95764ea 100644
--- a/src/buildtool/execution_api/common/TARGETS
+++ b/src/buildtool/execution_api/common/TARGETS
@@ -32,10 +32,11 @@
, "hdrs": ["bytestream_common.hpp"]
, "stage": ["src", "buildtool", "execution_api", "common"]
}
-, "create_execution_api":
+, "api_bundle":
{ "type": ["@", "rules", "CC", "library"]
- , "name": ["create_execution_api"]
- , "hdrs": ["create_execution_api.hpp"]
+ , "name": ["api_bundle"]
+ , "hdrs": ["api_bundle.hpp"]
+ , "srcs": ["api_bundle.cpp"]
, "stage": ["src", "buildtool", "execution_api", "common"]
, "deps":
[ ["src/buildtool/common", "config"]
@@ -43,6 +44,7 @@
, ["src/buildtool/execution_api/local", "local"]
, ["src/buildtool/execution_api/remote", "bazel"]
]
+ , "private-deps": [["src/buildtool/execution_api/bazel_msg", "bazel_msg"]]
}
, "message_limits":
{ "type": ["@", "rules", "CC", "library"]
diff --git a/src/buildtool/execution_api/common/api_bundle.cpp b/src/buildtool/execution_api/common/api_bundle.cpp
new file mode 100644
index 00000000..06857fc0
--- /dev/null
+++ b/src/buildtool/execution_api/common/api_bundle.cpp
@@ -0,0 +1,34 @@
+// Copyright 2024 Huawei Cloud Computing Technology Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "src/buildtool/execution_api/common/api_bundle.hpp"
+
+#include "src/buildtool/execution_api/bazel_msg/bazel_common.hpp"
+
+ApiBundle::ApiBundle(
+ std::optional<gsl::not_null<const RepositoryConfig*>> const& repo_config,
+ std::optional<ServerAddress> const& remote_address)
+ : local{std::make_shared<LocalApi>(repo_config)},
+ remote{CreateRemote(remote_address)} {}
+
+auto ApiBundle::CreateRemote(std::optional<ServerAddress> const& address) const
+ -> gsl::not_null<std::shared_ptr<IExecutionApi>> {
+ if (address) {
+ ExecutionConfiguration config;
+ config.skip_cache_lookup = false;
+ return std::make_shared<BazelApi>(
+ "remote-execution", address->host, address->port, config);
+ }
+ return local;
+}
diff --git a/src/buildtool/execution_api/common/create_execution_api.hpp b/src/buildtool/execution_api/common/api_bundle.hpp
index 5749a9c4..09e06901 100644
--- a/src/buildtool/execution_api/common/create_execution_api.hpp
+++ b/src/buildtool/execution_api/common/api_bundle.hpp
@@ -12,8 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#ifndef INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_CREATE_EXECUTION_API_HPP
-#define INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_CREATE_EXECUTION_API_HPP
+#ifndef INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_API_BUNDLE_HPP
+#define INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_API_BUNDLE_HPP
#include <memory>
#include <optional>
@@ -45,4 +45,20 @@
return std::make_unique<LocalApi>(repo_config);
}
-#endif
+/// \brief Utility structure for instantiation of local and remote apis at the
+/// same time. If the remote api cannot be instantiated, it falls back to
+/// exactly the same instance that local api is (&*remote == & *local).
+struct ApiBundle final {
+ explicit ApiBundle(
+ std::optional<gsl::not_null<const RepositoryConfig*>> const&
+ repo_config,
+ std::optional<ServerAddress> const& remote_address);
+
+ [[nodiscard]] auto CreateRemote(std::optional<ServerAddress> const& address)
+ const -> gsl::not_null<std::shared_ptr<IExecutionApi>>;
+
+ gsl::not_null<std::shared_ptr<IExecutionApi>> const local;
+ gsl::not_null<std::shared_ptr<IExecutionApi>> const remote;
+};
+
+#endif // INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_API_BUNDLE_HPP
diff --git a/src/buildtool/graph_traverser/TARGETS b/src/buildtool/graph_traverser/TARGETS
index b160715a..69d7ae65 100644
--- a/src/buildtool/graph_traverser/TARGETS
+++ b/src/buildtool/graph_traverser/TARGETS
@@ -13,7 +13,7 @@
, ["src/buildtool/execution_engine/traverser", "traverser"]
, ["src/buildtool/execution_api/common", "common"]
, ["src/buildtool/execution_api/common", "common_api"]
- , ["src/buildtool/execution_api/common", "create_execution_api"]
+ , ["src/buildtool/execution_api/common", "api_bundle"]
, ["src/buildtool/execution_api/local", "local"]
, ["src/buildtool/execution_api/remote", "bazel"]
, ["src/buildtool/execution_api/remote", "config"]
diff --git a/src/buildtool/graph_traverser/graph_traverser.hpp b/src/buildtool/graph_traverser/graph_traverser.hpp
index 2c6794a6..bd86f445 100644
--- a/src/buildtool/graph_traverser/graph_traverser.hpp
+++ b/src/buildtool/graph_traverser/graph_traverser.hpp
@@ -38,9 +38,9 @@
#include "src/buildtool/common/statistics.hpp"
#include "src/buildtool/common/tree.hpp"
#include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp"
+#include "src/buildtool/execution_api/common/api_bundle.hpp"
#include "src/buildtool/execution_api/common/artifact_blob_container.hpp"
#include "src/buildtool/execution_api/common/common_api.hpp"
-#include "src/buildtool/execution_api/common/create_execution_api.hpp"
#include "src/buildtool/execution_api/local/local_api.hpp"
#include "src/buildtool/execution_api/remote/bazel/bazel_api.hpp"
#include "src/buildtool/execution_api/remote/config.hpp"
diff --git a/src/buildtool/main/TARGETS b/src/buildtool/main/TARGETS
index 692e21b9..ee274ff1 100644
--- a/src/buildtool/main/TARGETS
+++ b/src/buildtool/main/TARGETS
@@ -84,7 +84,7 @@
, ["src/buildtool/build_engine/base_maps", "targets_file_map"]
, ["src/buildtool/build_engine/target_map", "target_map"]
, ["src/buildtool/execution_api/remote", "config"]
- , ["src/buildtool/execution_api/common", "create_execution_api"]
+ , ["src/buildtool/execution_api/common", "api_bundle"]
, ["src/buildtool/logging", "log_level"]
, ["src/buildtool/logging", "logging"]
, ["src/buildtool/serve_api/remote", "config"]
diff --git a/src/buildtool/main/describe.cpp b/src/buildtool/main/describe.cpp
index 978adadb..3e278ee8 100644
--- a/src/buildtool/main/describe.cpp
+++ b/src/buildtool/main/describe.cpp
@@ -25,7 +25,7 @@
#include "src/buildtool/logging/logger.hpp"
#include "src/buildtool/main/exit_codes.hpp"
#ifndef BOOTSTRAP_BUILD_TOOL
-#include "src/buildtool/execution_api/common/create_execution_api.hpp"
+#include "src/buildtool/execution_api/common/api_bundle.hpp"
#include "src/buildtool/execution_api/remote/config.hpp"
#include "src/buildtool/serve_api/remote/config.hpp"
#endif // BOOTSTRAP_BUILD_TOOL
diff --git a/src/buildtool/serve_api/remote/TARGETS b/src/buildtool/serve_api/remote/TARGETS
index 1d2a0917..6443e699 100644
--- a/src/buildtool/serve_api/remote/TARGETS
+++ b/src/buildtool/serve_api/remote/TARGETS
@@ -54,7 +54,7 @@
, ["src/buildtool/common/remote", "remote_common"]
, ["src/buildtool/common", "common"]
, ["src/buildtool/logging", "logging"]
- , ["src/buildtool/execution_api/common", "create_execution_api"]
+ , ["src/buildtool/execution_api/common", "api_bundle"]
, ["src/buildtool/storage", "storage"]
]
, "proto": [["src/buildtool/serve_api/serve_service", "just_serve_proto"]]
diff --git a/src/buildtool/serve_api/remote/target_client.hpp b/src/buildtool/serve_api/remote/target_client.hpp
index 0837d9fd..bc3aa382 100644
--- a/src/buildtool/serve_api/remote/target_client.hpp
+++ b/src/buildtool/serve_api/remote/target_client.hpp
@@ -28,7 +28,7 @@
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/common/remote/port.hpp"
#include "src/buildtool/common/remote/remote_common.hpp"
-#include "src/buildtool/execution_api/common/create_execution_api.hpp"
+#include "src/buildtool/execution_api/common/api_bundle.hpp"
#include "src/buildtool/logging/logger.hpp"
#include "src/buildtool/storage/target_cache_entry.hpp"
#include "src/buildtool/storage/target_cache_key.hpp"
diff --git a/src/buildtool/serve_api/serve_service/TARGETS b/src/buildtool/serve_api/serve_service/TARGETS
index ede2bb68..075e45a3 100644
--- a/src/buildtool/serve_api/serve_service/TARGETS
+++ b/src/buildtool/serve_api/serve_service/TARGETS
@@ -18,7 +18,7 @@
, ["src/buildtool/common/remote", "remote_common"]
, ["src/buildtool/execution_api/common", "common"]
, ["src/buildtool/execution_api/remote", "config"]
- , ["src/buildtool/execution_api/common", "create_execution_api"]
+ , ["src/buildtool/execution_api/common", "api_bundle"]
, ["src/buildtool/file_system/symlinks_map", "pragma_special"]
, ["src/buildtool/file_system/symlinks_map", "resolve_symlinks_map"]
, ["src/buildtool/serve_api/remote", "config"]
@@ -82,7 +82,7 @@
, ["@", "gsl", "", "gsl"]
, ["src/buildtool/common/remote", "remote_common"]
, ["src/buildtool/execution_api/remote", "config"]
- , ["src/buildtool/execution_api/common", "create_execution_api"]
+ , ["src/buildtool/execution_api/common", "api_bundle"]
, ["src/buildtool/execution_api/common", "common"]
, ["src/buildtool/serve_api/remote", "config"]
]
diff --git a/src/buildtool/serve_api/serve_service/source_tree.hpp b/src/buildtool/serve_api/serve_service/source_tree.hpp
index 8d4ab49f..1b954df4 100644
--- a/src/buildtool/serve_api/serve_service/source_tree.hpp
+++ b/src/buildtool/serve_api/serve_service/source_tree.hpp
@@ -28,7 +28,7 @@
#include "gsl/gsl"
#include "justbuild/just_serve/just_serve.grpc.pb.h"
#include "src/buildtool/common/remote/remote_common.hpp"
-#include "src/buildtool/execution_api/common/create_execution_api.hpp"
+#include "src/buildtool/execution_api/common/api_bundle.hpp"
#include "src/buildtool/execution_api/common/execution_api.hpp"
#include "src/buildtool/execution_api/remote/config.hpp"
#include "src/buildtool/file_system/symlinks_map/pragma_special.hpp"
diff --git a/src/buildtool/serve_api/serve_service/target.hpp b/src/buildtool/serve_api/serve_service/target.hpp
index 171ac42b..9bcea637 100644
--- a/src/buildtool/serve_api/serve_service/target.hpp
+++ b/src/buildtool/serve_api/serve_service/target.hpp
@@ -29,7 +29,7 @@
#include "nlohmann/json.hpp"
#include "src/buildtool/common/artifact_digest.hpp"
#include "src/buildtool/common/remote/remote_common.hpp"
-#include "src/buildtool/execution_api/common/create_execution_api.hpp"
+#include "src/buildtool/execution_api/common/api_bundle.hpp"
#include "src/buildtool/execution_api/common/execution_api.hpp"
#include "src/buildtool/execution_api/remote/config.hpp"
#include "src/buildtool/logging/logger.hpp"