summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/main/main.cpp6
-rw-r--r--src/buildtool/serve_api/serve_service/TARGETS1
-rw-r--r--src/buildtool/serve_api/serve_service/serve_server_implementation.cpp8
-rw-r--r--src/buildtool/serve_api/serve_service/serve_server_implementation.hpp6
-rw-r--r--src/buildtool/serve_api/serve_service/target.cpp10
-rw-r--r--src/buildtool/serve_api/serve_service/target.hpp7
6 files changed, 24 insertions, 14 deletions
diff --git a/src/buildtool/main/main.cpp b/src/buildtool/main/main.cpp
index f4d0f566..0063e9bd 100644
--- a/src/buildtool/main/main.cpp
+++ b/src/buildtool/main/main.cpp
@@ -867,8 +867,14 @@ auto main(int argc, char* argv[]) -> int {
if (arguments.cmd == SubCommand::kServe) {
SetupServeServiceConfig(arguments.service);
+ std::optional<gsl::not_null<const ServeApi*>> serve;
+ if (RemoteServeConfig::Instance().RemoteAddress()) {
+ serve = &ServeApi::Instance();
+ }
+
if (!ServeServerImpl::Instance().Run(
RemoteServeConfig::Instance(),
+ serve,
!RemoteExecutionConfig::RemoteAddress())) {
return kExitFailure;
}
diff --git a/src/buildtool/serve_api/serve_service/TARGETS b/src/buildtool/serve_api/serve_service/TARGETS
index fe9e2b7f..ede2bb68 100644
--- a/src/buildtool/serve_api/serve_service/TARGETS
+++ b/src/buildtool/serve_api/serve_service/TARGETS
@@ -48,6 +48,7 @@
, "deps":
[ ["src/buildtool/logging", "logging"]
, ["src/buildtool/serve_api/remote", "config"]
+ , ["src/buildtool/serve_api/remote", "serve_api"]
]
, "stage": ["src", "buildtool", "serve_api", "serve_service"]
, "private-deps":
diff --git a/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp b/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp
index eee4c5cc..b8b092f8 100644
--- a/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp
+++ b/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp
@@ -60,8 +60,10 @@ auto TryWrite(std::string const& file, T const& content) noexcept -> bool {
}
} // namespace
-auto ServeServerImpl::Run(RemoteServeConfig const& serve_config,
- bool with_execute) -> bool {
+auto ServeServerImpl::Run(
+ RemoteServeConfig const& serve_config,
+ std::optional<gsl::not_null<const ServeApi*>> const& serve,
+ bool with_execute) -> bool {
// make sure the git root directory is properly initialized
if (not FileSystemManager::CreateDirectory(StorageConfig::GitRoot())) {
Logger::Log(LogLevel::Error,
@@ -77,7 +79,7 @@ auto ServeServerImpl::Run(RemoteServeConfig const& serve_config,
}
SourceTreeService sts{serve_config};
- TargetService ts{serve_config};
+ TargetService ts{serve_config, serve};
ConfigurationService cs{};
grpc::ServerBuilder builder;
diff --git a/src/buildtool/serve_api/serve_service/serve_server_implementation.hpp b/src/buildtool/serve_api/serve_service/serve_server_implementation.hpp
index 0e1ea905..f9eea2f6 100644
--- a/src/buildtool/serve_api/serve_service/serve_server_implementation.hpp
+++ b/src/buildtool/serve_api/serve_service/serve_server_implementation.hpp
@@ -19,6 +19,7 @@
#include "src/buildtool/logging/logger.hpp"
#include "src/buildtool/serve_api/remote/config.hpp"
+#include "src/buildtool/serve_api/remote/serve_api.hpp"
class ServeServerImpl {
public:
@@ -50,9 +51,12 @@ class ServeServerImpl {
/// \brief Start the serve service.
/// \param serve_config RemoteServeConfig to be used.
+ /// \param serve ServeApi to be used.
/// \param with_execute Flag specifying if just serve should act also as
/// just execute (i.e., start remote execution services with same interface)
- auto Run(RemoteServeConfig const& serve_config, bool with_execute) -> bool;
+ auto Run(RemoteServeConfig const& serve_config,
+ std::optional<gsl::not_null<const ServeApi*>> const& serve,
+ bool with_execute) -> bool;
~ServeServerImpl() = default;
private:
diff --git a/src/buildtool/serve_api/serve_service/target.cpp b/src/buildtool/serve_api/serve_service/target.cpp
index b34a7a63..024e5bae 100644
--- a/src/buildtool/serve_api/serve_service/target.cpp
+++ b/src/buildtool/serve_api/serve_service/target.cpp
@@ -38,7 +38,6 @@
#include "src/buildtool/multithreading/task_system.hpp"
#include "src/buildtool/progress_reporting/progress.hpp"
#include "src/buildtool/progress_reporting/progress_reporter.hpp"
-#include "src/buildtool/serve_api/remote/serve_api.hpp"
#include "src/buildtool/serve_api/serve_service/target_utils.hpp"
#include "src/buildtool/storage/config.hpp"
#include "src/buildtool/storage/storage.hpp"
@@ -453,13 +452,8 @@ auto TargetService::ServeTarget(
AnalyseContext analyse_ctx{.repo_config = &repository_config,
.target_cache = tc,
.statistics = &stats,
- .progress = &progress};
-
-#ifndef BOOTSTRAP_BUILD_TOOL
- if (RemoteServeConfig::Instance().RemoteAddress()) {
- analyse_ctx.serve = &ServeApi::Instance();
- }
-#endif // BOOTSTRAP_BUILD_TOOL
+ .progress = &progress,
+ .serve = serve_};
// analyse the configured target
auto result = AnalyseTarget(&analyse_ctx,
diff --git a/src/buildtool/serve_api/serve_service/target.hpp b/src/buildtool/serve_api/serve_service/target.hpp
index 54ca107b..7e94c919 100644
--- a/src/buildtool/serve_api/serve_service/target.hpp
+++ b/src/buildtool/serve_api/serve_service/target.hpp
@@ -34,12 +34,14 @@
#include "src/buildtool/execution_api/remote/config.hpp"
#include "src/buildtool/logging/logger.hpp"
#include "src/buildtool/serve_api/remote/config.hpp"
+#include "src/buildtool/serve_api/remote/serve_api.hpp"
// The target-level cache service.
class TargetService final : public justbuild::just_serve::Target::Service {
public:
- explicit TargetService(RemoteServeConfig const& serve_config) noexcept
- : serve_config_{serve_config} {}
+ TargetService(RemoteServeConfig const& serve_config,
+ std::optional<gsl::not_null<const ServeApi*>> serve) noexcept
+ : serve_config_{serve_config}, serve_(std::move(serve)) {}
// Given a target-level caching key, returns the computed value. In doing
// so, it can build on the associated endpoint passing the
@@ -118,6 +120,7 @@ class TargetService final : public justbuild::just_serve::Target::Service {
private:
RemoteServeConfig const& serve_config_;
+ std::optional<gsl::not_null<const ServeApi*>> serve_;
std::shared_ptr<Logger> logger_{std::make_shared<Logger>("target-service")};
// type of dispatch list; reduces verbosity