diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/buildtool/execution_api/common/TARGETS | 8 | ||||
-rw-r--r-- | src/buildtool/execution_api/common/api_bundle.cpp | 34 | ||||
-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/TARGETS | 2 | ||||
-rw-r--r-- | src/buildtool/graph_traverser/graph_traverser.hpp | 2 | ||||
-rw-r--r-- | src/buildtool/main/TARGETS | 2 | ||||
-rw-r--r-- | src/buildtool/main/describe.cpp | 2 | ||||
-rw-r--r-- | src/buildtool/serve_api/remote/TARGETS | 2 | ||||
-rw-r--r-- | src/buildtool/serve_api/remote/target_client.hpp | 2 | ||||
-rw-r--r-- | src/buildtool/serve_api/serve_service/TARGETS | 4 | ||||
-rw-r--r-- | src/buildtool/serve_api/serve_service/source_tree.hpp | 2 | ||||
-rw-r--r-- | src/buildtool/serve_api/serve_service/target.hpp | 2 |
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" |