summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/build_engine/target_map/absent_target_map.cpp4
-rw-r--r--src/buildtool/build_engine/target_map/export.cpp2
-rw-r--r--src/buildtool/build_engine/target_map/target_map.cpp2
-rw-r--r--src/buildtool/main/analyse.cpp7
-rw-r--r--src/buildtool/main/analyse_context.hpp4
-rw-r--r--src/buildtool/main/main.cpp2
-rw-r--r--src/buildtool/serve_api/serve_service/serve_server_implementation.cpp2
-rw-r--r--src/buildtool/serve_api/serve_service/target.hpp10
8 files changed, 16 insertions, 17 deletions
diff --git a/src/buildtool/build_engine/target_map/absent_target_map.cpp b/src/buildtool/build_engine/target_map/absent_target_map.cpp
index fd786539..017d25c5 100644
--- a/src/buildtool/build_engine/target_map/absent_target_map.cpp
+++ b/src/buildtool/build_engine/target_map/absent_target_map.cpp
@@ -76,7 +76,7 @@ void WithFlexibleVariables(
target_cache_value{std::nullopt};
target_cache_value = context->target_cache->Read(*target_cache_key);
bool from_just_serve = false;
- if (not target_cache_value and context->serve) {
+ if (not target_cache_value and context->serve != nullptr) {
auto task = fmt::format("[{},{}]",
key.target.ToString(),
PruneJson(effective_config.ToJson()).dump());
@@ -202,7 +202,7 @@ auto BuildMaps::Target::CreateAbsentTargetVariablesMap(
auto /*subcaller*/,
auto key) {
std::optional<std::vector<std::string>> vars;
- if (context->serve) {
+ if (context->serve != nullptr) {
vars = context->serve->ServeTargetVariables(
key.target_root_id, key.target_file, key.target);
}
diff --git a/src/buildtool/build_engine/target_map/export.cpp b/src/buildtool/build_engine/target_map/export.cpp
index f3f4e97a..2d92bed6 100644
--- a/src/buildtool/build_engine/target_map/export.cpp
+++ b/src/buildtool/build_engine/target_map/export.cpp
@@ -143,7 +143,7 @@ void ExportRule(
#ifndef BOOTSTRAP_BUILD_TOOL
// if not found locally, try the serve endpoint
- if (not target_cache_value and context->serve) {
+ if (not target_cache_value and context->serve != nullptr) {
Logger::Log(LogLevel::Debug,
"Querying serve endpoint for export target {}",
key.target.ToString());
diff --git a/src/buildtool/build_engine/target_map/target_map.cpp b/src/buildtool/build_engine/target_map/target_map.cpp
index c474596a..7bc74800 100644
--- a/src/buildtool/build_engine/target_map/target_map.cpp
+++ b/src/buildtool/build_engine/target_map/target_map.cpp
@@ -1905,7 +1905,7 @@ auto CreateTargetMap(
else if (context->repo_config
->TargetRoot(key.target.ToModule().repository)
->IsAbsent()) {
- if (not context->serve) {
+ if (context->serve == nullptr) {
(*logger)(
fmt::format("Root for target {} is absent, but no serve "
"endpoint was configured. Please provide "
diff --git a/src/buildtool/main/analyse.cpp b/src/buildtool/main/analyse.cpp
index 13214463..f1d37af9 100644
--- a/src/buildtool/main/analyse.cpp
+++ b/src/buildtool/main/analyse.cpp
@@ -134,11 +134,12 @@ namespace Target = BuildMaps::Target;
AnalysedTargetPtr target{};
// we should only report served export targets if a serve endpoint exists
- bool has_serve = context->serve.has_value();
- std::atomic<bool> done{false};
- std::condition_variable cv{};
+ bool const has_serve = context->serve != nullptr;
auto reporter = ExportsProgressReporter::Reporter(
context->statistics, context->progress, has_serve, logger);
+
+ std::atomic<bool> done{false};
+ std::condition_variable cv{};
auto observer =
std::thread([reporter, &done, &cv]() { reporter(&done, &cv); });
diff --git a/src/buildtool/main/analyse_context.hpp b/src/buildtool/main/analyse_context.hpp
index de3b4980..9999ae43 100644
--- a/src/buildtool/main/analyse_context.hpp
+++ b/src/buildtool/main/analyse_context.hpp
@@ -15,8 +15,6 @@
#ifndef INCLUDED_SRC_BUILDOOL_MAIN_ANALYSE_CONTEXT_HPP
#define INCLUDED_SRC_BUILDOOL_MAIN_ANALYSE_CONTEXT_HPP
-#include <optional>
-
#include "gsl/gsl"
#include "src/buildtool/common/repository_config.hpp"
#include "src/buildtool/common/statistics.hpp"
@@ -29,7 +27,7 @@ struct AnalyseContext final {
gsl::not_null<ActiveTargetCache const*> const target_cache;
gsl::not_null<Statistics*> const statistics;
gsl::not_null<Progress*> const progress;
- std::optional<ServeApi> const& serve;
+ ServeApi const* const serve = nullptr;
};
#endif // INCLUDED_SRC_BUILDOOL_MAIN_ANALYSE_CONTEXT_HPP
diff --git a/src/buildtool/main/main.cpp b/src/buildtool/main/main.cpp
index 1e956cc8..a9aea2eb 100644
--- a/src/buildtool/main/main.cpp
+++ b/src/buildtool/main/main.cpp
@@ -1010,7 +1010,7 @@ auto main(int argc, char* argv[]) -> int {
.target_cache = &Storage::Instance().TargetCache(),
.statistics = &stats,
.progress = &exports_progress,
- .serve = serve};
+ .serve = serve ? &*serve : nullptr};
auto result = AnalyseTarget(&analyse_ctx,
id,
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 c28a2a71..aa139dae 100644
--- a/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp
+++ b/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp
@@ -107,7 +107,7 @@ auto ServeServerImpl::Run(RemoteServeConfig const& serve_config,
}
SourceTreeService sts{serve_config, &apis};
- TargetService ts{serve_config, serve, &apis};
+ TargetService ts{serve_config, &apis, serve ? &*serve : nullptr};
ConfigurationService cs{};
grpc::ServerBuilder builder;
diff --git a/src/buildtool/serve_api/serve_service/target.hpp b/src/buildtool/serve_api/serve_service/target.hpp
index 0b657e9a..f0396ae6 100644
--- a/src/buildtool/serve_api/serve_service/target.hpp
+++ b/src/buildtool/serve_api/serve_service/target.hpp
@@ -39,10 +39,10 @@
// The target-level cache service.
class TargetService final : public justbuild::just_serve::Target::Service {
public:
- TargetService(RemoteServeConfig const& serve_config,
- std::optional<ServeApi> const& serve,
- gsl::not_null<ApiBundle const*> const& apis) noexcept
- : serve_config_{serve_config}, serve_{serve}, apis_{*apis} {}
+ explicit TargetService(RemoteServeConfig const& serve_config,
+ gsl::not_null<ApiBundle const*> const& apis,
+ ServeApi const* const serve = nullptr) noexcept
+ : serve_config_{serve_config}, apis_{*apis}, serve_{serve} {}
// Given a target-level caching key, returns the computed value. In doing
// so, it can build on the associated endpoint passing the
@@ -121,8 +121,8 @@ class TargetService final : public justbuild::just_serve::Target::Service {
private:
RemoteServeConfig const& serve_config_;
- std::optional<ServeApi> const& serve_;
ApiBundle const& apis_;
+ ServeApi const* const serve_ = nullptr;
std::shared_ptr<Logger> logger_{std::make_shared<Logger>("target-service")};
// type of dispatch list; reduces verbosity