diff options
Diffstat (limited to 'src')
23 files changed, 59 insertions, 44 deletions
diff --git a/src/buildtool/build_engine/base_maps/source_map.cpp b/src/buildtool/build_engine/base_maps/source_map.cpp index 0e96810c..9624ce1d 100644 --- a/src/buildtool/build_engine/base_maps/source_map.cpp +++ b/src/buildtool/build_engine/base_maps/source_map.cpp @@ -89,4 +89,4 @@ auto CreateSourceTargetMap(const gsl::not_null<DirectoryEntriesMap*>& dirs, jobs); } -}; // namespace BuildMaps::Base +} // namespace BuildMaps::Base diff --git a/src/buildtool/build_engine/expression/expression_ptr.cpp b/src/buildtool/build_engine/expression/expression_ptr.cpp index 256e580b..bb81e8ab 100644 --- a/src/buildtool/build_engine/expression/expression_ptr.cpp +++ b/src/buildtool/build_engine/expression/expression_ptr.cpp @@ -66,7 +66,7 @@ auto ExpressionPtr::IsNotNull() const noexcept -> bool { return static_cast<bool>(ptr_) and not(ptr_->IsNone()); } -auto ExpressionPtr::LinkedMap() const& -> ExpressionPtr::linked_map_t const& { +auto ExpressionPtr::Map() const& -> ExpressionPtr::linked_map_t const& { return ptr_->Map(); } diff --git a/src/buildtool/build_engine/expression/expression_ptr.hpp b/src/buildtool/build_engine/expression/expression_ptr.hpp index d7e05923..5f395c2a 100644 --- a/src/buildtool/build_engine/expression/expression_ptr.hpp +++ b/src/buildtool/build_engine/expression/expression_ptr.hpp @@ -75,7 +75,7 @@ class ExpressionPtr { using linked_map_t = LinkedMap<std::string, ExpressionPtr, ExpressionPtr>; [[nodiscard]] auto IsNotNull() const noexcept -> bool; - [[nodiscard]] auto LinkedMap() const& -> linked_map_t const&; + [[nodiscard]] auto Map() const& -> linked_map_t const&; [[nodiscard]] static auto Make(linked_map_t&& map) -> ExpressionPtr; private: diff --git a/src/buildtool/build_engine/expression/linked_map.hpp b/src/buildtool/build_engine/expression/linked_map.hpp index 59361dcf..2df8982b 100644 --- a/src/buildtool/build_engine/expression/linked_map.hpp +++ b/src/buildtool/build_engine/expression/linked_map.hpp @@ -35,7 +35,7 @@ class LinkedMapPtr { [[nodiscard]] auto IsNotNull() const noexcept -> bool { return static_cast<bool>(ptr_); } - [[nodiscard]] auto LinkedMap() const& -> map_t const& { return *ptr_; } + [[nodiscard]] auto Map() const& -> map_t const& { return *ptr_; } [[nodiscard]] static auto Make(map_t&& map) -> ptr_t { return ptr_t{std::make_shared<map_t>(std::move(map))}; } @@ -143,15 +143,15 @@ class LinkedMap { } [[nodiscard]] auto empty() const noexcept -> bool { - return (content_.IsNotNull() ? content_.LinkedMap().empty() + return (content_.IsNotNull() ? content_.Map().empty() : map_.empty()) and - (not next_.IsNotNull() or next_.LinkedMap().empty()); + (not next_.IsNotNull() or next_.Map().empty()); } [[nodiscard]] auto Find(K const& key) const& noexcept -> std::optional<std::reference_wrapper<V const>> { if (content_.IsNotNull()) { - auto val = content_.LinkedMap().Find(key); + auto val = content_.Map().Find(key); if (val) { return val; } @@ -163,7 +163,7 @@ class LinkedMap { } } if (next_.IsNotNull()) { - auto val = next_.LinkedMap().Find(key); + auto val = next_.Map().Find(key); if (val) { return val; } @@ -173,7 +173,7 @@ class LinkedMap { [[nodiscard]] auto Find(K const& key) && noexcept -> std::optional<V> { if (content_.IsNotNull()) { - auto val = content_.LinkedMap().Find(key); + auto val = content_.Map().Find(key); if (val) { return val->get(); } @@ -185,7 +185,7 @@ class LinkedMap { } } if (next_.IsNotNull()) { - auto val = next_.LinkedMap().Find(key); + auto val = next_.Map().Find(key); if (val) { return val->get(); } @@ -294,10 +294,9 @@ class LinkedMap { AtomicValue<items_t> items_{}; [[nodiscard]] auto ComputeSortedItems() const noexcept -> items_t { - auto size = - content_.IsNotNull() ? content_.LinkedMap().size() : map_.size(); + auto size = content_.IsNotNull() ? content_.Map().size() : map_.size(); if (next_.IsNotNull()) { - size += next_.LinkedMap().size(); + size += next_.Map().size(); } auto items = items_t{}; @@ -311,7 +310,7 @@ class LinkedMap { typename items_t::const_iterator nitemsend; if (content_.IsNotNull()) { - auto const& citems = content_.LinkedMap().Items(); + auto const& citems = content_.Map().Items(); citemsit = citems.begin(); citemsend = citems.end(); } @@ -322,7 +321,7 @@ class LinkedMap { citemsend = map_copy.end(); } if (next_.IsNotNull()) { - auto const& nitems = next_.LinkedMap().Items(); + auto const& nitems = next_.Map().Items(); nitemsit = nitems.begin(); nitemsend = nitems.end(); } diff --git a/src/buildtool/build_engine/expression/target_result.hpp b/src/buildtool/build_engine/expression/target_result.hpp index 7df20000..6f820ef2 100644 --- a/src/buildtool/build_engine/expression/target_result.hpp +++ b/src/buildtool/build_engine/expression/target_result.hpp @@ -33,7 +33,7 @@ struct TargetResult { namespace std { template <> -struct std::hash<TargetResult> { +struct hash<TargetResult> { [[nodiscard]] auto operator()(TargetResult const& r) noexcept -> std::size_t { auto seed = std::hash<ExpressionPtr>{}(r.artifact_stage); diff --git a/src/buildtool/build_engine/target_map/result_map.hpp b/src/buildtool/build_engine/target_map/result_map.hpp index 1cabade1..d4d9cfaf 100644 --- a/src/buildtool/build_engine/target_map/result_map.hpp +++ b/src/buildtool/build_engine/target_map/result_map.hpp @@ -41,13 +41,6 @@ class ResultTargetMap { std::vector<Tree::Ptr> trees{}; }; - template <> - struct ResultType</*kIncludeOrigins=*/true> { - std::vector<ActionWithOrigin> actions{}; - std::vector<std::string> blobs{}; - std::vector<Tree::Ptr> trees{}; - }; - explicit ResultTargetMap(std::size_t jobs) : width_{ComputeWidth(jobs)} {} ResultTargetMap() = default; @@ -350,6 +343,13 @@ class ResultTargetMap { }; // namespace BuildMaps::Target +template <> +struct ResultTargetMap::ResultType</*kIncludeOrigins=*/true> { + std::vector<ActionWithOrigin> actions{}; + std::vector<std::string> blobs{}; + std::vector<Tree::Ptr> trees{}; +}; + } // namespace BuildMaps::Target #endif // INCLUDED_SRC_BUILDTOOL_BUILD_ENGINE_TARGET_MAP_RESULT_MAP_HPP diff --git a/src/buildtool/crypto/hasher.cpp b/src/buildtool/crypto/hasher.cpp index 6f432679..ae5db5af 100644 --- a/src/buildtool/crypto/hasher.cpp +++ b/src/buildtool/crypto/hasher.cpp @@ -11,4 +11,5 @@ auto Hasher::CreateHashImpl(HashType type) noexcept case HashType::SHA256: return CreateHashImplSha256(); } + return nullptr; // make gcc happy } diff --git a/src/buildtool/execution_api/bazel_msg/TARGETS b/src/buildtool/execution_api/bazel_msg/TARGETS index 1ca96dbd..8812d401 100644 --- a/src/buildtool/execution_api/bazel_msg/TARGETS +++ b/src/buildtool/execution_api/bazel_msg/TARGETS @@ -8,7 +8,6 @@ , ["src/buildtool/file_system", "file_system_manager"] , ["src/buildtool/file_system", "git_cas"] , ["src/utils/cpp", "concepts"] - , ["src/utils/cpp", "type_safe_arithmetic"] ] , "stage": ["src", "buildtool", "execution_api", "bazel_msg"] } diff --git a/src/buildtool/execution_api/bazel_msg/bazel_common.hpp b/src/buildtool/execution_api/bazel_msg/bazel_common.hpp index cc76541c..4d829fe2 100644 --- a/src/buildtool/execution_api/bazel_msg/bazel_common.hpp +++ b/src/buildtool/execution_api/bazel_msg/bazel_common.hpp @@ -4,14 +4,6 @@ /// \file bazel_common.hpp /// \brief Common types and functions required by Bazel API. -#include <cstdint> - -#include "src/utils/cpp/type_safe_arithmetic.hpp" - -// Port -struct PortTag : type_safe_arithmetic_tag<std::uint16_t> {}; -using Port = type_safe_arithmetic<PortTag>; - struct ExecutionConfiguration { int execution_priority{}; int results_cache_priority{}; diff --git a/src/buildtool/execution_api/bazel_msg/bazel_msg_factory.cpp b/src/buildtool/execution_api/bazel_msg/bazel_msg_factory.cpp index 175996d1..45adde3b 100644 --- a/src/buildtool/execution_api/bazel_msg/bazel_msg_factory.cpp +++ b/src/buildtool/execution_api/bazel_msg/bazel_msg_factory.cpp @@ -156,7 +156,8 @@ template <class T> -> std::optional<std::string> { try { std::string content(message.ByteSizeLong(), '\0'); - message.SerializeToArray(content.data(), content.size()); + message.SerializeToArray(content.data(), + gsl::narrow<int>(content.size())); return content; } catch (...) { } @@ -184,7 +185,7 @@ template <class T> bazel_re::Directory dir{}; auto copy_nodes = [](auto* pb_container, auto const& nodes) { - pb_container->Reserve(nodes.size()); + pb_container->Reserve(gsl::narrow<int>(nodes.size())); std::copy(nodes.begin(), nodes.end(), pb::back_inserter(pb_container)); std::sort( pb_container->begin(), diff --git a/src/buildtool/execution_api/remote/TARGETS b/src/buildtool/execution_api/remote/TARGETS index 492bd0de..50a28550 100644 --- a/src/buildtool/execution_api/remote/TARGETS +++ b/src/buildtool/execution_api/remote/TARGETS @@ -20,7 +20,8 @@ , "bazel/bazel_execution_client.cpp" ] , "deps": - [ ["src/buildtool/common", "common"] + [ "config" + , ["src/buildtool/common", "common"] , ["src/buildtool/logging", "logging"] , ["src/buildtool/file_system", "file_system_manager"] , ["src/buildtool/file_system", "object_type"] @@ -42,7 +43,8 @@ , "hdrs": ["bazel/bazel_api.hpp"] , "srcs": ["bazel/bazel_api.cpp"] , "deps": - [ "bazel_network" + [ "config" + , "bazel_network" , ["src/buildtool/execution_api/common", "common"] , ["src/buildtool/execution_api/bazel_msg", "bazel_msg"] , ["@", "gsl-lite", "", "gsl-lite"] @@ -54,7 +56,10 @@ , "name": ["config"] , "hdrs": ["config.hpp"] , "deps": - [["src/buildtool/logging", "logging"], ["@", "gsl-lite", "", "gsl-lite"]] + [ ["src/buildtool/logging", "logging"] + , ["src/utils/cpp", "type_safe_arithmetic"] + , ["@", "gsl-lite", "", "gsl-lite"] + ] , "stage": ["src", "buildtool", "execution_api", "remote"] } } diff --git a/src/buildtool/execution_api/remote/bazel/bazel_ac_client.hpp b/src/buildtool/execution_api/remote/bazel/bazel_ac_client.hpp index 4e3aafcd..29f2c655 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_ac_client.hpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_ac_client.hpp @@ -8,6 +8,7 @@ #include "src/buildtool/common/bazel_types.hpp" #include "src/buildtool/execution_api/bazel_msg/bazel_common.hpp" +#include "src/buildtool/execution_api/remote/config.hpp" #include "src/buildtool/logging/logger.hpp" /// Implements client side for serivce defined here: diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.hpp b/src/buildtool/execution_api/remote/bazel/bazel_api.hpp index 3fddca1f..3fccf226 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_api.hpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_api.hpp @@ -11,6 +11,7 @@ #include "src/buildtool/execution_api/bazel_msg/bazel_common.hpp" #include "src/buildtool/execution_api/common/execution_api.hpp" #include "src/buildtool/execution_api/common/local_tree_map.hpp" +#include "src/buildtool/execution_api/remote/config.hpp" // forward declaration for actual implementations class BazelNetwork; diff --git a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.hpp b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.hpp index 33de4205..2c731037 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.hpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.hpp @@ -12,6 +12,7 @@ #include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp" #include "src/buildtool/execution_api/bazel_msg/bazel_common.hpp" #include "src/buildtool/execution_api/remote/bazel/bytestream_client.hpp" +#include "src/buildtool/execution_api/remote/config.hpp" #include "src/buildtool/logging/logger.hpp" /// Implements client side for serivce defined here: diff --git a/src/buildtool/execution_api/remote/bazel/bazel_client_common.hpp b/src/buildtool/execution_api/remote/bazel/bazel_client_common.hpp index 6e37fa28..e8b0f493 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_client_common.hpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_client_common.hpp @@ -10,6 +10,7 @@ #include "grpcpp/grpcpp.h" #include "src/buildtool/common/bazel_types.hpp" #include "src/buildtool/execution_api/bazel_msg/bazel_common.hpp" +#include "src/buildtool/execution_api/remote/config.hpp" #include "src/buildtool/logging/logger.hpp" [[maybe_unused]] [[nodiscard]] static inline auto CreateChannelWithCredentials( diff --git a/src/buildtool/execution_api/remote/bazel/bazel_execution_client.hpp b/src/buildtool/execution_api/remote/bazel/bazel_execution_client.hpp index cd6c0eb6..0889916c 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_execution_client.hpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_execution_client.hpp @@ -9,6 +9,7 @@ #include "google/longrunning/operations.pb.h" #include "src/buildtool/common/bazel_types.hpp" #include "src/buildtool/execution_api/bazel_msg/bazel_common.hpp" +#include "src/buildtool/execution_api/remote/config.hpp" #include "src/buildtool/logging/logger.hpp" /// Implements client side for serivce defined here: diff --git a/src/buildtool/execution_api/remote/bazel/bazel_response.cpp b/src/buildtool/execution_api/remote/bazel/bazel_response.cpp index 395fd08e..d05517a1 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_response.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_response.cpp @@ -63,7 +63,7 @@ auto BazelResponse::Artifacts() const noexcept -> ArtifactInfos { // collect root digests from trees and store them auto blob_reader = network_->ReadBlobs(tree_digests); auto tree_blobs = blob_reader.Next(); - std::size_t pos{}; + int pos{}; while (not tree_blobs.empty()) { for (auto const& tree_blob : tree_blobs) { try { diff --git a/src/buildtool/execution_api/remote/bazel/bytestream_client.hpp b/src/buildtool/execution_api/remote/bazel/bytestream_client.hpp index 1bd44c42..e2381573 100644 --- a/src/buildtool/execution_api/remote/bazel/bytestream_client.hpp +++ b/src/buildtool/execution_api/remote/bazel/bytestream_client.hpp @@ -10,6 +10,7 @@ #include "google/bytestream/bytestream.grpc.pb.h" #include "src/buildtool/execution_api/remote/bazel/bazel_client_common.hpp" +#include "src/buildtool/execution_api/remote/config.hpp" #include "src/buildtool/logging/logger.hpp" /// Implements client side for google.bytestream.ByteStream service. diff --git a/src/buildtool/execution_api/remote/config.hpp b/src/buildtool/execution_api/remote/config.hpp index 14995b89..cf1fd3ee 100644 --- a/src/buildtool/execution_api/remote/config.hpp +++ b/src/buildtool/execution_api/remote/config.hpp @@ -1,6 +1,7 @@ #ifndef INCLUDED_SRC_BUILDTOOL_EXECUTION_API_REMOTE_CONFIG_HPP #define INCLUDED_SRC_BUILDTOOL_EXECUTION_API_REMOTE_CONFIG_HPP +#include <cstdint> #include <map> #include <memory> #include <optional> @@ -12,12 +13,17 @@ #include "gsl-lite/gsl-lite.hpp" #include "src/buildtool/logging/logger.hpp" +#include "src/utils/cpp/type_safe_arithmetic.hpp" + +// Port +struct PortTag : type_safe_arithmetic_tag<std::uint16_t> {}; +using Port = type_safe_arithmetic<PortTag>; class RemoteExecutionConfig { public: struct ServerAddress { std::string host{}; - int port{}; + Port port{}; }; // Obtain global instance @@ -94,7 +100,8 @@ class RemoteExecutionConfig { auto port_num = std::stoi(port); if (not host.empty() and port_num >= 0 and port_num <= kMaxPortNumber) { - return ServerAddress{std::move(host), port_num}; + return ServerAddress{std::move(host), + gsl::narrow_cast<Port::value_t>(port_num)}; } } catch (std::out_of_range const& e) { Logger::Log(LogLevel::Error, "Port raised out_of_range exception."); diff --git a/src/buildtool/file_system/git_cas.cpp b/src/buildtool/file_system/git_cas.cpp index e24ab8ad..fcd56006 100644 --- a/src/buildtool/file_system/git_cas.cpp +++ b/src/buildtool/file_system/git_cas.cpp @@ -14,8 +14,8 @@ extern "C" { namespace { -constexpr auto kOIDRawSize{GIT_OID_RAWSZ}; -constexpr auto kOIDHexSize{GIT_OID_HEXSZ}; +constexpr std::size_t kOIDRawSize{GIT_OID_RAWSZ}; +constexpr std::size_t kOIDHexSize{GIT_OID_HEXSZ}; [[nodiscard]] auto GitLastError() noexcept -> std::string { git_error const* err{nullptr}; @@ -102,6 +102,8 @@ constexpr auto kOIDHexSize{GIT_OID_HEXSZ}; case ObjectType::Tree: return GIT_FILEMODE_TREE; } + + return GIT_FILEMODE_UNREADABLE; // make gcc happy } [[nodiscard]] auto GitTypeToObjectType(git_object_t const& type) noexcept diff --git a/src/buildtool/main/install_cas.hpp b/src/buildtool/main/install_cas.hpp index 1aab854a..9937baf3 100644 --- a/src/buildtool/main/install_cas.hpp +++ b/src/buildtool/main/install_cas.hpp @@ -4,7 +4,7 @@ #include <string> -#include <gsl-lite/gsl-lite.h> +#include <gsl-lite/gsl-lite.hpp> #include "src/buildtool/common/artifact.hpp" #include "src/buildtool/common/cli.hpp" diff --git a/src/buildtool/main/main.cpp b/src/buildtool/main/main.cpp index f066b13e..557b10a3 100644 --- a/src/buildtool/main/main.cpp +++ b/src/buildtool/main/main.cpp @@ -963,6 +963,7 @@ auto DetermineNonExplicitTarget( case Base::ReferenceType::kTarget: return id; } + return std::nullopt; // make gcc happy } void DumpArtifactsToBuild( diff --git a/src/utils/cpp/concepts.hpp b/src/utils/cpp/concepts.hpp index 04b2bfcc..24efe70e 100644 --- a/src/utils/cpp/concepts.hpp +++ b/src/utils/cpp/concepts.hpp @@ -68,7 +68,9 @@ concept ClockHasFromTime = requires(std::time_t const t) { template <typename T> concept StrMapConstForwardIterator = requires(T const c) { - { (*c).first } + { + std::remove_reference_t<decltype((*c).first)> { (*c).first } + } ->same_as<std::string const>; }; |